Академический Документы
Профессиональный Документы
Культура Документы
5.0 Índice
Capítulo 5 1
5.0 Índice 1
5.1 Introdução 2
5.2 Algoritmos: Conceito e Exemplificação 2
5.2.1 Conceito de Algoritmo 2
5.2.2 Exemplos de Algoritmos 2
5.3 Português Estruturado 3
5.4 Estruturas Clássicas de Controle 3
5.4.1 A seqüência 4
5.4.2 Teste de condição — Se-Então e Se-Então-Senão 4
5.4.3 A repetição — Repita-Até e Enquanto-Faça 5
5.5 Pseudo-Código 6
5.5.1 Estruturas de dados 6
5.5.2 Variáveis 6
5.5.3 Constantes 7
5.5.4 Operações e Expressões 7
5.5.5 Operações aritméticos 8
5.5.6 Operadores relacionais 8
5.5.7 Operadores lógicos 8
5.5.8 Prioridades e parênteses 8
5.5.9 Entrada e saída 9
5.6 Os Fluxogramas 9
5.7 Exercícios 10
2 Capítulo 5: Algoritmos e a Resolução de Problemas Prof. Roberto Willrich
5.1 Introdução
A construção de um programa computacional é motivada geralmente a partir de uma
necessidade de solução de um problema particular: a geração automática de
documentos, o controle de um equipamento eletrodoméstico, a transmissão de
informações em longas distâncias, a agilização de cálculos científicos, e outras
motivações mais. A solução dos nossos problemas através de um sistema
computacional só é obtida no momento em que é definido um conjunto coerente de
instruções de um programa que permita estabelecer que ações deverão ser executadas
e em que ordem.
Embora definida inicialmente como uma “arte”, a tarefa de programação dos
computadores não é simples e, à medida que a complexidade dos problemas foi
aumentando, constatou-se que a construção de um programa deveria ser, na realidade,
resultado de um trabalho de engenharia, como o são tantos outros produtos.
Da mesma forma como, no caso de um edifício ou o motor de um automóvel, não se
passa diretamente da idéia à construção, o desenvolvimento de um programa deverá ser
caracterizado pela execução de uma fase (a mais exaustiva possível) de reflexão onde o
objetivo é analisar o problema a resolver e encontrar uma solução (se possível, a
melhor) que possa ser realizada por um sistema computacional. O resultado deste
trabalho de reflexão pode ser, então, registrado na forma de um algoritmo, a partir do
qual o programa será finalmente construído.
Um algoritmo pode ser definido, de maneira simplificada, como uma descrição formal do
processo de obtenção de uma solução computacional. O objetivo deste capítulo será a
definição precisa de algoritmo, sua exemplificação e como eles podem ser utilizados
quando da construção de um programa.
Esse passos devem ser detalhados até que o algoritmo represente completamente a
situação que desejamos modelar, eliminando todas as dúvidas, imprecisões e
ambigüidades. Por exemplo, a etapa 2 poderia ser refinada em:
Início
Procurar o número da UFSC no catálogo telefônico
Se o número da UFSC não for encontrado
então escreva uma carta
senão, enquanto não conseguir falar com a UFSC repita
Tire o fone do gancho
Disque o número da UFSC
Enquanto o número da UFSC estiver ocupado repita
Recoloque o fone no gancho
Tire o fone do gancho
Disque o número da UFSC
Se alguém atende Então
pergunte se é da UFSC
Se é da UFSC Então
marque a entrevista com o professor
Senão
desculpe-se pelo engano
Fim
5.4.1 A seqüência
É a forma mais evidente de apresentar as ações a realizar para solucionar um dado
problema. A representação das seqüências de ações, no caso da representação por
texto é feita relacionando-se uma ação por linha, o que permite impor uma ordem lógica
para a execução das ções. Considerando a seqüência abaixo, do exemplo apresentado
na seção 2, deve ficar claro para quem vai executar que a ação “Disque o número da
UFSC” não poderá ser realizada se a ação “Tire o fone do gancho” não tiver sido
executada. Da mesma forma “Tire o fone do gancho” só poderá ser realizada após
“Recoloque o fone no gancho”.
SE condição Então
ação
A condição vai corresponder a uma situação que deve ser verificada como verdadeira
para que a ação associada seja realizada. Caso contrário (a condição é falsa), nada
deve acontecer.
Por outro lado, pode ser interessante que, quando se verifica a condição como falsa,
uma outra ação tem de ser efetuada. Para isto, utiliza-se a seguinte estrutura:
SE condição ENTÃO
ação 1
SENÃO
ação 2
Neste caso, ação 1 deve ser realizada quando a condição é verdadeira; se for falsa, a
ação 2 será executada. O exemplo, extraído do algoritmo apresentado em 2 deixa claro
o uso desta estrutura.
SE é da UFSC ENTÃO
marque a entrevista com o professor
SENÃO
desculpe-se pelo engano
5 Capítulo 5: Algoritmos e a Resolução de Problemas Prof. Roberto Willrich
REPITA
ação 1
ação 2
...
ação n
ATÉ condição
Isto significa que a seqüência ação 1; ação 2;...; ação n, será realizada uma vez, sendo
em seguida verificada a condição associada à cláusula ATÉ. Se a condição for falsa, o
processo se repete, reiniciando pela ação 1. Se a condição for verdadeira, a repetição é
cancelada. Por exemplo, se quisermos que um número seja multiplicado por ele mesmo
6 vezes, é possível utilizar a estrutura Repita-Até (Repeat-Until) da seguinte forma:
REPITA
multiplica número por ele mesmo;
incrementa a contagem de uma unidade;
ATÉ contagem seja igual a 6
Outra forma de representar a repetição de ações é associar uma condição não após a
última ação da seqüência, mas antes da primeira ação. Corresponde à estrutura Faça-
Enquanto (Do-While), a qual estabelece que a seqüência de ações especificada deve
ser repetida enquanto a condição associada for verdadeira. Se, antes de iniciar uma
nova execução da seqüência, for verificada que a condição é falsa, então a repetição é
cancelada. A forma geral de representação desta estrutura é:
Como poderá ser observado à medida que os conceitos de uma dada linguagem de
programação forem estudados, estas estruturas apresentam grande utilidade na
representação do comportamento dos programas. Atualmente, qualquer linguagem de
programação (excetuando-se as linguagens de baixo nível) apresentam construções
correspondentes a estas estruturas. A combinação coerente destas três classes de
estrutura pode permitir representar a maior parte das soluções aos problemas práticos
resolvidos através dos computadores, mesmo os mais complexos.
6 Capítulo 5: Algoritmos e a Resolução de Problemas Prof. Roberto Willrich
5.5 Pseudo-Código
Outra forma de descrever um algoritmo é usando construções similares às usadas nas
linguagens de programação reais, por isso chamadas pseudo-código. Essa abordagem
facilita mais tarde a programação do algoritmo assim especificado. A descrição de um
algoritmo em pseudo-código se baseia na combinação das estruturas clássicas de
controle, na definição da estrutura dos dados utilizados, no uso de operações e
expressões e operações de entrada e saída. Estes pontos serão vistos a seguir.
5.5.2 Variáveis
O computador usa a memória para armazenar os dados que está tratando. Podemos
fazer uma analogia simples entre a memória do computador e um grande armário cheio
de gavetas. Cada gaveta possui um nome e guarda um dado de um tipo determinado.
Essas gavetas são chamadas variáveis, e cada uma pode conter um valor cujo tipo é
definido no início do programa. No exemplo abaixo, a gaveta chamada Aluno possui o
valor Pedro Silva, e assim por diante.
Os nomes das variáveis devem obedecer a regras precisas para sua definição. Na
maioria das linguagens de programação convencionais não é possível nem desejável
identificar uma variável com algo do tipo “último colocado no concurso vestibular". De
modo geral, os nomes de variáveis podem conter letras e números, devem começar por
uma letra e não podem conter símbolos especiais. São nomes válidos: Alpha, x17,
NotaFinal, Media. São nomes inválidos: 52Pst, E(s), A:B, Nota-Final, X*, P%, Nota$, ... é
muito importante que o nome usado para uma variável indique com clareza sua
finalidade, para tornar o programa mais compreensível e portanto menos sujeito a erros
de programação.
Por exemplo, uma variável usada para armazenar o nome de um cliente em um
programa deve ter um nome da forma NomeCliente, ou semelhante, e nunca somente N
7 Capítulo 5: Algoritmos e a Resolução de Problemas Prof. Roberto Willrich
ou NC. Imagine um programa com 1000 linhas ou mais no qual a maioria da variáveis se
chama A, X, n, etc.
No início de um programa de computador precisamos definir que variáveis iremos usar, e
que tipo de dados podem ser armazenados nelas. Isso é efetuado através de uma
declaração de variáveis. Vejamos um exemplo de declaração de variáveis em pseudo-
código:
variáveis
Aluno : caractere;
idade,filhos : inteiro;
altura, peso : real;
casado : lógico;
Neste exemplo, declaramos as variáveis nome, que pode conter um valor de tipo
caractere; as variáveis idade e filhos, que podem armazenar valores inteiros, as variáveis
altura e peso, que podem conter valores de tipo real, e a variável casado, que pode
armazenar um dado de tipo lógico (verdadeiro ou falso).
Uma vez declaradas as variáveis, podemos usá-las em programas, para armazenar os
valores que serão consultados e/ou manipulados durante a execução dos mesmos. Para
utilizar o valor de uma variável basta indicar seu nome onde desejado. Para armazenar
um valor em uma variável utilizamos um comando de atribuição, que nos permite
fornecer um valor a uma variável, ou seja, “guardar uma informação em uma gaveta". O
tipo desse valor deve ser compatível com o tipo declarado para a variável. O comando
de atribuição tem a seguinte forma:
A expressão á direita do sinal :=" é resolvida primeiro, e seu valor é em seguida atribuído
à variável da esquerda do sinal, que deve ser do mesmo tipo resultante da expressão.
Vejamos um exemplo em pseudo-código:
variáveis
Número : inteiro;
Soma, Média : real;
Aprovou : lógico;
início
Soma := 246,34
Número := 37
Média := Soma / Número
Aprovou := (Média > 5.0)
fim
5.5.3 Constantes
Em um programa também podemos declarar informações constantes, que não devem
mudar ao longo do programa. é o caso de constantes matemáticas, por exemplo, ou de
informações como o nome do programador, a versão do programa, etc. As constantes
podem ser declaradas em pseudo-código de forma semelhante ás variáveis, com a
inclusão de seu valor:
constantes
pi = 3.141592653589793264;
Versão = '1.3b'
Programador = 'Mickey Mouse'
As constantes podem ser usadas da mesma forma que as variáveis, mas seu valor não
pode ser modificado (ou seja, uma constante nunca pode aparecer no lado esquerdo de
uma atribuição).
obter novos valores que podem ser usados nos algoritmos. Temos basicamente três
tipos de operadores: aritméticos, relacionais e lógicos.
nome : caractere
altura, peso : real
idade : inteiro
leia (nome, idade, peso, altura) ;
variáveis
a,b: inteiro
início
leia (a,b)
se a > b então
escreva (a,' é maior que ', b)
senão
se b > a então
escreva (b,' é maior que ', a)
senão
escreva (a,' é igual a ', b)
fim
fim
fim
5.6 Os Fluxogramas
Como foi apresentado anteriormente, o pseudo-código é uma maneira int eressante e
bastante utilizada para representar o comportamento das soluções a implementar
através de um computador.
Entretanto, uma forma gráfica para a expressão do fluxo de execução de um programa
pode apresentar algumas vantagens. O uso de símbolos especiais e a combinação
destes símbolos para formar as estruturas mais clássicas de controle, como aquelas
apresentadas anteriormente podem eliminar a ambigüidade eventualmente provocada
pelo uso do texto escrito.
Há muitos anos, o fluxograma tem aparecido como uma ferramenta interessante de
representação do comportamento de programas, permitindo expressar, além do fluxo
lógico da execução e, as operações envolvidas no processamento dos dados e as
entradas e saídas. Os fluxogramas são construídos a partir do uso de símbolos
padronizados que expressam classes de operações comumente utilizadas nos
programas. A figura 1 apresenta os símbolos mais comuns adotados na construção dos
diagramas.
O uso do fluxograma para a representação de programas pode ser ilustrado pela figura
2, onde o objetivo é automatizar o cálculo da média obtida por um aluno numa dada
disciplina e a definição de sua condição de aprovado ou reprovado.
10 Capítulo 5: Algoritmos e a Resolução de Problemas Prof. Roberto Willrich
Processamento
Processamento Decisão
Decisão Entrada
Entrada
Terminador
Terminador Saída
Saída
(início
(início ou
ou fim)
fim)
Início
Início
Nota1,
Nota1, Nota2,
Nota2,
Nota3,
Nota3, Nota4
Nota4
Média
Média :=
:= (Nota1+Nota2+Nota3+Nota4)/4
(Nota1+Nota2+Nota3+Nota4)/4
Nao Sim
Média
Média <
< 6,0
6,0
''AApprroovvaaddoo ccoom
m 'Reprovado
'Reprovado com
com
nota',
nota', Média
Média nota',
nota', Média
Média
Fim
Fim
5.7 Exercícios
Escreva os algoritmos solicitados em pseudo-código e/ou em fluxograma.
1. Escreva um algoritmo para entrar com três números e imprimir o maior entre eles.
2. Escreva um algoritmo para entrar com 8 números e imprimir a quantidade de
números maiores que 4.
3. Escreva um algoritmo para entrar com um número de 1 a 10 e imprimí-lo o número
de vezes correspondente ao seu valor.
4. Construir um algoritmo capaz de representar uma estrutura do tipo Repete-Até;
5. Construir um algoritmo capaz de representar uma estrutura do tipo Faça-Enquanto;
6. Construir um algoritmo que represente o critério de avaliação da disciplina INE 5201
11 Capítulo 5: Algoritmos e a Resolução de Problemas Prof. Roberto Willrich