Treinamento
Olimpíada Brasileira de
Informática
Prof. Roberto Affonso da Costa Junior
Universidade Federal de Itajubá
AULA 04 – 1/2
– Estrutura de Repetição
–
Bruno Otávio, George, Gabriel Taets,
Gabriel Huhn,Thiago Carvalho, Tiago,
Renan e Júnior Andrade
Repetição
●
●
Esta estrutura é utilizada quando determinada parte
do programa precisa ser repetida;
Existem 2 tipos de repetição:
– Repetições não definidas
– Repetições definidas
Repetições Definidas
●
●
Este tipo de repetição é utilizado quando sabe-se à
priori quantas vezes uma determi-nada ação vai ser
repetida no programa.
Exemplos:
– Dê 5 voltas no campo de futebol afim de se exercitar;
– Leia 10 números inteiros;
●
●
No primeiro exemplo, a ação compreende uma
volta no campo de futebol; portanto, ela foi
repetida 5 vezes; informação esta bem clara no
enunciado;
No segundo exemplo, a ação compreende a leitura
de 1 número; portanto, como 10 números deverão
ser lidos, define-se aí a repetição previamente
conhecida de 10 vezes;
Repetições Não definidas
●
●
Neste tipo de repetição, a quantidade de vezes que
a ação é repetida, não é conhecida à priori;
Exemplo:
– Dê voltas no campo de futebol afim de se exercitar, mas
quando se cansar, pare;
– Leia números inteiros até achar o número -1
●
●
No primeiro exemplo, a ação continua até que uma
condição ocorra; ou seja, enquanto a condição pré
estabelecida não ocorrer, a ação continua sendo
repetida; no exemplo, a condição estabelecida é o
cansaço, ou seja, quando este ocorrer a ação ( no
caso, as voltas no campo de futebol ) termina;
No segundo exemplo o mesmo ocorre, ou seja, a
condição estabelecida é encontrar o numero -1; ou
seja, números vão sendo lidos até que a condição
ocorra;
Repetições
●
Repetição definida:
para faça
●
Repetição não definida:
enquanto faça
repita enquanto
Repetição não definida
 Estrutura de Repetição: Enquanto-Faça
Na estrutura Enquanto-Faça as instruções a serem repetidas podem
não ser executadas nenhuma vez, pois o teste fica no início da
repetição, então a execução das instruções (que estão "dentro" da
repetição) depende do teste. Nesta estrutura, a repetição é finalizada
quando o teste é Falso (F), ou seja, enquanto o teste for Verdadeiro
as instruções serão executadas e, quando for Falso, o laço é
finalizado.
Portugol
enquanto <condição> faça
bloco de comandos
fim-enquanto
<condição>
F
V
bloco de comandos
9
Linguagem C
while ( condição ) {
procedimento
}
•
Neste caso, a estrutura de repetição precisa ter :
1.- uma variável de controle com um valor inicial;
2.- atualização da variável de controle;
3.- forma de terminar o ciclo de repetição;
●
Caso estas condições não ocorram, o programa:
1 não tem como entrar no ciclo de repetição pois
não tem valor definido para a variável que
compõem a condição, ou seja, de controle;
2 não tem como terminar o ciclo repetitivo pois não
há variação da variável de controle durante este
ciclo;
●
Modo de operação:
– Antes de executar o procedimento, a condição é
verificada;
– Enquanto a condição for verdadeira a repetição é
continuada;
– Quando a condição for falsa, o ciclo de repetição é
terminado;
Exemplo 1
1.
2.
3.
4.
5.
a ← 10
enquanto ( a < 15 ) faça
imprima ( “a = “ , a)
a←a+1
fim_enquanto
a ← 10
a < 15
F
V
“a = “, a
Observação:
a numeração das linhas é utilizada apenas para a
explanação do algoritmo
Exemplo 1 – Linguagem C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a;
a = 10;
while ( a < 15 ) {
printf ( “a = %d “ , a );
a ++;
}
}
●
Neste exemplo, tem-se:
– Variável de controle da repetição: a
– Valor inicial da variável de controle: 10
– Variação da variável de controle: + 1 (++ em C)
– Condição de término da repetição: a ≥ 15
●
●
O que aconteceria se a declaração da linha 1 não
existisse?
Idem, para a linha 4
Exemplo 2
1. inicio
2.
inteiro a
3.
leia ( a )
4.
enquanto ( a <> 999 ) faça
5.
imprima ( “a = “ , a )
6.
leia ( a )
7.
fim_enquanto
8. fim
a
a <> 999
V
“a = “, a
a
F
Exemplo 2 – Linguagem C++
#include <bits/stdc++.h>
using namespace std;
int main() {
printf(“Entre com um número: “);
scanf(“%d”, &a )
while ( a != 999 ) {
printf ( “a = %d“ , a )
printf(“Entre com um número: “);
scanf(“%d”, &a )
}
}
●
O que difere este programa do anterior?
●
Qual é a função das declarações nas linhas 3 e 6?
●
Utilização do flag
O que é flag?
Exemplo 3
●
Calcular a média aritmética dos n primeiros
números inteiros.
Algoritmo / Portugol
O cálculo da média aritmética dos n primeiros números inteiros
inicio
1) definição das variáveis
inteiros n, q_numeros, numero, soma_numeros
real media
2) iniciando as variáveis
q_numeros ← 0
soma_numeros ← 0
numero ← 1
3) entrada dos dados
imprima ( “entre com a quantidade de numeros “ )
leia ( n )
4) calculando a soma dos números
enquanto ( q_numeros < n ) faça
soma_numeros ← soma_numeros + numero
numero ← numero + 1
q_numeros ← q_numeros + 1
fim_enquanto
5) calculando a média aritmética dos números
media ← soma_numeros / q_numeros
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “,
media )
fim
inicio
q_numeros ← 0
soma_numeros ← 0
numero ← 1
n
q_numeros < n
V
F
1
soma_numeros ← soma_numeros + numero
q_numeros ← q_numeros + 1
numero ← numero + 1
1
media ← soma_numeros / q_numeros
“media aritmetica de” , n,
“ numeros: “, media
fim
Exemplo 3 – Linguagem C++
// programa para o cálculo da média aritmética
// dos n primeiros números inteiros
#include <bits/stdc++.h>
using namespace std;
int main ( )
{
// definição das variáveis
int n, q_numeros, numero, soma_numeros;
float media;
// entrada dos dados
printf ( "entre com a quantidade de numeros\n" );
scanf ( "%d", &n );
// iniciando as variáveis
q_numeros = 0;
soma_numeros = 0;
numero = 1;
// calculando a soma dos números
while ( q_numeros < n ) {
soma_numeros += numero;
numero++;
q_numeros++;
}
// calculando a média aritmética dos números
media = (float) soma_numeros / (float) q_numeros;
// mostrando resultados
printf ( " media aritmetica de %d numeros: %10.3f\n",
n, media );
}
Exemplo 4
Calcular a média aritmética de n números dados
Algoritmo / Portugol
O cálculo da média aritmética de n números inteiros dados
inicio
1) definição das variáveis
inteiro n, q_numeros, numero, soma_numeros
real media
2) iniciando as variáveis
q_numeros ← 0
soma_numeros ← 0
3) entrada dos dados
imprima ( “entre com a quantidade de numeros “ )
leia ( n )
4) entrar com os números e calcular a soma dos
mesmos
enquanto ( q_numeros < n ) faça
imprima ( “ entre com um numero inteiro “ )
leia ( numero )
soma_numeros ← soma_numeros + numero
q_numeros ← q_numeros + 1
fim_enquanto
5) calculando a média aritmética dos números
media ← soma_numeros / q_numeros
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “,
media )
fim
inicio
q_numeros ← 0
soma_numeros ← 0
n
q_numeros < n
V
numero
F
1
soma_numeros ← soma_numeros + numero
q_numeros ← q_numeros + 1
1
media ← soma_numeros / q_numeros
“media aritmetica de” , n,
“ numeros: “, media
fim
Exemplo 4 – Linguagem C++
●
O correspondente programa em C pode ser escrito
da seguinte forma:
#include <bits/stdc++.h>
using namespace std;
int main () {
//algoritmo para o cálculo da média aritmética de n
//números inteiros dados
// definição das variáveis
int n, q_numeros, numero, soma_numeros;
float media;
// iniciando as variáveis
q_numeros
= 0;
soma_numeros = 0;
// entrada dos dados
printf ( “entre com a quantidade de numeros\n “ );
scanf ( “%d”, &n );
// entrar com os números e calcular a soma dos mesmos
while ( q_numeros < n ) {
printf ( “ entre com um numero inteiro \n“ );
scanf ( “%d”, &numero );
printf ( “numero lido: %d\n“ , numero );
soma_numeros += numero;
q_numeros++;
}
// calculando a média aritmética dos números
media = (float) soma_numeros / (float)q_numeros;
// mostrando resultados
printf ( “ media aritmetica de %d“ , n ,“ numeros: %10.4f“,
media );
return 0;
}
Exemplo 5
Calcular a média aritmética de n números dados;
n não é conhecido à priori
Algoritmo / Portugol
O cálculo da média aritmética de n números inteiros dados
inicio
1) definição das variáveis
inteiro q_numeros, numero, soma_numeros
real media
caracter flag
2) iniciando as variáveis
q_numeros ← 0
soma_numeros ← 0
flag ← 's'
3) entrar com os demais números e somá-los
enquanto ( flag = 's' ) faça
imprima ( “ entre com um numero inteiro “ )
leia ( numero )
soma_numeros ← soma_numeros + numero
q_numeros ← q_numeros + 1
imprima ( “Quer continuar? (s/n) “ )
leia ( flag )
fim_enquanto
5) calculando a média aritmética dos números
media ← soma_numeros / q_numeros
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “,
media )
fim
inicio
q_numeros ← 0
soma_numeros ← 0
flag ← 's'
flag = 's'
F
V
numero
1
soma_numeros ← soma_numeros + numero
q_numeros ← q_numeros + 1
“Quer continuar? (s/n)
flag
1
media ← soma_numeros / q_numeros
“media aritmetica de” , n,
“ numeros: “, media
fim
Exemplo 5 – Linguagem C++
●
Em linguagem C, o programa é escrito da seguinte
forma:
// programa para o cálculo da média aritmética
// de vários números inteiros dados
#include <bits/stdc++.h>
using namespace std;
int main ( )
{
// definição das variáveis
int n, numero, soma_numeros;
float media;
// iniciando as variáveis
n = 0;
soma_numeros = 0;
// entrar com o primeiro número
printf ( " entre com um numero inteiro \n" );
scanf ( "%d", &numero );
// entrar com os demais números e somá-los
while ( numero != 999 ) {
printf ( "numero lido: %d\n" , numero );
soma_numeros += numero;
n++;
printf ( " entre com um numero inteiro \n" );
scanf ( "%d", &numero );
}
// calculando a média aritmética dos números
media = (float) soma_numeros / (float)n;
// mostrando resultados
printf ( " media aritmetica de %d numeros: %10.4f\n",
n, media );
}
Repetição não definida
Portugol
repita
bloco de comandos
até <condição> faça
bloco de comandos
<condição>
F
V
Observações da estrutura de repetição REPITA-ATÉ-FAÇA:
1) A repetição (o laço) se encerra quando a condição (teste) for
verdadeira.
2) As instruções a serem repetidas são executadas pelo menos 1 vez,
por que o teste é no final da repetição.
50
Linguagem C
do {
procedimento
} while ( condição );
•
Neste caso, a estrutura de repetição precisa ter :
1.- uma variável de controle com um valor inicial;
2.- atualização da variável de controle;
3.- forma de terminar o ciclo de repetição;
●
Caso estas condições não ocorram, o programa:
1 não tem como entrar no ciclo de repetição pois não tem
valor definido para a variável que compõem a condição, ou
seja, de controle;
2 não tem como terminar o ciclo repetitivo pois não há
variação da variável de controle durante este ciclo;
●
Modo de operação:
– O procedimento é executado antes da condição ser
verificada;
– Enquanto a condição for verdadeira a repetição é
continuada;
– Quando a condição for falsa, o ciclo de repetição é
terminada;
Exemplo 6
inteiro a
inicio
a ← 10;
repita
imprima ( “a = “ , a )
a←a+1
até ( a >= 15 ) faça
fim
Exemplo 6 – Linguagem C++
#include <bits/stdc++.h>
using namespace std;
int main() {
}
int a;
a = 10;
do {
printf ( “a = %d\n“ , a );
a ++;
Cuidado!!!
} while ( a < 15 );
Aqui tem que ser igual
ao “while”.
Exemplo 7
inteiro a
inicio
repita
imprima ( “a = “ , a )
leia ( a )
até ( a = 999 ) faça
fim
Exemplo 6 – Linguagem C++
#include <bits/stdc++.h>
using namespace std;
int main() {
int a;
do {
printf ( “Entre com a = “);
scanf ( “%d“, &a);
a ++;
Cuidado!!!
} while ( a != 999 );
Aqui tem que ser
}
igual ao “while”.
Exemplo 8
●
Calcular a média aritmética dos n primeiros números
inteiros.
algoritmo para o cálculo da média aritmética dos n primeiros
números inteiros
1) definição das variáveis
inteiros n, q_numeros, numero, soma_numeros
real media
inicio
2) iniciando as variáveis
q_numeros ← 0
soma_numeros ← 0
numero ← 1
3) entrada dos dados
imprima ( “entre com a quantidade de numeros “ )
leia ( n )
4) calculando a soma dos números
repita
soma_numeros ← soma_numeros + numero
numero ← numero + 1
q_numeros ← q_numeros + 1
até ( q_numeros >= n ) faça
5) calculando a média aritmética dos números
media ← soma_numeros / q_numeros
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “,
media )
fim
Exemplo 8 – Linguagem C++
// programa para o cálculo da média aritmética
// dos n primeiros números inteiros
#include <bits/stdc++.h>
using namespace std;
int main ()
{
// definição das variáveis
int n, q_numeros, numero, soma_numeros;
float media;
// entrada dos dados
printf ( "entre com a quantidade de numeros\n" );
scanf ( "%d", &n );
// iniciando as variáveis
q_numeros = 0;
soma_numeros = 0;
numero = 1;
// calculando a soma dos números
do {
soma_numeros += numero;
numero++;
q_numeros++;
} while ( q_numeros < n );
// calculando a média aritmética dos números
media = (float) soma_numeros / (float) q_numeros;
// mostrando resultados
printf ( " media aritmetica de %d numeros: %10.3f\n",
n, media );
}
Exemplo 9
Calcular a média aritmética de n números dados
Algoritmo para o cálculo da média aritmética de n números
inteiros dados
1) definição das variáveis
inteiro n, q_numeros, numero, soma_numeros
real media
inicio
2) iniciando as variáveis
q_numeros ← 0
soma_numeros ← 0
3) entrada dos dados
imprima ( “entre com a quantidade de numeros “ )
leia ( n )
4) entrar com os números e calcular a soma dos
mesmos
repita
imprima ( “ entre com um numero inteiro “ )
leia ( numero )
soma_numeros ← soma_numeros + numero
q_numeros ← q_numeros + 1
até ( q_numeros >= n ) faça
5) calculando a média aritmética dos números
media ← soma_numeros / q_numeros
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “,
media )
fim
Exemplo 9 – Linguagem C++
●
O correspondente programa em C pode ser escrito
da seguinte forma:
#include <bits/stdc++.h>
using namespace std;
int main ( ) {
//algoritmo para o cálculo da média aritmética de n //números
inteiros dados
// definição das variáveis
int n, q_numeros, numero, soma_numeros;
float media;
// iniciando as variáveis
q_numeros
= 0;
soma_numeros = 0;
// entrada dos dados
printf ( “entre com a quantidade de numeros\n “ );
scanf ( “%d”, &n );
// entrar com os números e calcular a soma dos mesmos
do {
printf ( “ entre com um numero inteiro \n“ );
scanf ( “%d”, &numero );
printf ( “numero lido: %d\n“ , numero );
soma_numeros += numero;
q_numeros++
} while ( q_numeros < n );
// calculando a média aritmética dos números
media = (float) soma_numeros / (float)q_numeros;
// mostrando resultados
printf ( “ media aritmetica de %d“ , n ,“ numeros: %10.4f“,
media );
}
Exemplo 10
Calcular a média aritmética de n números dados;
n não é conhecido à priori
Algoritmo para o cálculo da média aritmética de n números
inteiros dados
1) definição das variáveis
inteiro n, numero, soma_numeros
real media
caracter flag = 's'
inicio
2) iniciando as variáveis
n←0
soma_numeros ← 0
3) entrar com os demais números e somá-los
repita
imprima ( “ entre com um numero inteiro “ )
leia ( numero )
soma_numeros ← soma_numeros + numero
n←n+1
imprima ( “Quer continuar? (s/n) “ )
leia ( flag )
até ( flag = 's' ) faça
5) calculando a média aritmética dos números
media ← soma_numeros / n
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “,
media )
fim
Exemplo 10 – Linguagem C++
●
Em linguagem C, o programa é escrito da seguinte
forma:
// programa para o cálculo da média aritmética
// de vários números inteiros dados
#include <bits/stdc++.h>
using namespace std;
int main ( void )
{
// definição das variáveis
int n, numero, soma_numeros;
float media;
// iniciando as variáveis
n = 0;
soma_numeros = 0;
// entrar com os demais números e somá-los
do {
printf ( " entre com um numero inteiro: " );
scanf ( "%d", &numero );
soma_numeros += numero;
n++;
printf ( "Quer continuar? (s/n) " );
scanf ( " %c", &flag );
} while ( tolower(flag) != 's' );
// A função tolower() transforma o carácter da variável
// em valores somente minusculo.
// calculando a média aritmética dos números
media = (float) soma_numeros / (float)n;
// mostrando resultados
printf ( " media aritmetica de %d numeros: %10.4f\n",
n, media );
}
Repetição Definida
Portugol
Para <variável> = valor_inicial até
valor_final passo número faça
bloco de comandos
fim-para
<variável> = valor_inicial até
valor_final passo número
bloco de comandos
Observações da estrutura de repetição Para-Até-Faça:
1) A repetição começa de um valor_inicial (numérico) e se encerra
quando atinge ou supera um valor_final, sendo que ela varia com o
número de passos a ser seguido.
2) As instruções a serem repetidas podem ou não ser executadas.
81
Linguagem C++
for ( <variável> = valor_inicial; <condição>;
<passo> ) {
procedimento
}
Exemplo 11
inteiro a
inicio
para (a ← 10 até 14 passo 1 ) faça
imprima ( “a = “ , a )
fim_para
fim
Exemplo 11 – Linguagem C++
#include <bits/stdc++.h>
using namespace std;
int main() {
int a;
for (a = 10; a < 15; a ++;) {
printf ( “a = %d “ , a );
}
}
Exemplo 12
●
Calcular a média aritmética dos n primeiros números
inteiros.
Algoritmo para o cálculo da média aritmética dos n primeiros
números inteiros
1) definição das variáveis
inteiro n, numero, soma_numeros
real media
inicio
2) iniciando as variáveis
soma_numeros ← 0
3) entrada dos dados
imprima ( “entre com a quantidade de numeros “ )
leia ( n )
4) calculando a soma dos números
para ( numero = 1 até n de 1 ) faça
soma_numeros ← soma_numeros + numero
fim_para
5) calculando a média aritmética dos números
media ← soma_numeros / n
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “,
media )
fim
Exemplo 12 – Linguagem C++
// programa para o cálculo da média aritmética
// dos n primeiros números inteiros
#include <bits/stdc++.h>
using namespace std;
int main ( )
{
// definição das variáveis
int n, numero, soma_numeros;
float media;
// entrada dos dados
printf ( "entre com a quantidade de numeros\n" );
scanf ( "%d", &n );
// iniciando as variáveis
soma_numeros = 0;
// calculando a soma dos números
for ( numero = 1; numero <= n; numero++ ) {
soma_numeros += numero;
}
// calculando a média aritmética dos números
media = (float) soma_numeros / (float) n;
// mostrando resultados
printf ( " media aritmetica de %d numeros: %10.3f\n",
n, media );
}
Exemplo 13
Calcular a média aritmética de n números dados
Algoritmo para o cálculo da média aritmética de n números
inteiros dados
1) definição das variáveis
inteiro n, q_numeros, numero, soma_numeros
real media
inicio
2) iniciando as variáveis
soma_numeros ← 0
3) entrada dos dados
imprima ( “entre com a quantidade de numeros “ )
leia ( n )
4) entrar com os números e calcular a soma dos mesmos
para ( q_numeros = 1 até n ) faça
imprima ( “ entre com um numero inteiro “ )
leia ( numero )
imprima ( “numero lido: “ , numero )
soma_numeros ← soma_numeros + numero
fim_para
5) calculando a média aritmética dos números
media ← soma_numeros / n
6) mostrando resultados
imprima ( “ media aritmetica de “ , n , “ numeros: “, media )
fim
Exemplo 13 – Linguagem C++
// programa para o cálculo da média aritmética
// de n números inteiros dados
#include <bits/stdc++.h>
using namespace std;
int main ( )
{
// definição das variáveis
int n, numero, soma_numeros;
float media;
// entrada dos dados
printf ( "entre com a quantidade de numeros\n" );
scanf ( "%d", &n );
// inicializar variaveis
soma_numeros = 0;
// entrar com os números e calcular a soma dos mesmos
for ( q_numeros = 1; q_numeros <= n; q_numeros++ ) {
printf ( “ entre com um numero inteiro \n“ );
scanf ( “%d”, & numero );
printf ( “numero lido: %5d\n“ , numero );
soma_numeros += numero;
}
// calculando a média aritmética dos números
media = (float) soma_numeros / (float) n;
// mostrando resultados
printf ( " media aritmetica de %d numeros: %10.3f\n",
n, media );
}
Exemplo 14
Calcular a seguinte expressão:
a  b!
a!b
Algoritmo para calcular uma expressão envolvendo fatorial
1) definição das variáveis
inteiro a, b, fat_a, fat_b, k, num, den
real x
inicio
2) entrada dos dados
imprima ( “ entre com dois valores inteiros “ )
leia ( a, b )
imprima ( “a = “, a, “ b= “, b )
3) consistência dos dados
se ( a < 0 ) ou ( b < 0 )
então
imprima ( “ dados incompatíveis “ )
senão
senão
3.1) calculo do fatorial de a
fat_a ← 1
para ( k = 1 até a ) faça
fat_a ← fat_a * k
fim_para
3.2) calculo do fatorial de b
fat_b ← 1
para ( k = 1 até b ) faça
fat_b ← fat_b * k
fim_para
3.3) calculo do numerador
num ← a + fat_b
3.4) calculo do denominador
den ← fat_a – b
3.5) verificação do denominador e calculo da expressão
se ( den = 0 )
então
imprima ( “expressao não pode ser calculada” )
senão
x ← num / den
imprima ( “ x = “, x )
fim_se
fim_se
fim
Exemplo 14 – Linguagem C++
// programa para calcular uma expressão envolvendo fatorial
#include <bits/stdc++.h>
using namespace std;
int main ( ){
// definição das variáveis
int a, b, fat_a, fat_b, k, num, den;
float x;
// entrada dos dados
printf ( "entre com dois valores inteiros\n" );
scanf ( "%d %d", &a, &b );
printf ( "a = %d b = %d\n", a, b );
if ( ( a < 0 ) || ( b < 0 ) ) printf ( " dados incompativeis\n" );
else {
// calculo do fatorial de a
fat_a = 1;
for ( k = 1; k <= a; k++ ) {
fat_a = fat_a * k;
}
// calculo do fatorial de b
fat_b = 1;
for ( k = 1; k <= b ; k++ ) {
fat_b = fat_b * k;
}
// calculo do numerador
num = a + fat_b;
// calculo do denominador
den = fat_a - b;
// verificação do denominador e calculo da expressão
if ( den == 0 )
printf ( "expressao não pode ser calculada\n" );
else {
x = (float)num / (float)den;
printf ( " x = %10.5f\n", x );
}
}
}
Exemplo 15
Dados os dígitos que compõem um número binário
inteiro positivo de 8 bits, determinar a sua conversão
para decimal;
algoritmo para converter um número binário de 8 bits em decimal
1) Definição das variáveis
inteiro digito, decimal, k, n, pos, chave, soma
inicio
2) Inicializando variáveis
pos ← 7
decimal ← 0
chave ← 0
3) Entrando com os dígitos e respectiva conversão
k←1
enquanto ( k =< 8 ) e ( chave = 0 ) faça
imprima ( “entre com um digito binario “ )
leia ( digito )
imprima ( digito )
se ( digito <> 0) e (digito <> 1 )
então
imprima ( “dados errados” )
chave ← 1
senão
se ( digito = 1 )
então
soma ← 1
para n = 1 até pos faça
soma ← 2 * soma
fim_para
decimal ← decimal + soma
fim_se
fim_se
k←k+1
pos ← pos - 1
fim_enquanto
4) Mostrando resultados
se ( chave = 0 )
então
imprima ( “ decimal = “, decimal )
fim_se
fim
Exemplo 15 – Linguagem C++
//algoritmo para converter um número binário de 8 bits em
decimal
#include <bits/stdc++.h>
using namespace std;
int main ( void ) {
// Definição das variáveis
int digito, decimal, n, k, pos, chave, soma;
// Inicializando variáveis
pos = 7;
decimal = 0;
chave = 0;
// Entrando com os dígitos e respectiva conversão
k = 1;
while ( ( k <= 8 ) && ( chave == 0 ) ) {
printf ( "entre com um digito binario \n" );
scanf ( "%d", &digito );
printf ( “%d”, digito );
if ( ( digito != 0 ) && ( digito != 1 ) ) {
printf ( "dados errados\n" );
chave = 1;
} else {
if ( digito == 1 ) {
soma = 1;
for ( n = 1; n <= pos; n++ )
soma *= 2 ;
decimal += soma;
}
}
k++;
pos--;
}
// Mostrando resultados
if ( chave == 0 ) printf ( " decimal = %d\n", decimal );
}
Exemplo 16
 Escreva um algoritmo para ler a nota de 10 alunos e
contar quantos foram aprovados, sendo que, para ser
aprovado, a nota deve ser maior ou igual a 6,0. Escrever
o número de aprovados.
107
var cont, i : inteiro
nota, soma, media : real
inicio
cont ← 0
soma ← 0
para i ← 1 até 10 faça
leia (nota)
se nota >= 6.0
então
cont ← cont + 1
fim-se
soma ← soma + nota
fim-para
media ← soma / 10
escreva (“Nº de aprovados é: ”, cont)
escreva (“Média dos alunos é: “, media)
fim
108
Exemplo 16 – Linguagem C++
#include <bits/stdc++.h>
media = soma / 10;
using namespace std;
printf (“Nº de aprovados é: %d”, cont)
int main() {
printf (“Média dos alunos é: %0.2f“,
media)
int cont, i;
float nota, soma, media; }
cont = 0;
soma = 0;
for (i = 1; i <= 10; i ++) {
printf (“Entre com a nota: “);
scanf (“%f”,&nota);
if (nota >= 6.0) {
cont ++;
}
109
soma += nota;
}
Exercise
Faça os exercícios do URI:
http://www.urionlinejudge.com.br/
1059 a 1060, 1064 a 1067, 1070 a 1075, 1078 a 1080,
1094 a 1099, 1101, 1113 a 1118, 1131 a 1134, 1142 a 1146
1149 a 1151, 1153 a 1160 e 1164 a 1165
Faça o exercício:
http://br.spoj.com/problems/SEMENT14/
http://br.spoj.com/problems/ESCADA14/
Download

Aula 4 - Prof. Roberto Affonso da Costa Junior