Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Curso De Algoritmo Aula 5
1. http://olinux.uol.com.br/artigos/352/print_preview.html
Curso de Algoritmo - Aula V
Por: Jorge Luiz E. de Souza ( 17/07/2001 )
Introdução
Como prometido aqui está a análise do algoritmo da aula anterior . Vamos entender o código!
Análise da estrutura PARA
Primeira análise: A seção de declaração de variáveis
Declare Nome, EstCiv, TimeQTorce, Origem: texto
Sexo: caracter
i, Idade, contMulher, contMFilhos, ContTPalmeiras:
inteiro
A primeira seção de um algoritmo é sempre a DECLARAÇÃO DE VARIÁVEIS. Variáveis estas, que serão
utilizadas no decorrer do algoritmo. É necessária a declaração, pois se uma variável utilizada no corpo
do algoritmo não estiver declarada, o algoritmo não será executado. Provavelmente ocorrerá o erro ?
váriavel desconhecida ? e o programa será abortado.
Segunda análise: A inicialização de variáveis
Quando declaramos uma variável, simplesmente estamos reservando um espaço de memória que
poderá conter qualquer valor no decorrer do algoritmo. Mas o endereço ao qual a nossa variável está
apontando provavelmente contém informações deixadas por outros programas ou se tivermos sorte
estará vazia. A inicialização de variáveis se faz necessária quando devemos conhecer previamente o
valor de uma variável.
É o caso dos contadores. Precisamos ter certeza de que o valor inicial de um contador é 0 (zero). Então
iniciamos seu valor utilizando o comando de atribuição "".
ContMulher 0
ContMFilhos 0
ContTPalmeiras 0
NOTA: Um detalhe muito importante que deve ser observado é o nome de uma variável. Devemos dar
preferência para nomes SIGNIFICATIVOS, isto é, ao criar uma variável, escolha um nome que
possibilite a vizualização de seu conteúdo simplesmente pela leitura do mesmo. Como no caso acima,
onde:
q ContMulher é a variável que contará todas as mulheres da pesquisa;
q ContMFilhos é a variável que contará todas as mulheres casadas e com mais de três filhos;
q ContTPalmeiras é a variável que contará todos os torcedores do Palmeiras da pesquisa.
Terceira análise: A implementação do Para e tudo que se irá repetir em seu escopo
PARA i <-- 1 ATÉ 3000 FAÇA
escreva('Digite um nome: ')
leia (nome)
Escreva('Digite a idade: ')
leia(idade)
Escreva(Digite o Sexo (F para Feminino, M para Masculino):
')
leia(Sexo)
Escreva('Digite o Estado Civil (Solteiro(a), Casado(a): ')
Leia(EstCiv)
SE (sexo = 'F') or (sexo = 'f')
ENTÃO
ContMulher ContMulher + 1
2. SE EstCiv = 'Casada'
ENTÃO
Escreva('Digite o Numero de filhos: ')
Leia(NumFilhos)
SE NumFilhos > 3
ENTÃO
ContMFilhos ContMFilhos + 1
FIMSE
FIMSE
//fim do então
SENÃO
Escreva('Digite o Time para o qual Torce: ')
Leia(TimeQTorce)
SE TimeQTorce = 'Palmeiras'
ENTÃO
contTPalmeiras ContTPalmeiras +1
FIMSE
//fim do senão
FIMSE
Escreva('Digite a Origem (BR,US,UC...): ')
leia(Origem)
FIMPARA
Muito bem, observando a estrutura acima, podemos notar: Todas as instruções entre o PARA e o
FIMPARA serão executadas 3000 vezes. A estrutura de SE utilizada será tratada na Quarta análise. Todo
o processamento do programa está dentro do para As primeiras oito linhas após o PARA são de leitura
das variáveis (NOME, IDADE, SEXO e ESTCIV). Os comandos Escreva que antecedem cada comando
Leia, são para informar o usuário quanto ao que o programa está esperando que ele digite.
A posição de implementação dos contadores dentro da estrutura é estratégica, e não poderia ser outra.
De acordo com a lógica do algoritmo, as leituras que estão dentro dos SE, mais internos, somente
ocorrerão se a condição de entrada do ENTÃO ou SENÃO correspondente forem satisfeitas. Isto é, para
o nosso algoritmo, se uma mulher não estiver com estado civil "Casada", o algoritmo não lerá número
de filhos para esta mulher.
Notamos que alguns valores recebidos não estão servindo para nenhum calculo especial, somente
sendo necessários se, forem ser guardados em um banco de dados.
Quarta análise: Estrutura SE ENTÃO SENÃO encadeadas
SE (sexo = 'F') or (sexo = 'f')
ENTÃO
ContMulher ContMulher + 1
SE EstCiv = 'Casada'
ENTÃO
Escreva('Digite o Numero de filhos: ')
Leia(NumFilhos)
SE NumFilhos > 3
ENTÃO
ContMFilhos ContMFilhos + 1
FIMSE
FIMSE
//fim do então
SENÃO
Escreva('Digite o Time para o qual Torce: ')
Leia(TimeQTorce)
SE TimeQTorce = 'Palmeiras'
ENTÃO
contTPalmeiras ContTPalmeiras +1
FIMSE
//fim do senão
FIMSE
Observamos aqui, uma estrutura de SE's encadeados. NOTA: A indentação é muito importante na
estruturação visual do código para uma melhor leitura e entendimento do mesmo. INDENTAÇÃO É:
Tabulação de elementos semelhantes em um mesmo nível (COLUNA imaginária). Se você pegar uma
3. régua e colocar no início de um ENTÃO, encontrará seu SENÃO correspondente, e assim por diante.
Relembrando
Uma estrutura SE possui dois caminhos a serem seguidos, de acordo com o resultado da condição
estabelecida para o mesmo.
Sintaxe:
SE CONDIÇÃO
ENTÃO //comandos do então CASO A
CONDIÇÃO SEJA VERDADEIRA
SENÃO //comandos do senão CASO A
CONDIÇÃO SEJA FALSA
FIMSE
Então, se o resultado da condição: SE (sexo = 'F') or (sexo = 'f') , for VERDADEIRA, serão executados
todos os comandos que estão dentro do ENTÃO deste SE.
ContMulher ContMulher + 1
SE EstCiv = 'Casada'
ENTÃO
Escreva('Digite o Numero de filhos: ')
Leia(NumFilhos)
SE NumFilhos > 3
ENTÃO
ContMFilhos ContMFilhos + 1
FIMSE
FIMSE
//fim do então
Caso contrário, se o resultado da condição for FALSO, serão executados todos os comandos do SENÃO
correspondente.
Escreva('Digite o Time para o qual Torce: ')
Leia(TimeQTorce)
SE TimeQTorce = 'Palmeiras'
ENTÃO
contTPalmeiras ContTPalmeiras +1
FIMSE
//fim do senão
E assim é para todos os SE's encadeados dentro deste último.
Quinta análise: Comandos de saída (resultado do processamento)
Nosso exemplo é muito simples, e sua saída não poderia ser diferente. Como utilizamos comente
estruturas de contagem (CONTADORES), após a leitura ser finalizadas, simplesmente escrevemos uma
frase elucidativa antes de mostrar o CONTEÚDO (somatória) das variáveis de contagem.
Sexta análise: Comentário sobre as deficiencias e possíveis refinamentos
Este código é um bom começo, mas apresenta algumas "falhas". Por exemplo: - Uma vez iniciada a
execução, será necessário digitar contínuamente todos as 3000 fichas. Sem interrupção, isto é, sem
fechar o programa. Agora, imagine se fossem 100.000 entradas!
Então, o PARA é uma estrutura falha?! De maneira alguma, é uma ótima estrutura de repetição, mas
devemos pensar muito bem aonde a utilizaremos dentro de um algoritmo.
Em nossa próxima implementação de solução para este mesmo problema, utilizaremos uma estrutura
de repetição mais flexível o ENQUANTO que nos traz mais um conceito importante em programação; as
FLAGs.
Conclusão
O algoritmo está certo, mas a estrutura apresentada na resolução (PARA) não é adequada para esta
4. situação (isto foi feito propositalmente, para apresentar a você a estrutura). Na próxima aula
apresentaremos o mesmo algoritmo com a estrutura (ENQUANTO), mais adequada para este problema.
Entenda bem a leitura (interpretação) deste código, pois na próxima somente será analisada a nova
estrutura, sendo que o restante do código será o mesmo. Até a próxima!
Copyright (C) 1999- 2 0 0 0 Linux Solutions