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”,¬a); 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/