Académique Documents
Professionnel Documents
Culture Documents
Meu nome Rodrigo Plotze. Sou doutor na rea de Computao Grfica e Processamento de Imagens
pelo Instituto de Cincias Matemticas e de Computao da USP So Carlos. Desenvolvo pesquisas na
rea de Viso Computacional aplicada Biologia e Medicina, na qual tenho diversos trabalhos
publicados em peridicos nacionais e internacionais. Trabalho como docente dos cursos de psgraduao em Desenvolvimento de Software (Java e .NET) no Centro Universitrio Claretiano, e,
tambm, em cursos de graduao em Cincia da Computao, Engenharia da Computao e Sistemas
de Informaes em outras instituies de ensino superior.
e-mail: rodrigoplotze@gmail.com
ALGORITMOS E PROGRAMAO
Batatais
Claretiano
2013
CDD 005
Reviso
Ceclia Beatriz Alves Teixeira
Eduardo Henrique Marinheiro
Felipe Aleixo
Filipi Andrade de Deus Silveira
Juliana Biggi
Paulo Roberto F. M. Sposati Ortiz
Rafael Antonio Morotti
Rodrigo Ferreira Daverni
Snia Galindo Melo
Talita Cristina Bartolomeu
Vanessa Vergani Machado
Projeto grfico, diagramao e
capa
Eduardo de Oliveira Azevedo
Joice Cristina Micai
Lcia Maria de Sousa Ferro
Luis Antnio Guimares Toloi
Raphael Fantacini de Oliveira
Tamires Botta Murakami de Souza
Wagner Segato dos Santos
Todos os direitos reservados. proibida a reproduo, a transmisso total ou parcial por qualquer forma
e/ou qualquer meio (eletrnico ou mecnico, incluindo fotocpia, gravao e distribuio na web), ou o
arquivamento em qualquer sistema de banco de dados sem a permisso por escrito do autor e da Ao
Educacional Claretiana.
SUMRIO
CADERNO DE REFERNCIA DE CONTEDO
1 INTRODUO ............................................................................................................................................... 7
2 ORIENTAES PARA ESTUDO......................................................................................................................8
3 REFERNCIA BIBLIOGRFICA......................................................................................................................21
Caderno de
Referncia de
Contedo
CRC
Contedo
Introduo Lgica. Introduo ao conceito de algoritmos e suas representaes fundamentais. Estrutura sequencial
para construo de algoritmos. Estruturas Condicionais. Estruturas de Repetio. Estruturas de dados homogneas
(vetores e matrizes) e heterogneas (registros). Programao modular: procedimentos, funes e recursividade.
1. INTRODUO
Neste Caderno de Referncia de Contedo, voc ter o primeiro contato com os principais
conceitos relacionados programao de computadores.
Para facilitar o seu estudo, o contedo foi dividido em cinco unidades. Nelas, voc ter a
oportunidade de aprender como elaborar algoritmos capazes de solucionar no s os problemas
computacionais, mas tambm os do cotidiano.
Estudar, ainda, tpicos fundamentais para a construo dos algoritmos, explicitando
desde os tipos de dados at as estruturas sequenciais e de repetio, passando, inclusive, pelas
variveis. Alm disso, voc poder estudar as estruturas de dados para armazenamento de
grandes conjuntos de informaes, como, por exemplo, as variveis compostas homogneas e
as variveis compostas heterogneas.
Por fim, voc ter a possibilidade de aprender como organizar eficientemente seus
algoritmos por meio de tcnicas de programao modular.
Dessa forma, essencial que, para um bom aproveitamento de seus estudos, voc
pratique. Para isso, no deixe de realizar os exerccios propostos. No se esquea de que tambm
fundamental que voc compartilhe seus conhecimentos na Sala de Aula Virtual.
Uma vez que este Caderno de Referncia de Contedo apenas uma referncia,
importante que voc complemente seu estudo por meio de outras fontes de informaes, como
livros, revistas e internet.
Algoritmos e Programao
Significado
Smbolo
Negao
no
Conjuno
Disjuno
ou
Disjuno Exclusiva
ou exclusivo
Condicional
se ... ento
Bicondicional
se, somente se
pq
pq
pq
pq
pq
(a b)
Resultado
No exemplo anterior, voc pde notar que as colunas 1 e 2 representam as possveis entradas para as proposies a e b. A coluna 3 representa o resultado da avaliao da proposio
composta (a b). Para facilitar o entendimento, a coluna 3 foi nomeada como .
Claretiano - Centro Universitrio
10
Algoritmos e Programao
Desparafusar a roda.
Levantar o carro com o macaco.
Retirar a roda com o pneu furado.
Colocar o estepe.
Abaixar o carro.
Parafusar a roda.
11
Fluxograma:
incio
soma= (num1+num2+num3)
clculo da soma
soma
exibio do resultado
fim
Figura 1 Fluxograma de uma soma.
Pseudocdigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Para construir e testar seus algoritmos, voc pode utilizar programas especficos. Esses
programas permitem elaborar algoritmos por meio da metodologia do pseudocdigo e visualizar seu funcionamento. Um dos programas mais utilizados para esse propsito o VisuAlg, que
pode ser obtido gratuitamente na internet.
Claretiano - Centro Universitrio
12
Algoritmos e Programao
13
Estruturas condicionais
As estruturas condicionais possibilitam ao programador definir se um determinado bloco
do algoritmo deve ou no ser executado. A execuo do bloco depender da avaliao de uma
expresso lgica.
J as estruturas de repetio permitem ao programador executar um bloco de comandos
um determinado nmero de vezes, ou, at mesmo, executar esse bloco at que uma condio
acontea.
Quando voc utiliza uma estrutura condicional na elaborao de um algoritmo, possvel
selecionar, com base em uma ou mais condies, qual parte do algoritmo dever ser executada. H dois tipos de estruturas condicionais: a estrutura condicional simples e a estrutura condicional composta. Essas estruturas so representadas em linguagem algortmica pela palavra
reservada se.
Uma estrutura condicional simples permite ao programador definir que um bloco do algoritmo ser executado se uma determinada condio ocorrer. Para definirmos uma estrutura
condicional se, utilizamos um bloco do tipo: se (condio) ento {bloco de comandos} fimse.
H outra maneira de controlar o fluxo de execuo de um algoritmo, que por meio de
uma estrutura condicional composta. Ao contrrio das estruturas condicionais simples, que executam um bloco de instrues apenas quando o valor da condio verdadeiro, as estruturas
condicionais compostas podem executar um determinado bloco de comandos quando a condio for verdadeira ou executar outro bloco de comandos quando a condio for falsa. Uma condicional composta definida pela seguinte estrutura: se (condio) ento {bloco de comandos}
seno {bloco de comandos} fimse.
Alm das estruturas condicionais simples e compostas, possvel controlar o fluxo de execuo de um algoritmo por meio de um recurso conhecido como estrutura de seleo mltipla
ou estrutura de seleo de mltipla escolha.
Essa estrutura permite ao programador testar o valor de uma determinada varivel (que pode
ser inteiro ou caractere) contra um conjunto de valores. Caso o valor da varivel seja igual a um valor
presente no conjunto, o bloco de comandos associado ao valor do conjunto executado. Essa estrutura definida pela sintaxe a seguir: escolha(expresso) caso 1, caso 2, ... caso n, fim escolha.
Estruturas de repetio
As estruturas de repetio so recursos utilizados na construo de algoritmos e programas e permitem ao programador definir quais blocos de instrues sero repetidos at que
ocorra certa condio.
Essas estruturas tm muitas aplicaes. Podemos dizer, inclusive, que quase todos os algoritmos possuem pelo menos uma estrutura de repetio. Como exemplo, suponha a seguinte
situao: voc precisa criar um algoritmo que escreva dez vezes na tela um nome informado
pelo usurio. H trs tipos de estruturas de repetio: estrutura para; estrutura enquanto; estrutura repita.
A estrutura para permite que o programador defina o nmero de vezes que um bloco de
comandos deve ser repetido. O controle do nmero de repeties realizado por uma varivel
que conhecida como contador. A sintaxe da estrutura representada por: para <contador> de
<valor inicial> at <valor final> faa {bloco de comandos} fimpara.
14
Algoritmos e Programao
Quando utilizamos uma estrutura de repetio, comum precisarmos acumular uma varivel ao longo dos laos de repetio. Assim, na maioria das vezes, acumulamos a soma dessa
varivel. Porm, tambm podemos acumular a subtrao, a multiplicao ou a diviso.
Um fato importante do qual devemos nos lembrar ao usarmos acumuladores que a
varivel utilizada como acumulador sempre ser inicializada com o valor zero. Isso garante que
nenhum valor prvio afetar o processo do acumulador.
Para exemplificar o funcionamento do acumulador, calcularemos a soma dos nmeros de
um at cinco. Para tanto, utilizaremos uma estrutura de repetio para que o acumulador seja
definido em uma varivel nomeada soma. A aplicao de acumuladores para somar nmeros
conhecida como somatrio. Como resultado da execuo do algoritmo, a varivel soma ter o
valor de 1+2+3+4+5, que igual a 15.
A estrutura de repetio enquanto outra maneira de produzir um lao de repetio em
um algoritmo. Essa estrutura permite ao programador especificar a repetio de um bloco de
comandos enquanto uma condio permanecer verdadeira.
Ao contrrio da estrutura para, que pode ser aplicada apenas em problemas envolvendo
contadores, a estrutura de repetio enquanto pode ser utilizada para laos de repetio com
ou sem contadores. Isso permite que a estrutura enquanto seja utilizada em problemas nos
quais no sabemos o nmero de vezes que o bloco de comandos ser repetido. A sintaxe da
estrutura de repetio enquanto definida como se segue: enquanto <expresso lgica> faa
{bloco de comandos} fimenquanto.
Na estrutura repita, o bloco de comandos repetido at que uma determinada condio
se torne verdadeira. Ao contrrio da estrutura de repetio enquanto, em que a condio de
parada testada no incio da estrutura, na estrutura repita, a condio de parada testada no
final. A sintaxe definida como se segue: repita {bloco de comandos} at <expresso lgica>.
Estrutura de dados
As estruturas de dados estabelecem mecanismos para a organizao dos dados, de forma
que podemos trabalhar com as informaes de maneira prtica e eficiente. Alm disso, elas so
capazes de manipular grandes quantidades de informaes. As estruturas de dados tambm
so conhecidas como variveis compostas e so divididas em dois grupos: estruturas de dados
homogneas e estruturas de dados heterogneas.
As estruturas de dados homogneas so utilizadas na manipulao de dados do mesmo
tipo. De maneira prtica e simples, podemos entender que uma estrutura homognea uma
sequncia de variveis do mesmo tipo.
Imagine, por exemplo, que voc precisa manipular uma grande quantidade de notas de
alunos. Ao invs de declarar uma varivel para armazenar cada nota, voc pode criar uma estrutura de dados homognea capaz de armazenar uma sequncia de notas. H dois tipos de
estruturas homogneas: vetores; matrizes.
O vetor, tambm conhecido como array, pode ser definido como um conjunto de elementos do mesmo tipo armazenado sequencialmente na memria.
Para entender melhor esse conceito, imagine um problema em que devemos elaborar um
algoritmo que calcule a mdia de preo entre cinco produtos fornecidos pelo usurio. Se utilizarmos cinco variveis para armazenar os preos, elas estaro distribudas em posies aleatrias
15
da memria. Entretanto, se utilizarmos um vetor de preos contendo cinco posies, cada posio desse vetor ser definida sequencialmente na memria.
Como os vetores organizam as informaes do mesmo tipo sequencialmente na memria,
precisamos de um mecanismo para armazenar ou recuperar as informaes de cada posio.
Para isso, so utilizados valores inteiros, conhecidos como ndice.
Um ndice um valor inteiro, maior ou igual a zero, utilizado para fazer referncia a uma
determinada posio do vetor.
As matrizes so outro tipo de estrutura de dados homognea e permitem a manipulao
de informaes em muitas dimenses. Como vimos anteriormente, os vetores manipulam dados em uma nica dimenso, e, por isso, so conhecidos como estruturas de dados unidimensionais. J as matrizes permitem a manipulao de informaes em muitas dimenses, e, dessa
forma, so conhecidas como estruturas multidimensionais.
Desse modo, a matriz mais simples chamada de matriz bidimensional, e, nela, os dados
so representados em duas dimenses. Entretanto, nas matrizes bidimensionais, os dados so
dispostos em linhas e colunas, como em uma tabela, e o acesso s informaes realizado por
meio de dois ndices: um ndice para representar a linha e outro para representar a coluna.
Uma estrutura de dados heterognea uma estrutura de dados capaz de agrupar conjuntos de dados de tipos diferentes. Imagine uma situao em que voc necessita elaborar um
algoritmo que armazene o nome e a idade de cinquenta pessoas. Como j aprendemos a utilizar vetores, podemos criar um vetor para armazenar os nomes e outro para armazenar as
idades. Essa soluo funciona perfeitamente; no entanto, precisamos declarar duas estruturas
diferentes. Alm disso, durante a construo do algoritmo, devemos referenciar cada vetor. Por
exemplo: atribuir o nome "Joo da Silva", com idade igual a 22 anos, na Posio 6 dos vetores.
Acompanhe:
vet_nomes[6] = "Joo da Silva"
vet_idade[6] = 22
16
Algoritmos e Programao
Uma das principais utilizaes da estrutura de dados registro a possibilidade de criarmos vetores de registros. Assim, podemos definir uma estrutura de dados composta contendo
inmeros elementos. Por exemplo, para um conjunto de informaes de produtos de um supermercado, temos a seguinte declarao: produto: registro(cdigo inteiro, descrio literal, preo
real, ativo lgico), e em seguida o vetor de registros definido como se segue: vetor_de_produtos: vetor[0...99] de produto. Nesse caso, temos um vetor de registro com cem posies, onde
cada posio capaz de armazenar informaes a respeito dos produtos.
Programao modular
A complexidade do desenvolvimento dos algoritmos aumenta, e, assim, dois problemas
tornam-se evidentes: o aumento significante do nmero de linhas e a dificuldade para a organizao do cdigo.
Para solucionar tais problemas, aprenderemos uma tcnica muito interessante para a reutilizao e organizao dos blocos de comandos presentes nos algoritmos. Essa tcnica conhecida como programao modular. O objetivo da programao modular dividir o algoritmo
em pequenas partes, ou mdulos, que so chamadas de sub-rotinas. Ao utilizar as sub-rotinas,
temos a vantagem de poder reaproveitar partes do cdigo ao longo de todo o algoritmo, com
isso, no precisamos reescrever trechos do cdigo novamente. Como resultado, teremos um
algoritmo mais organizado e com um nmero menor de linhas.
Vale ressaltar, tambm, outro aspecto importante das sub-rotinas: por meio delas que dividimos o problema da construo do algoritmo em pequenas partes, tornando-o mais fcil de ser resolvido. Essa abordagem para a resoluo de problemas conhecida como dividir-para-conquistar.
As tcnicas de modularizao de programas permitem a definio de dois tipos de sub-rotinas, que so conhecidas como procedimentos e funes.
Os procedimentos so a maneira mais simples de criao de sub-rotinas. Um procedimento um mdulo dentro do algoritmo utilizado para executar um conjunto de instrues. A principal caracterstica de um procedimento que ele executa instrues. Porm, ele no retorna
nenhum tipo de resultado para o programa principal.
As funes tambm so um mecanismo para a modularizao de algoritmos. A principal
caracterstica de uma funo que ela sempre retorna um valor para o bloco principal do algoritmo. As funes sempre retornam informaes. De modo geral, podemos pensar nas funes
como algo que executa uma determinada tarefa e retorna o resultado da execuo.
Uma caracterstica interessante das sub-rotinas (tanto procedimentos quanto funes) a
possibilidade de haver a passagem de parmetros. Os parmetros permitem que as variveis do
bloco principal do algoritmo sejam passadas para as sub-rotinas. Esse conceito pode ser aplicado aos procedimentos e tambm s funes.
Quando passamos um parmetro para uma sub-rotina, ele tem a funo de uma varivel,
que pode ser manipulada ao longo da sub-rotina.
Chegamos ao fim da sntese da Abordagem Geral, e esperamos que voc tenha aproveitado ao
mximo os conceitos apresentados e que sero detalhados no decorrer das unidades. No podemos
esquecer que apenas o estudo terico de algoritmos e programao no suficiente. Portanto,
fundamental que voc pratique! Para isso, instale o ambiente de desenvolvimento VisuAlg em seu
computador, caso ainda no tenha feito, e no perca tempo para comear a elaborao dos algoritmos.
Um grande abrao e bons estudos!
17
Glossrio de Conceitos
O Glossrio de Conceitos permite a voc uma consulta rpida e precisa das definies conceituais, possibilitando-lhe um bom domnio dos termos tcnico-cientficos utilizados na rea de
conhecimento dos temas tratados em Algoritmos e Programao. Veja, a seguir, a definio dos
principais conceitos:
1) Algoritmo: a descrio de uma sequncia de passos que deve ser seguida para a
realizao de uma tarefa (ASCENCIO, 1999).
2) Comandos de atribuio: os utilizamos para inserir os valores ou operaes em uma
varivel. Assim, por meio do comando de atribuio, adicionamos um determinado
valor posio de memria reservada pela varivel.
3) Comentrios: so um recurso imprescindvel para uma boa prtica de programao.
Por meio deles, o programador pode documentar o algoritmo e, com isso, aumentar a
clareza do cdigo. Um aspecto importante a ser destacado a respeito dos comentrios
que eles so desconsiderados durante a execuo do algoritmo ou do programa.
Isso significa que eles no interferem no contedo do algoritmo, por isso, podemos
escrever qualquer tipo de informao para facilitar o entendimento.
4) Constante: o conceito de constante que uma determinada informao no poder
ser alterada ao longo da execuo. Assim, uma constante um dado definido no algoritmo que no pode ter seu valor modificado.
5) Estrutura condicional: quando voc utiliza uma estrutura condicional na elaborao
de um algoritmo, possvel selecionar, com base em uma ou mais condies, qual
parte do algoritmo dever ser executada.
6) Estrutura de repetio: um recurso utilizado na construo de algoritmos e programas que permite ao programador definir quais blocos de instrues sero repetidos
at que ocorra certa condio.
7) Estruturas de dados: estabelecem mecanismos para a organizao dos dados, de forma que podemos trabalhar com as informaes de maneira prtica e eficiente. Alm
disso, elas so capazes de manipular grandes quantidades de informaes. As estruturas de dados tambm so conhecidas como variveis compostas e so divididas em
dois grupos: estruturas de dados homogneas e estruturas de dados heterogneas.
8) Identificador: o nome de uma varivel denominado "identificador", o qual possui regras
muito bem definidas para a especificao de nomes. Alm dos nomes das variveis, os nomes
dos algoritmos, das constantes e das sub-rotinas tambm so considerados identificadores.
9) Lgica matemtica conectivos lgicos: os conectivos lgicos so smbolos utilizados
para combinar proposies. No dia a dia, utilizamos esses conectivos ao falar e, tambm, ao escrever. As proposies formadas por meio da combinao de conectivos
so chamadas proposies compostas.
10) Lgica matemtica proposies: uma das aplicaes da lgica a representao simblica
de raciocnios. Desse modo, podemos dizer que as afirmaes que realizamos diariamente
so transformadas em smbolos para demonstrar fatos ou transmitir informaes. Uma proposio representa uma afirmao (ou sentena), que pode assumir o valor lgico verdadeiro
ou o valor falso. As proposies so sempre simbolizadas por letras minsculas {a,b,c,...x,y,z}.
11) Lgica matemtica tabelas-verdade: as tabelas-verdade so um recurso muito utilizado na avaliao de proposies lgicas. Elas permitem avaliar uma proposio em
funo de todas as entradas possveis.
12) Programao modular: tem como objetivo dividir o algoritmo em pequenas partes,
ou mdulos, que so chamadas de sub-rotinas.
13) Tipos Abstratos de Dados (TAD): um algoritmo que no manipula informaes pode
no ter nenhuma utilidade. A grande essncia da construo de algoritmos e programas a possibilidade de manipulao de grandes volumes de informao. Essas
informaes que so manipuladas pelos algoritmos so chamadas de Tipos de Dados.
Claretiano - Centro Universitrio
18
Algoritmos e Programao
14) Variveis: dados que podem ter seu valor alterado durante a execuo do algoritmo.
Quando voc declara uma varivel em um programa, significa que voc est reservando um espao da memria principal (RAM) para o armazenamento de uma determinada informao. O tamanho do espao reservado depende do tipo de dados
utilizado na varivel.
Esquema dos Conceitos-chave
Para que voc tenha uma viso geral dos conceitos mais importantes deste estudo, apresentamos, a seguir (Figura 2), um Esquema dos Conceitos-chave. O mais aconselhvel que
voc mesmo faa o seu esquema de conceitos-chave ou at mesmo o seu mapa mental. Esse
exerccio uma forma de voc construir o seu conhecimento, ressignificando as informaes a
partir de suas prprias percepes.
importante ressaltar que o propsito desse Esquema dos Conceitos-chave representar,
de maneira grfica, as relaes entre os conceitos por meio de palavras-chave, partindo dos
mais complexos para os mais simples. Esse recurso pode auxiliar voc na ordenao e na sequenciao hierarquizada dos contedos de ensino.
Com base na teoria de aprendizagem significativa, entende-se que, por meio da organizao das ideias e dos princpios em esquemas e mapas mentais, o indivduo pode construir o seu
conhecimento de maneira mais produtiva e obter, assim, ganhos pedaggicos significativos no
seu processo de ensino e aprendizagem.
Aplicado a diversas reas do ensino e da aprendizagem escolar (tais como planejamentos
de currculo, sistemas e pesquisas em Educao), o Esquema dos Conceitos-chave baseia-se,
ainda, na ideia fundamental da Psicologia Cognitiva de Ausubel, que estabelece que a aprendizagem ocorre pela assimilao de novos conceitos e de proposies na estrutura cognitiva
do aluno. Assim, novas ideias e informaes so aprendidas, uma vez que existem pontos de
ancoragem.
Tem-se de destacar que "aprendizagem" no significa, apenas, realizar acrscimos na estrutura cognitiva do aluno; preciso, sobretudo, estabelecer modificaes para que ela se configure como uma aprendizagem significativa. Para isso, importante considerar as entradas de
conhecimento e organizar bem os materiais de aprendizagem. Alm disso, as novas ideias e os
novos conceitos devem ser potencialmente significativos para o aluno, uma vez que, ao fixar
esses conceitos nas suas j existentes estruturas cognitivas, outros sero tambm relembrados.
Nessa perspectiva, partindo-se do pressuposto de que voc o principal agente da construo do prprio conhecimento, por meio de sua predisposio afetiva e de suas motivaes
internas e externas, o Esquema dos Conceitos-chave tem por objetivo tornar significativa a sua
aprendizagem, transformando o seu conhecimento sistematizado em contedo curricular, ou
seja, estabelecendo uma relao entre aquilo que voc acabou de conhecer com o que j fazia
parte do seu conhecimento de mundo (adaptado do site disponvel em: <http://penta2.ufrgs.
br/edutools/mapasconceituais/utilizamapasconceituais.html>. Acesso em: 11 mar. 2010).
19
Lgica
Matemtica
Conectivos
Tabelas-Verdade
Proposies
Algoritmos
Tipos de Dados
Estrutura
Sequencial
Estrutura de
Controle
Constantes e
Variveis
Comandos de
Entrada e Sada
Expresses
Matemticas e Lgicas
Estrutura de
Dados
se e escolha
vetores e
matrizes
para, enquanto e
repita
registros
Modularizao
Figura 2 Esquema dos Conceitos-chave do Caderno de Referncia de Contedo de Algoritmos e Programao.
Como pode observar, esse Esquema oferece a voc, como dissemos anteriormente, uma
viso geral dos conceitos mais importantes deste estudo. Ao segui-lo, ser possvel transitar
entre os principais conceitos e descobrir o caminho para construir o seu processo de ensino-aprendizagem.
O Esquema dos Conceitos-chave mais um dos recursos de aprendizagem que vem se
somar queles disponveis no ambiente virtual, por meio de suas ferramentas interativas, bem
Claretiano - Centro Universitrio
20
Algoritmos e Programao
21
Lembre-se de que o segredo do sucesso em um curso na modalidade a distncia participar, ou seja, interagir, procurando sempre cooperar e colaborar com seus colegas e tutores.
Caso precise de auxilio sobre algum assunto relacionado a este Caderno de Referncia de
Contedo, entre em contato com seu tutor. Ele estar pronto para ajudar voc.
3. REFERNCIA BIBLIOGRFICA
ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da programao de computadores. 2. ed. So Paulo: Pearson, 2008.
EAD
Introduo Construo de
Algoritmos
1. OBJETIVOS
Compreender os principais conceitos relativos lgica matemtica.
Elaborar e representar algoritmos.
2. CONTEDOS
Fundamentos da lgica.
Elaborao e representao de algoritmos.
24
Algoritmos e Programao
4. INTRODUO UNIDADE
Nesta primeira unidade, voc ter a oportunidade de conhecer os conceitos fundamentais
para a construo e representao de algoritmos.
Inicialmente, sero descritos os fundamentos da lgica de programao e suas principais
terminologias. fundamental que voc se dedique aos seus estudos, pois a lgica de programao ser essencial para a compreenso e anlise dos algoritmos e programas.
Estudaremos, em seguida, os conceitos preliminares a respeito dos algoritmos e as principais tcnicas de elaborao e representao.
Bons estudos!
5. INTRODUO LGICA
Provavelmente, voc j utilizou a palavra lgica para referenciar algum tipo de evento
ocorrido no seu dia a dia, como, por exemplo:
lgico que hoje ir chover.
Se tudo correr bem, lgico que vou ao cinema.
Como voc estudou muito para prova, lgico que acertar todas as questes.
No entanto, como podemos definir a palavra lgica?
Na maioria das vezes, a palavra lgica est relacionada ao pensamento, porm, no a
pensamentos desordenados ou confusos, mas a pensamentos coerentes e racionais. Para Aristteles, considerado o pai da lgica, ela representa as leis do pensamento (GERSTING, 2004).
Assim, em todas as nossas atividades, precisamos utilizar a lgica. Quando, por exemplo,
estamos escrevendo uma mensagem eletrnica ou falando ao telefone, precisamos dela para
ordenar nossos pensamentos.
Tambm utilizamos a lgica para agir corretamente. Imagine que voc precisa sair da sua
casa e ir ao supermercado comprar leite. Apesar de realizar essa tarefa facilmente, voc, inconscientemente, utiliza conceitos lgicos para determinar quais passos ou quais caminhos devero
ser seguidos at chegar ao seu destino (o supermercado). Caso contrrio, voc poderia ficar
"andando em crculos" e nunca encontrar o supermercado. Alm disso, voc ficaria sem o leite.
Voc sabia que, para realizar tarefas mais simples, tambm utilizamos o raciocnio lgico?
Como exemplo, suponha que voc deseja preparar um leite com achocolatado. Uma possvel ordem lgica para a soluo do problema seria:
Algoritmo 1 Preparar um leite com achocolatado
1
2
3
4
5
6
7
8
Abrir a geladeira.
Retirar o litro de leite.
Abrir o armrio.
Retirar o pote de achocolatado.
Pegar um copo vazio.
Adicionar leite no copo.
Adicionar achocolatado no copo com o leite.
Misturar.
25
Apesar de ser considerada uma tarefa extremamente simples, veja quantos passos so
necessrios para alcanar o objetivo.
Outro fato importante que deve ser destacado a ordem dos acontecimentos. A correta
organizao do raciocnio faz com que o resultado seja facilmente alcanado. Em contrapartida,
imagine o seguinte raciocnio, desordenado logicamente:
Algoritmo 2 Preparar um leite com achocolatado
1
2
3
4
5
6
7
8
Observe que os passos so exatamente os mesmos. No entanto, esto de maneira desordenada. Dessa forma, seria difcil alcanarmos o objetivo proposto.
Neste momento, voc provavelmente deve estar se perguntado: o que isso tem a ver com
algoritmos e programao? simples. A lgica auxiliar voc na compreenso dos conceitos
fundamentais para a construo de algoritmos. Alm disso, com ela, voc estar preparado para
analisar a formalidade e a coerncia dos programas.
Inicialmente, voc ter a possibilidade de estudar as proposies lgicas, que so essenciais para a construo do raciocnio lgico organizado. Em seguida, aprender os conectivos
lgicos, responsveis pelo agrupamento das proposies. E, finalmente, poder explorar uma
ferramenta importante para a lgica matemtica, que conhecida como tabela-verdade.
Proposies
Uma das aplicaes da lgica a representao simblica de raciocnios. Desse modo,
podemos dizer que as afirmaes que realizamos diariamente so transformadas em smbolos
para demonstrar fatos ou transmitir informaes.
Uma proposio representa uma afirmao (ou sentena), que pode assumir o valor lgico verdadeiro ou o valor falso. As proposies so sempre simbolizadas por letras minsculas
{a,b,c,...x,y,z}. Observe a Tabela 1:
Tabela 1 Valores lgicos.
Sentena
Valor Lgico
Smbolo
Verdadeiro
O sol azul.
Falso
Falso
A neve branca.
Verdadeiro
H sentenas que no possuem valor lgico, e, por isso, no so consideradas proposies. Por exemplo:
Como est voc?
Ela muito talentosa.
Existe vida em outros planetas.
Claretiano - Centro Universitrio
26
Algoritmos e Programao
Conectivos Lgicos
Os conectivos lgicos so smbolos utilizados para combinar proposies. No dia a dia, utilizamos esses conectivos ao falar ao escrever. As proposies formadas por meio da combinao
de conectivos so chamadas proposies compostas (GERSTING, 2004).
Observe o exemplo na Tabela 2:
Tabela 2 Proposies.
Sentena
Valor Lgico
Smbolo
Verdadeiro
Verdadeiro
Utilizando as proposies simples (p, q), podemos formar algumas proposies compostas
com os conectivos e, ou, se ... ento. Observe na Tabela 3.
Tabela 3 Proposies Compostas.
Proposio
Conectivo
Proposio
Proposio Composta
ou
se ... ento
importante notar que o valor lgico de uma proposio composta depende dos valores
lgicos das proposies simples que a compem.
Na lgica matemtica, cada conectivo representado por um smbolo, conforme apresentado na Tabela 4.
Tabela 4 Conectivos.
Conectivo Lgico
Significado
Smbolo
Negao
no
Conjuno
Disjuno
ou
Disjuno Exclusiva
ou exclusivo
Condicional
se ... ento
Bicondicional
se, somente se
27
Alternativamente, podemos considerar as proposies simples como variveis e as proposies compostas como expresses. Veja um exemplo na Tabela 5.
Tabela 5 Variveis e expresses.
Nmero de variveis
Nmero de linhas da
tabela verdade (2n)
(a b)
22 = 4
(a b) c
23 = 8
(a b) (c d)
24 = 16
Expresses
Sada
...
Verdadeiro
Verdadeiro
...
Verdadeiro
Falso
...
Falso
Verdadeiro
...
Falso
Falso
...
Para simplificar, podemos representar o valor lgico verdadeiro como V e o valor lgico
falso como F. Dessa forma, para a proposio composta (a b) c, temos a tabela-verdade
descrita na Tabela 7.
Tabela 7 Tabela-verdade da proposio composta (a b) c.
Entrada
Sada
...
...
...
...
...
...
...
...
...
Exemplo
p = Hoje est frio.
p = Hoje no est frio.
Claretiano - Centro Universitrio
28
Algoritmos e Programao
pq
Exemplo
p = Fernanda estudiosa.
q = Fernanda tem um bom rendimento nas provas.
p q = Fernanda estudiosa e tem um bom rendimento nas provas.
A disjuno representa a combinao ou, expressa pelo smbolo (leia-se "p ou q"), e sua
tabela-verdade est representada na Tabela 10.
Tabela 10 Tabela-verdade da disjuno.
p
pq
Exemplo
p = Hoje vou ao clube.
q = Hoje vou trabalhar.
p q = Hoje vou ao clube ou hoje vou trabalhar.
A disjuno exclusiva, tambm conhecida como ou exclusivo, representada pelo smbolo
, e a tabela-verdade demonstrada conforme a Tabela 11. Veja:
Tabela 11 Tabela-verdade da disjuno exclusiva.
p
pq
Exemplo
p = Lcia bonita.
q = Lcia inteligente.
p q = Ou Lcia bonita ou inteligente.
As proposies tambm podem ser combinadas na forma "se proposio p, ento proposio q", e so representadas pelo smbolo . A proposio composta denotada por
p q (leia-se "p implica q") e o seu conectivo chamado condicional, ou implicao. Observe,
na Tabela 12, a tabela-verdade expressa na forma condicional.
29
pq
Exemplo
p = Hoje sbado.
q = Hoje vou sair.
pq = Se hoje sbado, ento vou sair.
O conectivo bicondicional, ou equivalncia, simbolizado por . A expresso p q
uma abreviatura de (pq) (qp); assim, a tabela-verdade pode ser definida como mostrado na Tabela 13:
Tabela 13 Tabela-verdade do bicondicional.
p
pq
Exemplo
p = Joo ganhar presentes no Natal.
q = Joo um bom menino.
pq = Joo ganhar presentes no Natal, se e somente se for um bom menino.
Veja resumidamente, na Tabela 14, as tabelas-verdade para os principais conectivos.
Tabela 14 Tabela do resumo das tabelas-verdade dos principais conectivos.
p
pq
pq
pq
pq
pq
(a b)
V
V
F
V
Resultado
30
Algoritmos e Programao
(a b)
(a c)
Resultado
(a b)
(b c)
(b d)
10
11
12
13
14
15
16
Resultado
31
(p p)
"Chove e no chove" uma contradio, pois a tabela verdade possui apenas valores
falsos no resultado.
Tabela 19 Tabela-verdade da proposio (p p).
p
(p p)
"Se chove, ento no chove" uma contingncia, uma vez que o resultado da tabela
possui valores verdadeiros e falsos.
Tabela 20 Tabela-verdade da proposio (p p).
p
(p p)
32
Algoritmos e Programao
Dessa forma, em nosso cotidiano, utilizamos algoritmos a todo instante para realizar atividades, como, por exemplo, ir ao supermercado, trocar o pneu do carro, limpar a casa, passear
com o cachorro, ir ao trabalho, dentre outros. A seguir, sero apresentados alguns exemplos de
algoritmos do cotidiano, tais como: trocar o pneu do carro e ir ao trabalho. Veja:
Algoritmo 3 Trocar o pneu do carro
1
2
3
4
5
6
Desparafusar a roda.
Levantar o carro com o macaco.
Retirar a roda com o pneu furado.
Colocar o estepe.
Abaixar o carro.
Parafusar a roda.
Algoritmo 4 Ir ao trabalho
1
Acordar cedo.
Ir ao banheiro.
2
4
5
6
Levantar da cama.
Vestir as roupas.
Tomar caf.
Ir para o trabalho.
A Figura 1 ilustra graficamente o fluxo de execuo de um algoritmo. O estado inicial representa o ponto de partida do algoritmo, ou seja, o ponto em que a primeira ao ser executada. A
sequncia lgica define o conjunto de passos, desde o incio, que devem ser seguidos para atingir os
objetivos. imprescindvel que esses passos sejam claros e precisos, caso contrrio, o objetivo pode
no ser atingido. Por ltimo, o estado final determina qual ser o resultado da execuo do algoritmo.
estado inicial
sequncia lgica
estado final
Quando pensamos em programao de computadores, utilizamos os algoritmos para abstrair o raciocnio em um conjunto de passos que devem ser executados pelo computador. Esses
passos solucionam um determinado problema.
Podemos, por exemplo, criar um algoritmo computacional para determinar a soma entre
dois nmeros. Observe o algoritmo a seguir:
33
Outro exemplo de algoritmo pode ser elaborado para determinar se uma pessoa pode ou
no votar. Observe:
Algoritmo 6 Votar
1
2
3
Receber a idade.
Se a idade for maior ou igual a 16
exibir "Voc j pode votar."
Se a idade for menor que 16
exibir "Voc no pode votar."
Os exemplos de algoritmos apresentados at o momento utilizam a maneira mais simples de representao, que chamada de descrio narrativa. Alm dessa representao, os
algoritmos tambm podem ser representados por meio de fluxogramas e pseudocdigos (ou
portugol) (ASCENCIO, 2002).
Desse modo, podemos dizer que a descrio narrativa a forma mais simples de elaborao de algoritmos. Esse mtodo tem como objetivo a abstrao de problemas em algoritmos
por meio da utilizao da linguagem natural.
Como j mencionamos, possumos outra maneira de construir algoritmos, que por meio
de fluxogramas. Nesse caso, a abstrao de problemas representada por meio de smbolos
grficos bem definidos, os quais esboam uma ao dentro da sequncia lgica do algoritmo. Os
principais smbolos so ilustrados no Quadro 1. Observe:
Quadro 1 Principais smbolos utilizados na construo de fluxogramas.
SMBOLOS UTILIZADOS NA CONSTRUO DE FLUXOGRAMAS
Smbolo
Significado
Incio ou fim do algoritmo.
Entrada de dados.
Sada de dados.
Tomadas de deciso.
Fonte: adaptado de Ascencio (2002).
Claretiano - Centro Universitrio
34
Algoritmos e Programao
raciocnio
abstrao
algoritmo
traduo
programa
de
computador
Para facilitar o entendimento dos trs tipos de algoritmos, vamos, a seguir, elaborar alguns
exemplos completos utilizando as representaes de descrio narrativa, fluxograma e pseudocdigo. Observe que a mesma situao est representada nos trs tipos de algoritmos.
Algoritmo 7 Somar trs nmeros e apresentar o resultado
Descrio narrativa
1
2
3
4
5
35
Fluxograma
incio
soma = (num1+num2+num3)
clculo da soma
soma
exibio do resultado
fim
Pseudocdigo
Cdigo 1
1
e apresentar o resultado }
4
5
declare
Soma : inteiro
inicio
10
11
13
12
leia(num1)
14
leia(num2)
15
16
leia(num3)
17
18
19
20
fimalgoritmo
Fim cdigo 1
36
Algoritmos e Programao
Fluxograma
incio
leitura dos anos, exemplo:
ano_nascimento = 1990 e
ano_atual = 2010
ano_nascimento,
ano_atual
idade
clculo da idade
idade = 20 anos
exibio do resultado
fim
Figura 4 Fluxograma do clculo da idade de uma pessoa.
Pseudocdigo
Cdigo 2
1
algoritmo "idade"
declare
2
4
5
6
7
8
ano_atual: inteiro
idade: inteiro
inicio
10
leia(ano_nascimento)
11
12
leia(ano_atual)
13
14
15
16
fimalgoritmo
Fim cdigo 2
Algoritmo 9 Calcular a mdia entre duas notas e determinar se o aluno foi "Aprovado" ou
"Reprovado"
Descrio narrativa
1
2
3
4
5
6
37
Fluxograma
incio
nota1 e nota2
soma = nota1+nota2
mdia
No
mdia = soma/2
Sim
mdia >=5
Aprovado
Reprovado
fim
Pseudocdigo
Cdigo 3
1
2
3
4
5
6
7
8
9
10
11
12
13
inicio
14
16
15
17
38
Algoritmos e Programao
18
20
fimse
19
escreva("Aprovado")
21
22
escreva("Reprovado")
23
24
25
fimse
fimalgoritmo
Fim cdigo 3
Fluxograma
incio
Num1 e Num2
No
No
Num1 = Num2
Sim
Sim
Num1 igual
a Num2
Sim
Num1 o
maior
Num2 o
maior
fim
39
Pseudocdigo
Cdigo 4
1
declare
2
4
5
6
inicio
leia(num2)
10
11
13
Fimse
12
14
15
16
Fimse
17
18
19
20
fimse
fimalgoritmo
Fim cdigo 4
40
Algoritmos e Programao
Fluxograma
incio
operacao = +
valor1
+
valor2
operacao = valor1
valor2
operacao = *
valor1
*
valor2
operacao = /
valor1
/
valor2
operao
invlida
fim
Pseudocdigo
Cdigo 5
1
algoritmo "calculadora"
uma calculadora}
2
4
5
6
7
8
9
10
11
12
13
14
inicio
15
17
senao
16
18
19
20
21
senao
22
23
senao
24
25
26
senao
28
fimse
27
29
30
31
32
33
41
fimse
fimse
fimse
escreva("Operao invlida")
fimalgoritmo
Fim cdigo 5
Nos cinco exemplos apresentados, voc pde perceber, de maneira ilustrativa, o processo
de construo de algoritmos utilizando as trs metodologias: descrio narrativa, fluxograma e
pseudocdigo. Ao longo dos prximos tpicos, voc ter a oportunidade de estudar, detalhadamente, cada um dos conceitos empregados nesses algoritmos.
Endereos
http://www.apoioinformatica.inf.br/
Superdownloads*
http://www.superdownloads.com.br/busca.aspx?q=visualg
BaixaKi*
*Acesso em: 13 nov. 2012.
http://www.baixaki.com.br/download/visualg.htm
42
Algoritmos e Programao
4) Para aceitar as configuraes padro do Instalador do VisuAlg, clique no boto Avanar at encontrar o boto Instalar. Finalmente, a instalao do VisuAlg ser iniciada.
5) Concluda a instalao, voc poder iniciar o VisuAlg por meio do menu IniciarProgramasApoio InformticaVisuAlg. Observe, na Figura 10, a tela inicial do VisuAlg:
43
inicio
fimalgoritmo
2
4
escreva("Ol Mundo!")
Fim cdigo 6
Nesse momento, a tela do VisuAlg deve ser parecida com a da Figura 11:
44
Algoritmos e Programao
Utilize o menu Arquivo>Salvar para armazenar o seu algoritmo recm-criado. Veja que o
VisuAlg salva os algoritmos com a extenso .alg.
Finalmente, executaremos o algoritmo. Para isso, utilize o menu Algoritmo>Executar, ou
simplesmente pressione a tecla de atalho F9. A tela representada na Figura 12 ser exibida. Veja:
45
8. QUESTES AUTOAVALIATIVAS
Sugerimos que voc procure responder, discutir e comentar as questes a seguir que tratam da temtica desenvolvida nesta unidade.
A autoavaliao pode ser uma ferramenta importante para voc testar o seu desempenho.
Se voc encontrar dificuldades em responder a essas questes, procure revisar os contedos
estudados para sanar as suas dvidas. Esse o momento ideal para que voc faa uma reviso
desta unidade. Lembre-se de que, na Educao a Distncia, a construo do conhecimento ocorre de forma cooperativa e colaborativa; compartilhe, portanto, as suas descobertas com os seus
colegas.
Confira, a seguir, as questes propostas para verificar o seu desempenho no estudo desta
unidade:
1) A lgica de programao fundamental no desenvolvimento de sistemas computacionais, pois por meio da
lgica que os problemas do mundo real so abstrados para o mundo virtual. Dentro desse contexto, responda
as seguintes questes:
a) O que so proposies? Defina e apresente pelo menos cinco exemplos (por exemplo, "O Brasil pentacampeo de futebol").
b) Qual a utilidade dos conectivos lgicos? E qual a relao desses conectivos com as proposies?
c) Apresente pelo menos dois exemplos de expresses do cotidiano que utilizam o conectivo lgico e. Por
exemplo: "Os cachorros possuem quatro patas e os gatos adoram leite".
d) Apresente pelo menos dois exemplos de expresses do cotidiano que utilizam o conectivo lgico ou. Por
exemplo: "Os cachorros possuem quatro patas ou os gatos adoram leite".
e) Apresente pelo menos dois exemplos de expresses do cotidiano que utilizam o conectivo lgico se ... ento. Por exemplo: "Se os cachorros possuem quatro patas, ento os gatos adoram leite".
2) Os principais conectivos lgicos so: negao, conjuno, disjuno, disjuno exclusiva, condicional e bicondicional. Elabore uma tabela contendo o conectivo lgico e seu respectivo smbolo.
3) O que so tabelas-verdade e qual sua relao com a lgica de programao?
4) Qual o nmero de linhas de uma tabela-verdade contendo cinco variveis?
5) Elabore uma tabela-verdade, contendo pelo menos trs variveis, em que o resultado final seja uma tautologia.
Lembre-se que o termo "tautologia" utilizado para definir uma tabela-verdade em que todos os seus resultados so verdadeiros.
6) Utilizando a mesma ideia do exerccio anterior, elabore uma tabela-verdade, contendo pelo menos trs variveis, em que o resultado final seja uma contradio. Uma tabela classificada como contradio quando o seu
resultado possui apenas valores falsos.
7) Utilizando as suas palavras, defina o termo algoritmo.
8) Descreva e apresente um exemplo de um algoritmo representado na forma de descrio narrativa.
9) Descreva e apresente um exemplo de um algoritmo representado na forma de fluxograma.
10) Descreva e apresente um exemplo de um algoritmo representado na forma de pseudocdigo.
9. CONSIDERAES
Chegamos ao final do estudo da primeira unidade de Algoritmos e Programao. Nesta
unidade, voc teve a oportunidade de aprender os principais conceitos a respeito da lgica,
como, por exemplo, as proposies, os conectivos e as tabelas-verdade. Alm disso, pde esClaretiano - Centro Universitrio
46
Algoritmos e Programao