DSC/CCT/UFCG [email protected] Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Carga Horária: 60 h DSC/CCT/UFCG Introdução à Programação [email protected] [email protected] Tópicos 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Introdução Algoritmos Pseudocódigo Estruturas de Controle Estrutura de Seleção If Estrutura de Seleção If/Else Estrutura de Repetição While Formulação de Algoritmos: Estudo de Caso 1 (Repetição Controlada por Contador) Formulação de Algoritmos com Refinamento Topdown por Passos: Estudo de Caso 2 (Repetição Controlada por Sentinela) 2 DSC/CCT/UFCG Introdução à Programação [email protected] [email protected] Tópicos 3.10 Formulação de Algoritmos com Refinamento Topdown: Estudo de Caso 3 (Estruturas de Controle Aninhadas) 3.11 Operadores de Atribuição 3.12 Operadores de Incremento e Decremento 3 3.1 Introdução DSC/CCT/UFCG [email protected] [email protected] Precauções antes da escrita de um programa Visão sinóptica do problema Planejamento cuidadoso de uma estratégia para solução do problema Precauções durante a escrita de um programa dos “blocos de construção” Conhecimento disponíveis Uso de princípios adequados de programação 4 3.2 Algoritmos DSC/CCT/UFCG Computação de Problemas Todos os problemas podem ser solucionados a partir da execução de uma série finita de ações em uma ordem específica [email protected] [email protected] Algoritmo Procedimento em termos de Ações a serem executadas Ordem na qual as ações devem ser executadas Controle do Programa Especificação da ordem na qual as declarações e comandos devem ser executadas 5 3.3 Pseudocódigo DSC/CCT/UFCG [email protected] [email protected] Pseudocódigo Linguagem artificial e informal que auxilia o programador a desenvolver algoritmos Similar ao Português cotidiano Não executada em computadores Suporte para a análise de um programa antes de sua escrita Facilidade de codificação em uma linguagem de programação (e.g. C, C++, Java) Composição a partir de declarações executáveis 6 DSC/CCT/UFCG 3.4 Estruturas de Controle Execução Seqüencial Declarações executadas uma após a outra, na ordem pré-definida (na escrita) [email protected] [email protected] Transferência de Controle Quando a próxima declaração executada não é a seguinte na seqüência Uso excessivo de declarações goto conduz a muitos problemas (código spaghetti) 7 3.4 Estruturas de Controle DSC/CCT/UFCG Bohm & Jacopini Todos os programas escritos em termos de 3 estruturas de controle Estruturas Seqüenciais [email protected] [email protected] Por default, programas executados seqüencialmente (como ocorre em C) Estruturas de Seleção Há três tipos em C: if, if/else e switch Estruturas de Repetição Há três tipos em C: while, do/while e for 8 3.4 Estruturas de Controle DSC/CCT/UFCG [email protected] [email protected] Diagrama de Fluxo (Flowchart) Representação gráfica de um algoritmo Uso de símbolos especiais conectados por setas denominadas linhas de fluxo (flowlines) Retângulo (ação) Indicação de algum tipo de ação Incrementar j Oval Indicação do início ou término de um programa ou uma seção de código Início 9 3.4 Estruturas de Controle DSC/CCT/UFCG Estruturas de controle única entrada/ única [email protected] [email protected] saída Conexão da saída de uma estrutura de controle à entrada da estrutura seguinte (empilhamento de estruturas de controle) Facilidade de construção de programas 10 3.5 Estrutura de Seleção if DSC/CCT/UFCG Estrutura de Seleção Uso na escolha entre cursos de ação alternativos [email protected] [email protected] Exemplos em pseudocódigo 1. Se a média final do aluno for maior ou igual a 7 Imprima “Você passou por média” 2. Se o raio for menor do que 3 e maior ou igual a 6 Faça raio igual a 5 3. Se o nome for diferente de RAQUEL Encerre o programa 11 3.5 Estrutura de Seleção if DSC/CCT/UFCG Estrutura de Seleção Análise Condição Verdadeira [email protected] [email protected] Execução da declaração imprima “Você passou por média” e prosseguimento do programa a partir da próxima declaração Condição Falsa do Exemplo 1 Declaração imprima “Você passou por média” ignorada e prosseguimento do programa a partir da próxima declaração Identação facilita a leitura de programas C ignora espaços em branco 12 3.5 Estrutura de Seleção if DSC/CCT/UFCG Estrutura de Seleção Declaração do Exemplo 1 em C if(media_final >= 7) printf(“Você passou por média\n"); [email protected] [email protected] Código em C apresenta próxima ao pseudocódigo uma representação Losango (decisão) Indicação de que uma decisão deve ser tomada Continência de uma expressão que pode ser Verdadeira ou Falsa Teste da condição Seleção do caminho apropriado Média final ≥ 7 F ? V 13 DSC/CCT/UFCG 3.5 Estrutura de Seleção if A estrutura de seleção if é uma estrutura do [email protected] [email protected] tipo única entrada/ única saída Uma decisão pode ser tomada em Média final ≥ 7 ? F qualquer expressão zero - falsa diferente de zero - Verdadeira V Imprimir “V. passou por média” 14 DSC/CCT/UFCG 3.6 Estrutura if-else de Seleção If Só executa uma ação se a condição testada for Verdadeira [email protected] [email protected] If/Else Especifica um par de ações a serem executadas, uma caso a condição testada seja Verdadeira, outra caso esta seja Falsa 15 DSC/CCT/UFCG 3.6 Estrutura de Seleção if-else If/Else Exemplo em pseudocódigo [email protected] [email protected] Se a média final do aluno for maior ou igual a 7,0 Imprima “Você passou por média” Caso contrário Imprima “Você vai para a final ou foi reprovado por média” Observe que a indentação/ espaçamento facilita a leitura do pseudocódigo, o mesmo ocorrendo mais efetivamente com o código em qualquer linguagem de programação escolhida 16 3.6 Estrutura de Seleção if-else DSC/CCT/UFCG If/Else [email protected] [email protected] Código em C if(media_final >= 7) printf(“Você passou por média\n"); else printf("Você vai para a final ou foi reprovado por média\n"); Operador condicional ternário ? : Uso de três argumentos Condição, valor1 se verdadeira, valor2 se falsa 17 3.6 Estrutura de Seleção if-else DSC/CCT/UFCG If/Else Código em C com ? : media_final >= 7 ? printf(“Você passou por média\n”) printf(“Você vai para a final ou foi reprovado por média \n”); : [email protected] [email protected] ou printf("%s\n", media_final >= 7 ? "Você passou por média" : "Você vai para a final ou foi reprovado por média" ); na atribuição quociente = denominador != 0 ? Numerador/denominador : 0 ; 18 3.6 Estrutura de Seleção if-else DSC/CCT/UFCG Diagrama de fluxo da estrutura If/Else [email protected] [email protected] Média final ≥ 7 ? F V Imprimir “V. passou por média” Estruturas Imprimir “V. vai para a final ou foi reprovado por média” If/Else aninhadas Teste para casos múltiplos Inserção de estruturas de seleção If/Else em uma estrutura de seleção If/Else 19 DSC/CCT/UFCG 3.6 Estrutura de Seleção if-else Pseudocódigo para uma estrutura If/Else [email protected] [email protected] aninhada Se nota for maior ou igual a 9,0 Imprima “Conceito A” Caso contrário Se nota for maior ou igual a 8,0 (e menor do que 9,0) Imprima “Conceito B” Caso contrário Se nota for maior ou igual a 7,0 (e menor do que 8,0) Imprima “Conceito C” Caso contrário Se nota for maior ou igual a 6,0 (e menor do que 7,0) Imprima “Conceito D” Caso contrário Imprima “Conceito I” 20 DSC/CCT/UFCG 3.6 Estrutura de Seleção if-else [email protected] [email protected] Instrução Composta Série de instruções encerradas por um par de chaves ({ }) Exemplo if ( media_final >= 7 ) printf( “Você passou por média\n" ); else { printf( “Se sua soma de notas for maior do que 12,5, você vai para a final\n" ); printf(“Caso contrário, você foi reprovado\n"); } 21 DSC/CCT/UFCG 3.6 Estrutura de Seleção if-else Instrução Composta Análise do exemplo Sem as chaves, a declaração [email protected] [email protected] printf(“Caso contrário, você foi reprovado\n"); seria executada automaticamente Com as chaves, a referida declaração só será executada se o if for falso 22 Exercício DSC/CCT/UFCG Faça um programa que calcula a média de um estudante e determina a sua situação Pseudo-código: Obter o nome do aluno Obter duas notas de provas e uma de exercícios Calcule a média considerando que as prvoas têm peso 0.4 e a nota dos [email protected] [email protected] exercícios tem peso 0.2 Mostre o nome, as três notas e a média Se a média for igual ou maior que 7 acrescente “você passou por média” Se a média for entre 4 e 7 acrescente “você ficou para a final” Se a média for menor que 4 qcrescente “você está reprovado” 23 DSC/CCT/UFCG 3.6 Estrutura de Seleção if-else Blocos Instruções compostas por declarações Erros de Sintaxe [email protected] [email protected] Percebidos e acusados pelo compilador Erros Lógicos Exercem influência no tempo de execução do programa Não fatais Execução do programa Saída incorreta Fatais Encerramento prematuro do programa 24 DSC/CCT/UFCG 3.6 Estrutura de Seleção swich Generalização do if/else condições lógicas true/false do if/else são generalizadas para múltiplos valores de uma variável [email protected] [email protected] As Exemplo Atividades condicionais: (Conceito=‘A’) imprimir “Aprovado com excelência” (Conceito=‘B’) imprimir “Aprovado bom” (Conceito=‘C’) imprimir “Aprovado” (Conceito=‘D’) imprimir “Reprovado” 25 DSC/CCT/UFCG 3.6 Estrutura de Seleção swich [email protected] [email protected] Na linguagem C swich conceito case ‘A’: printf(“Aprovado com excelência”); break; case ‘B’: printf( “Aprovado bom”); break; case ‘C’: printf(“Aprovado”); break; case ‘D’: printf(“Reprovado”); break; Default: printf(“conceito indefinido”); } 26 DSC/CCT/UFCG 3.7 Estrutura de Repetição while Estrutura de Repetição Especificação de uma ação a ser repetida enquanto uma dada condição permanecer [email protected] [email protected] Verdadeira Exemplo de pseudocódigo Enquanto houver itens no carrinho de compras Retire um item e adicione seu preço ao somatório de itens já computados O laço while será repetido até que a condição imposta se torne falsa 27 DSC/CCT/UFCG 3.7 Estrutura de Repetição while Exemplo [email protected] [email protected] while(item > 0) total_a_pagar = total_a_pagar + custo_item; Compute um item e adicione seu preço ao total a pagar Item > 0 ? V F 28 DSC/CCT/UFCG 3.8 Formulação Algoritmos I de [email protected] [email protected] Repetição controlada por contador Laço repetido até que o contador atinja um determinado limiar (pré-definido pelo programador) Repetição Delimitada Número de repetições é conhecido Exemplo Uma turma com 40 alunos fez uma prova. As notas da prova (números reais com uma casa decimal, na faixa de 0,0 a 10,0) estão disponíveis. Determinar a média da turma na referida prova. 29 DSC/CCT/UFCG 3.8 Formulação Algoritmos I de [email protected] [email protected] Repetição controlada por contador Exemplo de Pseudocódigo Variáveis: total, contador de notas, nota, média Faça total igual a zero Faça o contador de notas igual a um Enquanto o contador de notas for menor ou igual a 40 Pegue uma nota Adicione a nota ao total Adicione um ao contador de notas Determine a média da turma dividindo total por 40 Imprima a média da turma 30 DSC/CCT/UFCG 3.8 Formulação Algoritmos I de [email protected] [email protected] Repetição controlada por contador 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /* Programa 01 - Média de uma turma de 40 alunos usando repetição controlada por contador */ #include <stdio.h> main() { float nota, total, media; int contador; /* fase de inicialização */ total = 0; contador = 1; /* fase de processamento */ while (contador <= 40) { printf(“Digite nota: "); scanf("%d", ¬a); total = total + nota; contador = contador + 1; } 22 /* fase de conclusão */ 23 media = total / 40; 24 printf(“A média da turma é %4.1d\n", media); 25 26 return 0; /* indica que o programa terminou satisfatoriamente */ 27 } Exemplo de Saída Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: 9,8 6,4 7,7 9,2 5,8 3,9 5,1 9,3 8,3 2,8 Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: Digite nota: 9,7 8,8 8,5 5,9 6,8 7,8 8,8 9,1 9,4 4,8 Digite nota: 1,8 Digite nota: 9,7 Digite nota: 2,8 Digite nota: 7,8 Digite nota: 3,5 Digite nota: 5,1 Digite nota: 7,0 Digite nota: 6,3 Digite nota: 6,1 Digite nota: 7,0 Digite nota: 5,8 Digite nota: 7,2 Digite nota: 9,0 Digite nota: 2,9 Digite nota: 7,3 Digite nota: 3,8 Digite nota: 7,5 Digite nota: 8,9 Digite nota: 8,2 Digite nota: 6,6 A média da turma é 6,8 31 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de Algoritmos com Refinamento Top-Down por Passos [email protected] [email protected] Delineamento do Problema sobre o Exemplo Anterior Desenvolvimento de um programa para a determinação da média de uma turma, considerando que o programa processará um número arbitrário de notas cada vez que for executado Número desconhecido de alunos Como o programa será finalizado? 32 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de Algoritmos com Refinamento Top-Down por Passos (Stepwise) Solução do Problema [email protected] [email protected] Uso de um valor “sentinela” Também denominado valor de sinalização, “testa de ferro” (dummy value) ou flag Indicação do final da entrada de dados Laço finalizado quando o usuário passa para o programa o valor “sentinela” Valor sentinela não deve ser confundido com uma entrada regular (e.g. -1 no caso do programa da média das notas) 33 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de Refinamento Top-Down por Passos Representação pseudocódigo do topo (top) em [email protected] [email protected] Determine a média da turma Divisão do topo em tarefas menores e listagem ordenada das tarefas Inicialize as variáveis Receba as notas digitadas, some-as e conte-as Calcule e imprima a média da turma 34 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de Fases de diversos programas Inicialização [email protected] [email protected] Processamento Fase na qual são atribuídos valores iniciais às variáveis do programa Fase de aquisição dos valores dos dados de entrada e de manipulação apropriada das variáveis do programa Finalização Fase de cálculo e impressão dos resultados finais 35 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de Refinamento da Fase de Inicialização Inicialize as variáveis Inicialize total com zero [email protected] [email protected] Inicialize contador com zero Refinamento da 2ª linha do pseudocódigo Receba as notas digitadas, some-as e conte-as Receba a primeira nota (que poderá ser a “sentinela”) Enquanto o usuário não digitar o valor “sentinela” Adicione esta nota a total Adicione um a contador Receba a próxima nota (que poderá ser a “sentinela”) 36 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de Refinamento da 3ª linha do pseudocódigo Calcule e imprima a média da turma [email protected] [email protected] Se contador for diferente de zero Calcule média dividindo total por contador Imprima média Caso contrário Imprima “Nenhuma nota foi digitada” 37 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de [email protected] [email protected] Repetição controlada por sentinela 1 /* Programa 02 – Média de uma turma 2 com repetição controlada por 3 sentinela */ 4 #include <stdio.h> 5 6 int main() 7 { 8 float media, nota, total; /* novo tipo de dados */ 9 int contador; 10 11 /* fase de inicialização */ 12 total = 0; 13 contador = 0; 14 15 /* fase de processamento */ 16 printf( “Digite nota, -1 ao final: " ); 17 scanf( "%f", ¬a ); 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 while ( nota != -1 ) { total = total + nota; contador = contador + 1; printf( “Digite nota, -1 ao final: " ) scanf( "%f", ¬a ); } /* fase de finalização */ if ( contador != 0 ) { media = ( float ) total / contador; printf( “A média da turma é %.2f", media ); } else printf( "Nenhuma nota foi digitada\n" ); return 0; /* indica que o terminou satisfatoriamente */ programa 35 } 38 DSC/CCT/UFCG 3.9 Formulação Algoritmos II de Repetição controlada por sentinela [email protected] [email protected] Exemplo de Saída Digite nota: 5,8 Digite nota: 9,3 Digite nota: 6,1 Digite nota: 7,8 Digite nota: 7,2 Digite nota: 7,1 Digite nota: 8,2 Digite nota: 6,8 Digite nota: 5,5 Digite nota: 6,1 Digite nota: 8,9 Digite nota: 6,9 Digite nota: 5,8 Digite nota: 6,0 Digite nota: 7,3 Digite nota: 9,5 Digite nota: 8,8 Digite nota: 5,4 Digite nota: 9,8 Digite nota: 7,8 Digite nota: 9,0 Digite nota: 7,0 Digite nota: 8,8 Digite nota: 7,8 Digite nota: 8,2 Digite nota: 1,2 Digite nota: 6,9 Digite nota: 9,0 Digite nota: 4,0 Digite nota: 8,9 Digite nota: 6,5 Digite nota: 5,3 Digite nota: 4,5 Digite nota: 4,8 Digite nota: 5,8 Digite nota: 7,5 Digite nota: 7,1 Digite nota: 9,5 Digite nota: 7,7 Digite nota: -1 A média da turma é 7,0 Situação totalizando 39 notas (observe a última entrada do usuário, -1) 39 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle [email protected] [email protected] Problema Em uma universidade privada, seja uma lista com os resultados de uma prova aplicada em uma turma de 30 alunos, na qual atribui-se 1 a cada aluno aprovado e 2 a cada aluno reprovado Escrever um programa que analise os resultados Se mais de 25 alunos forem aprovados, deverá ser comunicado à turma o aumento da mensalidade em 10% (face ao êxito do ensino) 40 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle Comentários Processamento de 30 resultados de teste pelo programa escrito [email protected] [email protected] Uso de dois contadores Uso de um laço controlado por contador Um para o número de aprovados, outro para o número de reprovados Cada resultado testado é um número - 1 ou 2 Se o número for diferente de 1, dever-se-á considerar que este é igual a 2 41 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle Delineamento do nível de topo Analise os resultados da prova e decida se a mensalidade deve ser aumentada em 10% 1º Refinamento do pseudocódigo [email protected] [email protected] Inicialize variáveis Receba os 30 valores e conte as aprovações e reprovações Imprima um sumário dos resultados da prova e decida se a mensalidade deve ser aumentada em 10% Refinamento da 1ª linha Inicialize aprovados com zero Inicialize reprovados com zero Inicialize contalunos com um 42 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle Refinamento da 2ª linha Enquanto contalunos for menor ou igual a 30 Receba o próximo resultado da prova Se o aluno foi aprovado [email protected] [email protected] Adicione um a aprovados Caso contrário Adicione um a reprovados Adicione um a contalunos 43 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle Refinamento da 3ª linha Imprima o número de aprovados Imprima o número de reprovados [email protected] [email protected] Se mais de 25 alunos tiverem sido aprovados Imprima “A mensalidade será aumentada em 10%” 44 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle [email protected] [email protected] Estruturas de Controle Aninhadas 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /* Programa 03 - Análise dos resultados results */ #include <stdio.h> int main() { /*initialização */ int aprovados = 0, reprovados = 0, contalunos = 1, resultado; /*Execução */ while (contalunos <= 30) { printf(“Digite resultado ( 1 = aprovado, 2 = reprovado ): "); scanf("%d", &resultado); if ( resultado == 1 ) /*if/else aninhado no while*/ aprovados = aprovados + 1; else reprovados = reprovados + 1; 19 20 21 22 23 24 25 26 27 contalunos = contalunos + 1; } /* Finalização */ printf( “Aprovados %d\n", aprovados ); printf( “Reprovados %d\n", reprovados ); if ( aprovados > 25 ) printf( “A mensalidade será aumentada em 10%\n" ); 28 29 return 0; /* finalização satisfatória */ 30 } 45 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle Estruturas de Controle Aninhadas [email protected] [email protected] Exemplo de Saída Digite resultado: Digite resultado: Digite resultado: Digite resultado: Digite resultado: Digite resultado: Digite resultado: Digite resultado: Digite resultado: 1 1 2 1 1 1 1 1 2 Digite resultado : 1 Digite resultado : 1 Digite resultado : 1 Digite resultado : 1 Digite resultado : 2 Digite resultado : 1 Digite resultado : 1 Digite resultado : 2 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado: 1 Digite resultado: 2 Digite resultado: 1 Digite resultado: 1 Digite resultado: 1 Digite resultado: 2 Digite resultado: 1 Aprovados: 23 Reprovados: 7 46 DSC/CCT/UFCG 3.10 Estruturas Aninhadas de Controle Comentários Processamento de 30 resultados de teste pelo programa escrito [email protected] [email protected] Uso de dois contadores Uso de um laço controlado por contador Um para o número de aprovados, outro para o número de reprovados Cada resultado testado é um número - 1 ou 2 Se o número for diferente de 1, dever-se-á considerar que este é igual a 2 47 DSC/CCT/UFCG 3.11 Operadores Atribuição de Operadores de Atribuição Abreviação de expressões de atribuição Exemplo em C c = c + 3; [email protected] [email protected] Abreviação a partir do operador de atribuição de adição c += 3; Forma de atribuição variável = expressão do operador de variável; Re-escrita operador de variável = expressão; 48 DSC/CCT/UFCG 3.11 Operadores Atribuição de [email protected] [email protected] Exemplos de outros operadores de atribuição d -= 4 (d = d - 4) e *= 5 (e = e * 5) f /= 3 (f = f / 3) g %= 9 (g = g % 9) 49 DSC/CCT/UFCG 3.12 Operadores Incremento/Decremento de Operador de Incremento (++) Uso em substituição de +=1 [email protected] [email protected] Operador de Decremento (--) Uso em substituição de -=1 Pré-incremento/ Pré-decremento Operador usado antes da variável ( ++c ou --c) Variável alterada (incrementada/decrementada) antes da avaliação da expressão 50 DSC/CCT/UFCG 3.12 Operadores Incremento/Decremento de [email protected] [email protected] Pós-incremento/Pós-decremento Operador usado após da variável (c++ ou c--) Expressão executada antes da (incremento/decremento) da variável alteração Se c igual a 5 printf( "%d", ++c ); Imprimirá 6 printf( "%d", c++ ); Imprimirá 5 Em todo caso, c assume agora o valor 6 51 DSC/CCT/UFCG 3.12 Operadores Incremento/Decremento de Quando a variável não está numa expressão [email protected] [email protected] Pré-incremento e pós-incremento apresentam mesmo efeito ++c; printf( “%d”, c ); Apresenta o mesmo efeito de c++; printf( “%d”, c ); 52 Exercício DSC/CCT/UFCG Faça um programa que calcula a média de um número indefinido de estudantes e determina a sua situação. Ao final, determine a média de todos alunos e o melhor aluno [email protected] [email protected] Para cada aluno: Obter o nome do aluno Obter duas notas de provas e uma de exercícios Calcule a média considerando que as provas têm peso 0.4 e a nota dos exercícios tem peso 0.2 Após o nome e as três notas coloque a média e um comentário: Se a média for igual ou maior que 7 acrescente “você passou por média” Se a média for entre 4 e 7 acrescente “você ficou para a final” Se a média for menor que 4 qcrescente “você está reprovado” Ao final, mostre a média de todos alunos e o nome e média do melhor aluno. 53 DSC/CCT/UFCG José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA [email protected] DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO