Prof. Alceu Britto slides cedidos pelo Prof. Edson J. R. Justino (PUCPR)
Aula 9 e 10 UEPG
Algoritmos e
Programação
Estruturas de Dados
Homogêneas
Repetição com teste no final
O comando REPITA-ATÉ é equivalente ao
comando ENQUANTO. No entanto, o teste da
condição é feito no final da estrutura e a condição é
oposta.
Enquanto
Enquanto condicondiççãoãofafaççaa
Comandos; Comandos; . . . . . . Fim
Fim--enquantoenquanto Repita Repita Comandos; Comandos; . . . . . . At
Estruturas de Dados
Homogêneas
In
Inííciocio real
realVOLUME, PI, R;VOLUME, PI, R;
PI< PI<--3,1416;3,1416; R < R <--0;0; Repita Repita VOLUME < VOLUME <--4/3 * PI *(R**3);4/3 * PI *(R**3); Imprimir (
Imprimir (R, VOLUMER, VOLUME););
R < R <--R + 2;R + 2; At AtééR > 6R > 6 Fim Fim In Inííciocio real
realVOLUME, PI, R;VOLUME, PI, R; PI< PI<--3,1416;3,1416; R < R <--0;0; Enquanto Enquanto R R ≤≤66fafaççaa VOLUME < VOLUME <--4/3 * PI *4/3 * PI * (R**3); (R**3); Imprimir (
Imprimir (R, VOLUMER, VOLUME););
R <
R <--R + 2;R + 2;
Fim
Fim--enquantoenquanto
Fim
Fim
Estruturas de Dados
Homogêneas
Repetição com variável de controle
O comando PARA é na verdade um comando
ENQUANTO utilizando uma variável de controle,
escrita numa notação compacta.
V < V <--ii Enquanto Enquanto v v ≤≤llfafaççaa Comandos; Comandos; . . . . . . v < v <--v + p;v + p; Fim
Fim--enquantoenquanto Para
Paravvde de iiatatéél l passo passo p p
Comandos; Comandos; . . . . . . Fim
Estruturas de Dados
Homogêneas
In
Inííciocio real
realVOLUME, PI, R;VOLUME, PI, R;
PI<
PI<--3,1416;3,1416;
Para
Para RRde de 00atatéé66passo passo 2 2 VOLUME <
VOLUME <--4/3 * PI *(R**3);4/3 * PI *(R**3); Imprimir (
Imprimir (R, VOLUMER, VOLUME););
Fim
Fim--ParaPara
Fim
Fim
In
Inííciocio real
realVOLUME, PI, R;VOLUME, PI, R; PI< PI<--3,1416;3,1416; R < R <--0;0; Enquanto Enquanto R R ≤≤66fafaççaa VOLUME < VOLUME <--4/3 * PI *4/3 * PI * (R**3); (R**3); Imprimir (
Imprimir (R, VOLUMER, VOLUME););
R <
R <--R + 2;R + 2;
Fim
Fim--enquantoenquanto
Fim
Fim
Estruturas de Dados
Homogêneas
O Comando ABANDONE
O comando ABANDONE só tem sentido
dentro de um comando de repetição
(enquanto, repita e para). Ele abandona o
fluxo de repetição do loop, desviando para a
próxima instrução após o loop
Estruturas de Dados
Homogêneas
In Inííciocio int intI;I; Enquanto Enquanto I > 0I > 0fafaççaa I< I<--I I ––0,05;0,05; imprima ( imprima (ii);); SeSe (I**2) + 1 (I**2) + 1 ≥≥1,451,45entãoentão I < I <--I + 0,20;I + 0,20; Senão Senão Abandone; Abandone; Fim Fim--sese Fim
Fim--enquantoenquanto
Fim
Fim
Estruturas de Dados
Homogêneas
Definição de novos tipos
Nem sempre os tipos básicos (int, real, caractere e
lógico) são suficientes para exprimir estrutura de
dados em algoritmos
O tipo vetor
○
Representa uma coleção de um dos tipos básicos
tipo_b
tipo_báásicosiconome_vetornome_vetor[limite];[limite];
Onde
Onde tipo_btipo_báásicosicosão int, real, são int, real,
caractere e l
Estruturas de Dados
Homogêneas
Exemplo 1: O que será impresso no algoritmo abaixo?
In Inííciocio int intI, I, veve[6];[6]; caractere caracterecaca[6];[6]; ve ve[0] <[0] <--0;0; ve ve[1] <[1] <--0;0; ve ve[2] <[2] <--1;1; ve ve[3] <[3] <--1;1; ve ve[4] <[4] <--4;4; ve ve[4] <[4] <--5;5; ca ca[0] <[0] <--““SEGSEG””;; ca ca[1] <[1] <--““TERTER””;; ca ca[2] <[2] <--““QUAQUA””;; ca ca[4] <[4] <--““SEXSEX””;; ca ca[5] <[5] <--““SABSAB””;; Para
ParaI I dede0 0 atatéé5 5 passopasso22
Imprima
Imprima((caca[[veve[i]]);[i]]);
Fim
Fim--parapara Imprima Imprima((caca[[veve[[veve[2]]]);[2]]]); Fim Fim
Estruturas de Dados
Homogêneas
Exemplo 2: Qual será o valor de X impresso pelo
algoritmo abaixo?
InInííciocioreal realx, v[5];x, v[5]; int intI;I; v[0] < v[0] <--1;1; v[1] < v[1] <--3;3; v[2] < v[2] <--0;0; v[3] < v[3] <--2;2; v[4] < v[4] <--4;4; x < x <--v[0] + v[4];v[0] + v[4]; Imprima Imprima(x);(x); x < x <--v[1] v[1] ––v[4];v[4]; Imprima Imprima(x);(x); x < x <--v[3] * v[0] v[3] * v[0] --x;x; Imprima Imprima(x);(x); I < I <--2; 2; x < x <--v[I];v[I]; Imprima Imprima(x);(x); x < x <--v[I]/v[v[0]];v[I]/v[v[0]]; Imprima Imprima(x);(x); Fim Fim
Estruturas de Dados
Homogêneas
Exemplo 3:Um professor tem uma turma com 80 alunos e deseja
calcular e imprimir a nota de cada aluno seguido da média da turma In
Inííciocio real
realmméédia, soma = 0;dia, soma = 0; real
realnota[80];nota[80]; int
inti = 0;i = 0; Enquanto
Enquantoi < 80 fai < 80 façça:a:
leia
leia(nota[i]);(nota[i]); soma <
soma <--soma + nota[i];soma + nota[i]; i <
i <--i + 1;i + 1; Fim
Fim--enquantoenquanto
m
méédia <dia <--soma/80;soma/80; i <
i <--0;0; Enquanto
Enquantoi < 80 fai < 80 façça:a:
Imprima
Imprima( nota[i], mé( nota[i], média);dia); i <
i <--i + 1;i + 1; Fim
Fim--enquantoenquanto
Fim
Fim
►
► Exemplo 4: Escreva o exemplo anterior usando o comando PARAExemplo 4: Escreva o exemplo anterior usando o comando PARA
Estruturas de Dados
Homogêneas
Exemplo 5: Dado vetor CRR de caracteres abaixo
○ CRR
Qual será a sua configuração depois de executar os comandos:
! U O T R E C A
In
Inííciocio
caractere
caracterecrr[8]={!,U,O,T,R,E,C,A};crr[8]={!,U,O,T,R,E,C,A}; int
inti;i;
caractere AUX; caractere AUX; Para
Paraiidede1 1 atatéé33passo passo 11 aux
aux<<--crrcrr[i];[i]; crr
crr[i] <[i] <--crrcrr[7 [7 ––i];i]; crr
crr[7 [7 ––i] <i] <--auxaux;; Fim
Fim--parapara
aux aux<<--crrcrr[0];[0]; crr crr[0] <[0] <--crrcrr[7];[7]; crr crr[7] <[7] <--auxaux;; Fim Fim
Exercícios Propostos
1) Dados os vetores R[10] e S[20],
escreva um algoritmo que:
1.
Gere o vetor X correspondente a
união
dos
vetores R e S;
2.
Gere o vetor Y com os
elementos comuns
de R e S;
3.
Gere o vetor Z com os elementos de R que
não estão
em S.
Solução Exercício 1
1.
In Inííciocio caractere caractere R[10], S[20], X[30];R[10], S[20], X[30]; int inti;i; Leia( Leia(R,SR,S); ); ParaParaiidede0 0 atatéé99passo passo 11
X[i] <
X[i] <--R[i];R[i]; Fim
Fim--parapara Para
Paraiidede0 0 atatéé1919passo passo 11 X[10+i] <
X[10+i] <--S[i];S[i]; Fim
Fim--parapara Imprima
Imprima(X);(X); Fim
Solução Exercício 1
2
InInííciocio caractere
caractere R[10], S[20], Y[10];R[10], S[20], Y[10]; int inti, j, k;i, j, k; Leia( Leia(R,SR,S); ); k < k <--0;0; Para
Paraiidede0 0 atatéé99passo passo 11
Para
Para jjde de 00atatéé1919passo passo 11
Se
Se R[i] = S[j]R[i] = S[j]entãoentão
Y[k] <
Y[k] <--R[i];R[i]; k < k <--k + 1;k + 1; Abandone; Abandone; Fim Fim--sese Fim
Fim--parapara
Fim
Fim--parapara Imprima
Imprima(Y);(Y); Fim Fim
Solução Exercício 1
3
In Inííciocio caractere caractere R[10], S[20], Z[10];R[10], S[20], Z[10]; intinti, j, comum;i, j, comum; Leia(
Leia(R,SR,S); );
k < k <--0;0; Para
Paraiidede0 at0 atéé99passo passo 11 comum <
comum <--0;0; Para
Para jjde de 00atatéé1919passo passo 11 Se
Se R[i] = S[j]R[i] = S[j]entãoentão
comum < comum <--1;1; Fim
Fim--sese
Fim
Fim--parapara
Se
Secomum = 0 comum = 0 entãoentão
Z[k] < Z[k] <--R[i];R[i]; k < k <--k + 1;k + 1; Fim Fim--sese Fim
Fim--parapara
Imprima
Imprima(Z);(Z); Fim