Buscar

Apostila Algoritmos parte 4

Prévia do material em texto

Autor: Ernani Cláudio Borges. 1 
 
 
Instituto Federal do Triângulo Mineiro Cursos da Área de Computação 
Disciplina de Algoritmos Prof. Ernani Cláudio Borges 
Estudos para as atividades - PARTE 4 
 
Observações importantes: 
a) Esta atividade irá fazer a introdução aos conceitos: 
• Estrutura REPETIÇÃO. 
 
 
 
Tranquilidade, firmeza, objetividade e BONS ESTUDOS! 
 
 
Nome do aluno(a): __________________________________________________________ Data: ____/_____/_____ 
Matrícula (RA): __________________________ ____________________________________ 
 
 
 
 
 
1 ESTRUTURA DE REPETIÇÃO 
 
Antes de começarmos, vamos refletir sobre a palavra “enquanto”!! 
O que ela representa para Você? 
Se você pesquisar em um dicionário poderá encontrar definições como o tipo: 
“No tempo em que”, “ao passo que” dentre outras. 
Destra forma, voltando para nossa área de programação, acredito que 
podemos definir assim: “enquanto for inválido ... digite outra informação” ... 
“enquanto a condição for verdadeira faça as instruções..” 
Foi isso que Você imaginou? 
Se foi, Você está no caminho certo ... pois, é esta a diferencia entre a 
estrutura condicional e a estrutura de repetição, pois, a repetição nos permite criar 
um “laço” e ficar repetindo a informação até que ela atenda a sua condição de 
parada ... e aí sim, podemos continuar a executar as outras instruções. 
Se você pesquisar em livros de algoritmos e programação irá ver que existem 
três tipos de estrutura de repetição: ENQUANTO, REPITA e PARA. Cada uma delas 
tem sua característica as quais serão apresentadas, iniciando neste módulo pela 
estrutura de repetição ENQUANTO e no módulos seguintes as demais. 
Vamos lá! 
 
 
 
Autor: Ernani Cláudio Borges. 2 
 
1.1 A Estrutura ENQUANTO 
 
Para ASCÊNCIO (2007), a estrutura de repetição é utilizada quando um 
trecho do algoritmo ou até mesmo o algoritmo inteiro precisa ser repetido. Essa 
repetição deverá ter uma condição de parada, podendo ser um valor fixo ou uma 
pergunta ao usuário se ele deseja executar novamente. Por exemplo: vamos 
imagina que você queira mostrar no vídeo (na tela do computador) todos os número 
inteiros existente no intervalo de 1 e 100, inclusive eles. Nesse problema você já 
percebe que a condição de parada é o número 100, ok? 
No caso da estrutura de repetição ENQUANTO a pergunta de 
parada/continuar fica no início do bloco. 
Veja a sintaxe da estrutura de repetição ENQUANTO 
 
 
 
enquanto <condição> faça 
 ação 1 
 ação 2 
fimenquanto 
 
 
Observe que enquanto a condição for verdadeira, será executado os 
comandos/ações que estão dentro do bloco de repetição, que no exemplo acima são 
as ações 1 e 2. Quando a condição não for mais satisfatória, ou seja, for falsa, a 
sequencia lógica do algoritmo irá para primeira linha abaixo do fimenquanto. 
 
 
Fique de olho! 
Importante você perceber o que o bloco da estrutura de repetição irá executar 
os comandos que estão dentro dele enquanto a condição for verdadeira. 
Percebe-se também que a lógica de programação só permitira a entrada no 
bloco se a condição for verdadeira. 
 
Autor: Ernani Cláudio Borges. 3 
 
 
 
1.2 Em foco: Vamos analisar a estrutura enquanto? 
 
Analisando mais de perto a estrutura de repetição ENQUANTO, podemos 
perceber que as ações que estão dentro do bloco só irão ser executadas se a 
resposta à CONDIÇÃO for verdadeira ... pode acontecer casos de não se executar 
nenhuma vez isso porque a estrutura de repetição ENQUANTO, pergunta primeiro 
para depois entrar no bloco e após ter entrado, executa as ações e volta, pergunta 
se pode executar novamente. 
Bom, para você compreender a importância da estrutura de repetição 
ENQUANTO, imagine que você quer mostrar no vídeo os valores do resultado da 
tabuada de multiplicação do número 5, mostrando conforme exemplo a seguir: 
 
cálculo resposta 
5 * 1 = 5 
5 * 2 = 10 
5 * 3 = 15 
5 * 4 = 20 
5 * 5 = 25 
5 * 6 = 30 
5 * 7 = 35 
5 * 8 = 40 
5 * 9 = 45 
5 * 10 = 50 
 
O Algoritmo para este exemplo é: 
 
/* 
 Cabeçalho: cálculo tabuada de multiplicação do número 5 
 Nome do Programador: Ernani Cláudio Borges 
 Data: 08/04/2013 
 */ 
/* nome do algoritmo */ 
algoritmo tabuada_multiplicacao 
/* bloco para criar e determinar os tipos de variáveis */ 
Autor: Ernani Cláudio Borges. 4 
 
var 
 n, res : inteiro 
/* bloco do código principal */ 
inicio 
 // inicializar variáveis para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 n � 0 
 res � 0 
 /* 
 corpo do algoritmo 
 entrada dos dados via teclado pelo usuário 
 */ 
 mostre ("digite o valor do número: ") 
 leia (n) // imagine que o usuário irá digitar o número 5 
 // saída – mostrar resultado no vídeo 
 res � n * 1 // ou seja ....: res irá receber o resultado de 5 * 1 
 mostre (res) // irá mostrar o conteúdo de res ... que nesse exemplo será 5 
 res � n * 2 // ou seja ....: res irá receber o resultado de 5 * 2 
 mostre (res) // irá mostrar o conteúdo de res ... que nesse exemplo será 10 
 res � n * 3 // e assim por diante. 
 mostre (res) 
 res � n * 4 
 mostre (res) 
 res � n * 5 
 mostre (res) 
 res � n * 6 
 mostre (res) 
 res � n * 7 
 mostre (res) 
 res � n * 8 
 mostre (res) 
 res � n * 9 
 mostre (res) 
 res � n * 10 
 mostre (res) 
 mostre (“acabou”) 
 pausa 
fim. 
 
 
Observe que para mostrar os resultados da tabuada usamos, com os cálculos 
e mostre´s, ao todo 20 linhas de programação ... conseguiu verificar isso? Ou seja, 
de 1 a 10 sendo um cálculo e um mostre para cada. 
Agora, vamos começar a pensar como podemos fazer para solucionar esse 
mesmo problema utilizando a estrutura de repetição ENQUANTO. 
 
 
Autor: Ernani Cláudio Borges. 5 
 
1.3 Exemplo 1 – cálculo da tabuada de multiplicação com estrutura de 
repetição ENQUANTO 
 
Após demonstração do cálculo da tabuada passo-a-passo (na “mão”), vamos 
criar o mesmo problema, porém, com estrutura de repetição ENQUANTO. 
Para isso vamos refletir/analisar o que está acontecendo com os processos 
dos cálculos ... veja bem ... nos cálculos: 
 
5 * 1 5 * 2 5 * 3 ... 5 * 10 
Analise o que está acontecendo nos cálculos, como por exemplo: “O que é 
fixo?” ... “o que está variando?” 
Observe que: 
5 * é constante 
1, 2, 3, ... 10 Está variando de 1 em 1 até chegar em 10 
 
Após esta análise, podemos determinar que a variação de 1 em 1 até 10, é 
nada mais nada menos que um contador, variando de 1 em 1 ... concorda? 
Podemos fazer o seguinte: criar uma variável com o nome de “cont”, inicializar 
com o valor 1, e proceder com as ações de variação de 1 em 1, veja: 
 
 
Fique de olho! 
Vamos criar uma variável com o nome de “cont”. Ela será um CONTADOR, 
ou seja, ela irá contar de 1 até 10, quando seu conteúdo for maior que 10 a 
seqüência lógica irá finalizar o ENQUANTO e ir para a primeira linha abaixo do 
fimenquanto, ok? 
 
 
Analise a seqüência a seguir: 
 
res � 0 inicializamos a variável res com 0 
cont � 1 inicializamos o contador com o valor 1 
res � 5 * cont ou seja, o valor de cont = 1, desta forma a variável 
Autor: Ernani Cláudio Borges. 6 
 
res irá receber o valor 5. 
mostre (res) o comando mostre irá mostrar no vídeo o valor de 
res que é igual a 5 
? agora vem o detalhe importante ... 
já sabe qual é? 
temos que variar o valor da variável “cont” para 2 ... 
como podemos fazer isso??? 
veja abaixo 
cont � cont + 1 veja que fizemos com que a variável cont recebesse 
o valor que ela tem + 1, ou seja, o valor de cont era 
1 + 1 ... cont irá receber o valor 2 o qual irá 
sobrescrever o valor anterior que era 1. 
agora podemos continuar ... veja os próximos 
comandos. 
res � 5 * cont neste comando o valor de cont = 2 ... 
conseqüentemente a variável res irá receber 10. 
mostre (res) mostramos no vídeo 
cont � cont + 1 nesta ação vamos passar o cont para 3, ou seja, o 
cont era 2 + 1 ... recebeu3. 
res � 5 * cont a variável res irá receber 15 
mostre (res) mostramos 15 no vídeo 
cont � cont + 1 cont irá se tornar 4 
res � 5 * cont res receberá o valor 20 
mostre (res0 mostramos o valor 20 no vídeo 
cont � cont + 1 cont virou 5 
... ... e assim continua ... 
 
E assim por diante ... porém ... não vamos fazer manual desta forma ... vamos 
utilizar o laço de repetição ... esse processo é muito legal ... acompanhe! 
 
 
 . 
 . 
 . 
Autor: Ernani Cláudio Borges. 7 
 
 res � 0 
 cont � 1 
 enquanto cont <= 10 faca 
 res � 5 * cont 
 mostre (res) 
 cont � cont + 1 
 fimenquanto 
 . 
 . 
 . 
 
 
Na seqüência, temos res recebendo 0, cont recebendo 1, e aí fazemos a 
pergunta: “enquanto cont <= 10 faca”, nesse momento, a variável cont possui o 
valor 1, e em resposta a pergunta do enquanto, o conteúdo da variável “cont” é é 
menor que 10, sendo assim, verdadeira ... concorda? E sendo verdadeira, a 
seqüência lógica irá entrar no bloco (laço) e irá executar a primeira linha de 
comando. 
 
Analise agora o algoritmo completo! 
 
1.3.1 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: cálculo tabuada de multiplicação do número 5 com repetição 
 Nome do Programador: Ernani Cláudio Borges 
 Data: 08/04/2013 
 
 nome do algoritmo */ 
algoritmo tabuada_multiplicacao 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 n, res, cont : inteiro 
/* bloco do código principal */ 
inicio 
 // inicializar variáveis para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 n � 0 
 res � 0 
 cont � 1 
 /* 
 corpo do algoritmo 
 entrada dos dados via teclado pelo usuário 
 */ 
 mostre ("digite o valor do número: ") 
 leia (n) // imagine que o usuário irá digitar o número 5 
Autor: Ernani Cláudio Borges. 8 
 
 
 // laço de repetição que irá fazer e mostrar todos os cálculos 
 enquanto cont <= 10 faca 
 res � n * cont 
 // a execução da linha acima, res irá receber o resultado de n * cont 
 mostre (res) // irá mostrar o conteúdo de res 
 cont � cont + 1 // soma mais 1 ao número anterior 
 fimenquanto // volta ao topo e pergunta se cont ainda é verdadeiro 
 mostre (“acabou”) // primeira linha após a finalização do laço de repetição. 
 pausa 
fim. 
 
 
 
1.4 Exemplo 3 – seqüência de números de 1 até 100. 
 
Vamos pensar juntos como podemos fazer para mostrar no vídeo os números 
de 1 a 100, variando de 1 em 1, ou seja, será mostrado no vídeo os números: 1, 2, 
3, 4, 5, 6, 7, 8, 9, ... 100. 
 
1.4.1 Visão central do problema 
 
 
Analisando, junto com Você, o problema de mostrar os números de 
1 a 100 variando de 1 em 1, vamos precisar de quantas variáveis? 
Veja só ... já sabemos qual é o inicio e final da amostragem ... em 
outras palavras vamos iniciar em 1 e finalizar em 100 ... correto? 
Pela lógica vamos precisar de uma variável para contar de 1 até 
100, variando de 1 em 1. Desta forma podemos criar uma variável com o 
nome de cont ... o que acha? 
 
Assim, vamos executar os seguintes passos: 
1) criar a variável cont do tipo inteiro; 
2) inicializar a variável cont com 1; 
3) criar a estrutura de repetição e mostrar o valor de cont a cada 
execução e variando o conteúdo de cont com mais 1. 
4) finalizar o algoritmo 
Autor: Ernani Cláudio Borges. 9 
 
 
 
 
1.4.2 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: Algoritmo para mostrar a seqüência de 1 a 100 virando de 1 em 1. 
 Nome do Programador: Ernani Cláudio Borges 
 Data: 24/04/2013 
 */ 
 
/* nome do algoritmo */ 
algoritmo sequencia1a100 
 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 cont : inteiro 
 
/* bloco do código principal */ 
inicio 
 
 // inicializar variáveis para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 cont � 1 
 /* 
 corpo do algoritmo 
 */ 
 
 enquanto cont <= 100 faca 
 mostre (cont) 
 cont� cont + 1 
 fimenquanto 
 mostre (“acabou !”) 
 pausa 
fim. 
 
 
 
1.5 Exemplo 4 – seqüência de números de 1 até n. 
Exemplo: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , ... , n 
 
Qual a diferença entre esta seqüência e a seqüência do Exemplo 3? 
 
� Podemos verificar que a seqüência do exemplo 3 temo o valor inicial igual 
a 1 e com final igual 100. 
Autor: Ernani Cláudio Borges. 10 
 
� Já esta seqüência, temos o valor inicial igual a 1 porém não sabemos qual 
o valor final, podendo ser qualquer número maior que 1 ... concorda? 
 
1.5.1 Visão central do problema 
 
 
Para resolver o problema de mostrar todos os números inteiro de 1 
até “n” vamos precisar um uma variável para contar de 1 até n variando 
de 1 em 1, e uma outra variável que irá representar o valor final da 
seqüência, a qual será fornecida pelo usuário. 
 
Deste modo, executaremos os seguintes passos: 
1) criar as variáveis cont e n do tipo inteiro; 
2) inicializar a variável cont com 1 e n com 0; 
3) receber o valor de n via teclado; 
4) criar a estrutura de repetição e mostrar o valor de cont e a cada 
execução e variar o conteúdo de cont com mais 1 até que o 
cont seja maior que n. 
5) finalizar o algoritmo 
 
 
 
1.5.2 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: Algoritmo para mostrar a seqüência de 1 a n. 
 Nome do Programador: Ernani Cláudio Borges 
 Data: 24/04/2013 
 */ 
/* nome do algoritmo */ 
algoritmo sequencia_de_1_a_n 
 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 cont, n : inteiro 
 
/* bloco do código principal */ 
inicio 
 
Autor: Ernani Cláudio Borges. 11 
 
 // inicializar variáveis para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 cont � 1 
 n � 0 
 /* corpo do algoritmo */ 
 mostre (“digite o valor limite para n: ”) 
 leia (n) 
 enquanto cont <= n faca 
 mostre (cont) 
 cont� cont + 1 
 fimenquanto 
 mostre (“acabou !”) 
 pausa 
fim. 
 
Fique de olho! 
Você conseguiu visualizar que a ESTRUTURA DE REPETIÇÃO no Exemplo 
4 na visão panorâmica 1.5.2, irá processar (executar) os comandos “mostre” e a 
atribuição de “cont ���� cont + 1” enquanto a condição for verdadeira, ou seja, se o 
número limite informado para a variável “n” for igual a 10, a estrutura de repetição irá 
processa os comandos dentro do bloco de repetição até que a a variável “cont” 
tenha um conteúdo maior que 10, fazendo desta forma que a pergunta “enquanto 
cont <= n faça” passe a ser “falsa” finalizando a execução e passando para a 
primeira instrução abaixo do “fimenquanto”. 
 
 
1.6 Exemplo 5 – seqüência de números de 5 até n. 
Exemplo: 5 , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45 , 50 , 55 , ... , n 
 
Esta seqüência Você já entendeu? 
Fácil né! 
Acompanhe a visão central logo a seguir. 
 
1.6.1 Visão central do problema 
 
 
Ela começa em 5, tem variação de 5 em 5 até que contador seja 
Autor: Ernani Cláudio Borges. 12 
 
maior que o número informado pelo usuário (o qual será representado 
pela variável n. 
 
Deste modo, executaremos os seguintes passos: 
1) criar as variáveis cont e n do tipo inteiro; 
2) inicializar a variável cont com 5 e n com 0; 
3) receber o valor limite via teclado e guardá-lo em n; 
4) criar a estrutura de repetição e mostrar o valor de cont e a cada 
execução e variar o conteúdo de cont com mais 5 até que o 
cont seja maior que n. 
5) finalizar o algoritmo 
 
 
 
1.6.2 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: Algoritmo para mostrar a seqüência de 5 a n, variando de 5 em 5. 
 Nome do Programador: Ernani Cláudio Borges 
 Data: 24/04/2013 
 */ 
/* nome do algoritmo */ 
algoritmo sequencia_de_5_a_n 
 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 cont, n : inteiro 
/* bloco do código principal */ 
inicio 
 
 // inicializar variáveis para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 cont � 5 
 n � 0 
 /* Corpo do algoritmo*/ 
 mostre (“digite o valor limite para n: ”) 
 leia (n) 
 enquanto cont <= n faca 
 mostre (cont) 
 cont� cont + 5 
 fimenquanto 
 mostre (“acabou !”) 
 pausa 
fim. 
Autor: Ernani Cláudio Borges. 13 
 
 
 
 
1.7 Exemplo 6 – seqüência de números de 2, -2 até n. 
Exemplo: 2 , -2 , 4 , -4 , 6 , -6 , 8 , -8 , 10 , -10 , ... , n , -n 
 
Para esta seqüência temos algumas opções de solução. Uma mais longa, 
com mais variáveis e outra com menos variáveis. 
 
Acompanhe a visão central logo a seguir. 
 
1.7.1 Visão central do problema 
 
 
Podemos criar uma variável cont a qual irá começar com 2 e uma 
variável cont1 começando com -2. Outra para receber o valor de n 
(positivo) via teclado, e esse mesmo valor colocar noutra variável, a qual 
irá representar o n negativo ... e lógico, multiplicando o valor de n por 
menos um (-1). Veja: 
cont � 2 
cont1 � -2 
leia (n) 
n1 � n * -1 
desta forma o usuário poderá digitar o limite que quiser e teremos 
armazenado na variável n1 o valor de n negativo. 
 
Ou outra forma é termos UMA variável cont começando com 2, 
mostramos seu conteúdo, logo a seguir multiplicamos por -1, ou seja, 
cont � cont * -1, aí mostramos esse conteúdo. Logo a seguir para fazer 
o cont virar 4 (positivo), basta cont receber o valor que ele tem 
multiplicado por menos um e mais 2, ou seja: cont � (cont * -1) + 2. Já o 
valor n fazer quase a mesma coisa. 
 
Autor: Ernani Cláudio Borges. 14 
 
Vamos escolher a segunda opção, assim, executaremos os 
seguintes passos: 
1) criar as variáveis cont e n do tipo inteiro; 
2) inicializar a variável cont com 2 e n com 0; 
3) receber o valor limite via teclado e guardá-lo em n; 
4) criar a estrutura de repetição e mostrar o valor de cont positivo e 
depois mostrar o valor de cont negativo, e a cada execução e 
variar o conteúdo de cont com mais 2 até que o cont seja maior 
que n. 
5) finalizar o algoritmo 
 
 
 
1.7.2 Visão panorâmica da resolução do problema 
 
/* Cabeçalho: Algoritmo para mostrar a seqüência de 2 – 2 4 -4 6 -6 ... n. 
 Nome do Programador: Ernani Cláudio Borges 
 Data: 24/04/2013 
 nome do algoritmo */ 
algoritmo sequencia_de_2_-2 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 cont, n : inteiro 
/* bloco do código principal */ 
inicio 
 // inicializar variáveis para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 cont � 2 
 n � 0 
 /* 
 corpo do algoritmo 
 */ 
 mostre (“digite o valor limite para n: ”) 
 leia (n) 
 enquanto cont <= n faca 
 mostre (cont) 
 cont � cont * -1 
 mostre (cont) 
 cont� (cont * -1) + 2 
 fimenquanto 
 mostre (“acabou !”) 
 pausa 
fim. 
 
Autor: Ernani Cláudio Borges. 15 
 
1.8 Exemplo 7 – quantidade de pares entre 15 números. 
Exemplo: Receber 15 números e mostrar a quantidade de pares 
 
A partir de agora vamos começar a aumentar a quantidade de informação a 
ser processada. 
Com isso, é importante sua concentração e compreensão para criar as 
variáveis e montar a estrutura de repetição. 
 
Acompanhe a visão central logo a seguir. 
 
Fique de olho! 
Você sabe como descobrir, matematicamente, se um número é par ou não? 
Bom isso é fácil ... lembra da função RESTO (x) ... esta função retorna o resto 
da divisão entre dois número inteiros ... RECORDOU a função? 
Desta forma, a regra matemática para saber se um número é par, basta 
verificar se o resto da divisão desse número por 2 é igual a zero, se for, o número é 
par, senão ele é ímpar. 
 
Veja: 
 
res � n resto (2) 
se (rest = 0) então 
 mostre (“esse número é PAR”) 
senão 
 mostre (“esse número é IMPAR”) 
fimse 
 
 
 
 
 
 
Autor: Ernani Cláudio Borges. 16 
 
1.8.1 Visão central do problema 
 
 
Bom, vamos interpretar o problema: 
 
Receber 15 números via teclado, processar e mostrar quantos 
desses números são pares. 
 
1º) para receber 15 número vamos precisar de um laço de 
repetição, ou seja, um contador começando em 1, variando de 1 em 1 
até quinze e dentro desse bloco de repetição o processo de 
VERIFICAÇÃO se o número é par, caso seja, precisamos de uma 
variável para ir guardando o TOTAL de pares. Não podemos esquecer 
de receber o número via teclado, e para isso, temos que ter uma variável 
para receber esse número. Ok? 
 
Analise os passos do algoritmo: 
1) criar as variáveis cont, n, tot_par, res do tipo inteiro; 
2) inicializar a variável cont com 1 e n, res e tot_par com 0; 
3) abrir o laço de repetição (enquanto cont <= 15 faca); 
 3.1) receber o número (leia (n)); 
 3.2) verificar se o resto de n por 2 é igual a zero, caso verdadeiro 
tot_par � tot_par + 1 
 3.3) somar mais 1 ao cont e voltar ao início do enquanto. 
4) mostrar o conteúdo de tot_par; 
5) finalizar o algoritmo 
 
 
 
1.8.2 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: Algoritmo para mostrar o total de número pares 
 Nome do Programador: Ernani Cláudio Borges 
Autor: Ernani Cláudio Borges. 17 
 
 Data: 24/04/2013 
 */ 
/* nome do algoritmo */ 
algoritmo pares 
 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 cont, n, res, tot_par : inteiro 
 
/* bloco do código principal */ 
inicio 
 
 // inicializar variáveis para tirar lixo de memória e 
 cont � 1 
 n � 0 
 res � 0 
 tot_par � 0 
 /* 
 corpo do algoritmo 
 */ 
 enquanto cont <= n faca 
 mostre (“digite o valor limite para n: ”) 
 leia (n) 
 // cálculo do RESTO da divisão 
 res � n resto 2 
 // verificar se o RESTO é igual a zero 
 se (res = 0) entao 
 tot_par � tot_par + 1 
 fimse 
 cont� cont + 1 
 fimenquanto 
 mostre (“acabou !”) 
 pausa 
fim. 
 
 
 
 
Fique de olho! 
Você deve estar percebendo que a quantidade de informação que 
escrevemos para resolver cada problema está aumentando. Isso porque cada 
problema tem sua especificidade. 
Aconselho que leia o CAPÍTULO 5 (página 93) do livro “FUNDAMENTOS DA 
PROGRAMAÇÃO DE COMPUTADORES : Algoritmos, Pascal, C/C++ e Java” da 
Autora: ANA FERNANDA GOMES ASDENCIO, 2ª edição, editora Pearson Prentice 
Hall, 2007. 
Autor: Ernani Cláudio Borges. 18 
 
Este material é um breve despertar da lógica com a tentativa de tentar clarear 
alguns passos e seqüências lógicas. 
A busca por uma leitura complementar é fundamental, pois, nos livros você irá 
encontrar mais exemplos e exercícios propostos, enriquecendo ainda mais este 
material. 
 
 
 
 
1.9 Exemplo 8 – Sexo e altura de n pessoas. 
Exemplo: Receber sexo e altura de várias pessoas. Parar quando sexo for igual a 
"*" (asterisco). Mostrar a media de altura das mulheres e dos homens. 
 
Vamos nesse momento trabalhar com outras tipos de dados. Este exemplo irá 
contemplar os tipos: inteiro, real e caracter (literal). 
Onde vamos receber o tipo de sexo de uma pessoa (masculino ou feminino) o 
qual vamos declarar do tipo “caracter”. Vamos receber a altura, a qual pode conter 
casas decimais, por exemplo: 1,80m (um metro e oitenta centímetros). Calcular a 
média aritmética da altura, cuja fórmula é a soma das alturas divididas pela 
quantidade de altura. 
 
Vamos a visão central! 
 
 
1.9.1 Visão central do problema 
 
 
Analisar os nomes e tipos de variáveis primeiro: 
 
1º) vamos determinar que o sexo do indivíduo seja representado 
por “m” (masculino) e “f” (feminino) e caso o usuário digite o símbolo “*” 
(asterisco) iremos interromper a entrada do laço, ou seja: enquanto o 
Autor: Ernani Cláudio Borges. 19 
 
sexo <> “*” faca. 
2º) para calcular a média aritmética dos homens precisamos ter 
uma variável que guarde a soma das alturas e a total de homens. E 
Faremos o mesmo para as mulheres. Vale recordar que para separar o 
homem da mulher, teremos que utilizar a estrutura condicional “se”. 
3º) quando o sexo for igual a “*” (asterisco), saímos do laço e 
calculamos a média e mostramos no vídeo. 
 
 
Analise os passos do algoritmo:1) criar as variáveis sexo do tipo caracter; 
2) criar as variáveis tot_masc, tot_fem do tipo inteiro; 
3) criar as variáveis alt, soma_alt_masc, soma_alt_fem, 
media_m, media_f do tipo real; 
4) inicializar a variável sexo com “ “ (aspas com espaço em 
branco), e as demais com zero; 
5) receber o primeiro sexo (m, f ou *) 
4) abrir o laço de repetição (enquanto sexo <> “*” faca); 
 3.1) receber a altura da pessoa (leia (alt)); 
 3.2) verificar se o sexo = m, calcular somar a altura e tot_masc 
recebe mais um, 
 senão fazer o mesmo para feminino. 
 3.3) receber o próximo sexo, e voltar ao início do laço “enquanto” 
e verificar se é diferente de *. 
5) verificar se tot_masc e tot_fem são diferentes de zero e calcular 
a média e mostrar no vídeo. Senão dar uma mensagem: 
 5.1) não houve sexo masculino, caso tot_masc igual a zero; 
 5.2) não houve sexo feminino, caso tot_fem igual a zero; 
 5.3) não houve nenhuma entrada de dados. 
7) finalizar o algoritmo 
 
 
 
Autor: Ernani Cláudio Borges. 20 
 
1.9.2 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: Algoritmo para mostrar media altura masculina e feminina. 
 Nome do Programador: Ernani Cláudio Borges 
 Data: 24/04/2013 
 */ 
/* nome do algoritmo */ 
algoritmo altura 
 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 sexo : caracter 
 tot_masc, tot_fem : inteiro 
 alt, soma_masc, soma_fem, media_m, media_f : real 
/* bloco do código principal */ 
inicio 
 // inicializar variáveis para tirar lixo de memória e 
 sexo � “ “ 
 tot_masc � 0 
 tot_fem � 0 
 alt � 0 
 soma_masc � 0 
 soma_fem � 0 
 media_m � 0 
 media_f � 0 
 /* 
 corpo do algoritmo 
 */ 
 mostre (“digite o primeiro sexo: f, m ou símbolo * para finalizar : ”) 
 leia (sexo) 
 enquanto sexo <> “*” faca 
 mostre (“digite a altura: ”) 
 leia (alt) 
 // verificar o sexo para calculo da quantidade e soma das alturas 
 se (sexo = “f”) entao 
 tot_masc � tot_masc + 1 
 soma_alt_masc � soma_alt_masc + alt 
 senão 
 se (sexo = “m”) entao 
 tot_fem � tot_fem + 1 
 soma_alt_fem � soma_alt_fem + alt 
 fimse 
 fimse 
 mostre (“digite o próximo sexo: m, f ou símbolo * para finalizar : ”) 
 leia (sexo) 
 fimenquanto 
 
 se (tot_masc = 0) entao 
 mostre (“Não houve entrada de pessoas com sexo masculino”) 
 senão 
 media_m � soma_alt_masc / tot_masc 
Autor: Ernani Cláudio Borges. 21 
 
 mostre (“media das alturas masculinas = “, media_m) 
 fimse 
 
 se (tot_fem = 0) então 
 media_f � soma_alt_fem / tot_fem 
 mostre (“media das alturas femininas = “, media_f) 
 fimse 
 
 se (tot_masc = 0) e (tot_fem = 0) então 
 mostre (“não houve nenhuma entrada de dados”) 
 fimse 
 mostre (“acabou !”) 
 pausa 
fim. 
 
 
 
2 VALIDAÇÃO CORRETIVA 
 
Uma das grandes utilidades da estrutura de repetição é proporcionar que seja 
feita uma “validação” durante a entrada dos dados. Para compreender de forma 
prática o significado “validação corretiva”, vou citar, a princípio, um exemplo 
ilustrativo, vejamos: 
Imagine que você abriu uma conta corrente no banco de sua escolha e 
durante o procedimento de abertura lhe foi solicitado cópia de seus documentos e ao 
final, o atendente pediu que Você cadastrasse uma senha de no 6 (seis) dígitos 
(números) e em uma semana Você recebeu em sua casa o cartão magnético. Até 
aqui Você acompanhou o raciocínio, ok? 
Bom, desta forma, o atendente pediu que Você que, após chegar o cartão 
magnético, fosse ao caixa eletrônico para fazer um teste. Após chegar na agência, 
você inseriu o cartão no caixa eletrônico, o qual fez uma leitura dos dados que estão 
no cartão, ou seja, uma variável recebeu o número do banco, o número da agência, 
e o número de sua conta, logo a seguir apareceu na tela uma mensagem pedindo 
que você digite sua senha. 
Nesse momento você digitou a senha, a qual foi armazenada em uma variável 
e sem Você perceber o sistema bancário foi verificar se a senha que Você digitou 
agora é igual à senha que Você cadastrou no dia da abertura da conta. 
Autor: Ernani Cláudio Borges. 22 
 
Em palavras algorítmicas, o que está acontecendo nesse momento é que o 
algoritmo do sistema bancário está em uma “estrutura de repetição “enquanto”, e 
que enquanto a senha digitada no teclado do caixa eletrônico for diferente da senha 
cadastrada na abertura da conta, o algoritmo irá lhe dar uma mensagem de erro. 
Contudo o sistema bancário é mais completo e seguro, permitindo que você 
erra a senha no máximo 3 (três) vezes. Essa quantidade de erros pode variar de 
banco para banco. 
Concluindo, a “Validação Corretiva”, visa corrigir, durante a entrada de 
dados um valor, com a intenção de que o algoritmo só funcione com valor correto. 
Ok? 
Vamos aos exemplos. 
 
2.1 Exemplo 9 – raiz quadrada de um número inteiro 
A teoria matemática diz que a raiz quadrada de um número negativo nos 
remete a teoria dos números complexos e a criação de número imaginário. 
Desta forma, para efeito de nossos trabalhos e exercícios, vamos considerar 
que para fazer cálculo de raiz quadrada, o número deve ser maior que zero. 
 
Vamos a visão central! 
 
 
2.1.1 Visão central do problema 
 
Criar as variáveis 
Receber o valor do número via teclado 
Validar corretivamente a entrada para que seja maior que zero 
Calcular a raiz quadrada 
Mostrar o resultado no vídeo. 
Finalizar o algoritmo 
 
 
 
 
Autor: Ernani Cláudio Borges. 23 
 
 
 
 
2.1.2 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: Algoritmo para cálculo da raiz quadrada de um número inteiro 
 Nome do Programador: Ernani Cláudio Borges 
 Data:24/04/2013 
 */ 
 
/* nome do algoritmo */ 
algoritmo raiz 
 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 nr : inteiro 
 res : real 
 
/* bloco do código principal */ 
inicio 
 
 // inicializar variáveis é bom para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 nr � 0 
 res � 0 
 
 /* 
 corpo do algoritmo 
 entrada dos dados via teclado pelo usuário 
 */ 
 mostre ("Digite o valor do número: ") 
 leia (nr) 
 
 // VALIDAÇÃO CORRETIVA 
 enquanto nr <= 0 faca 
 mostre (“Número inválido ... digite outro numero maior que zero:” ) 
 leia (nr) 
 fimenquanto 
 
 // cálculo da conversão 
 res � raiz (nr) 
 
 // saída – mostrar resultado no vídeo 
 mostre ("Resultado da raiz quadrada = ",res) 
 mostre (“acabou !”) 
 pausa 
fim. 
 
 
Autor: Ernani Cláudio Borges. 24 
 
 
2.2 Exemplo 10 – mostrar a seqüência enquanto for menor ou igual a N 
Elaborar um algoritmo que processe e mostre o a seqüência: 2 , 3 , 5 , 9 , 17, 
..., N. Validar corretivamente a entrada do valor de N para seja maior ou igual a 2. 
 
Vamos a visão central! 
 
 
2.2.1 Visão central do problema 
 
Criar as variáveis 
Receber o valor do N via teclado 
Validar corretivamente a entrada para que seja maior ou igual a 2 
Processar a variação e mostrar 
Finalizar o algoritmo 
 
2.2.2 Visão panorâmica da resolução do problema 
 
/* 
 Cabeçalho: Algoritmo para cálculo da raiz quadrada de um número inteiro 
 Nome do Programador: Ernani Cláudio Borges 
 Data:24/04/2013 
 */ 
 
/* nome do algoritmo */ 
algoritmo sequencia 
 
/* bloco para criar e determinar os tipos de variáveis */ 
var 
 cont, aux, n : inteiro 
 
/* bloco do código principal */ 
inicio 
 
 // inicializar variáveis é bom para tirar lixo de memória e 
 // sabermos qual o conteúdo inicial da variável 
 n � 0 
 cont � 2 
 aux � 1 
 
 /* 
Autor: Ernani Cláudio Borges. 25 
 
 corpo do algoritmo 
 entrada dos dados via teclado pelo usuário 
 */ 
 mostre ("Digite o valor do número “N” maior ou igual a 2: ") 
 leia (n) 
 
 // VALIDAÇÃO CORRETIVA 
 enquanto n < 2 faca 
 mostre (“Número inválido ... digite outro numero maior ou igual a 2:” ) 
 leia (n) 
 fimenquanto 
 
 // cálculo da sequenciaenquanto cont <= n faca 
 // irá mostrar o conteúdo de da variável cont que na primeira execução 
 // é igual a 2, seguido de um espaço em branco para 
 // separar do próximo número 
 mostre (cont, “ ”) 
 cont � cont + aux 
 aux � aux * 2 
 fimquanto 
 mostre (“acabou ....”) 
 pausa 
fim. 
 
 
 
 
 
 
 
 
Autor: Ernani Cláudio Borges. 26 
 
REFERÊNCIAS 
 
ASCENCIO, Ana Fernanda Gomes. Fundamentos da programação de 
computadores. Prentice Hall. São Paulo, 1999. 
 
ASCENCIO, Ana Fernanda Gomes. Fundamentos da programação de 
computadores. Prentice Hall. São Paulo, 2002. 
 
ASCENCIO, Ana Fernanda Gomes. Fundamentos da programação de 
Computadores: Algoritmos, Pascal, C/C++ e Java. 2ed. São Paulo: Pearson 
Prentice Hall, 2007. 
 
GUIMARÃES, Ângelo de Moura; LAGES, Newton Alberto de Castilho. Algoritmos e 
Estruturas de Dados. 23ed. Rio de Janeiro: LTC – Livros Técnicos e Científicos 
Editora S.A., 1994. 
 
FARRER, Harry, Algoritmos Estruturados. LTC. Rio de Janeiro, 1999 
 
FORBELLONE, André Luiz Villar. A lógica de Programação: A construção de 
Algoritmos e Estruturas de Dados. São Paulo: Makron Books, 1993. 
 
MANZANO, José Augusto. Algoritmos: Lógica para Desenvolvimento de 
programação. Érica. São Paulo, 1996.

Continue navegando