DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de.

Slides:



Advertisements
Apresentações semelhantes
INTRODUÇÃO A COMPUTAÇÃO ENG. CIVIL
Advertisements

Estruturas de Controle
Estruturas de Repetição
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INSTRUÇÕES DE CONTROLE – PARTE I Prof. Thiago Pereira Rique
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Introdução à Computação - Jorge Macêdo
Estruturas de Controle
Linguagem C Estruturas de Controle de Fluxos
Estrutura de Repetição
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Lógica de Programação Módulo II
Estruturas de Repetição
Linguagem C Estruturas de Seleção.
6.3 – Estruturas Repetitivas
Introdução a Computação e Cálculo Numérico
Linguagem de Programação I Parte II
Material Didático Proposto
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
© 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C (continuação)
PROGRAMAÇÃO I UNIDADE 4.
Estruturas de Dados Módulo 3 – Controle de Fluxo
Programação de Computadores
Introdução à Programação de Computadores
Instituto Federal de Santa Catarina
Aula 6 - Estruturas de Controle
Algoritmo e Programação
Aula 4 – Java – Prof. Marcelo Heitor
BC-0505 Processamento da Informação
Conceitos Básicos Luis Antonio Tavares
Algoritmos e Estruturas de Dados
Introdução a Algoritmos
Introdução à Linguagem C
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
Programação de PIC em C Exposição das funções básicas para
Wellington Felix.  Criada por Brian Kernighan e Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em Unix  C++ é uma extensão da.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 06) Prof. Alessandro Bernardo.
Introdução à Programação
Algoritmos e Estrutura de Dados I
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Introdução aos algoritmos de programação
Fundamentos de linguagens de programação
ALGORITMIA. ALGORITMO Conjunto de instruções ou acções que ao serem executadas, permitirão realizar uma determinada tarefa.
DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Farias José Eustáquio Rangel de Queiroz Roberto Medeiros de.
DSC/CCT/UFCG Carga Horária: 60 h Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Ulrich Schiel José Eustáquio Rangel.
DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de.
DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de.
DSC/CCT/UFCG Carga Horária: 60 h Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Ulrich Schiel José Eustáquio Rangel.
Introdução a Programação
Introdução à Programação
Algoritmo e Programação
Curso Técnico em Informática Professor Igor Vale.
Profº Antonio Carlos Marcelino de Paula
Profa. Maria Augusta Constante Puget
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 08) Prof. Alessandro Bernardo.
Profa. Maria Augusta Constante Puget
Exercícios Faça um algoritmos para trocar uma lampada queimada.
Comandos de Repetição (While, Do..While e For)
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Linguagem de Programação 11 Estruturas de Decisão e Repetição. Prof. Luiz José Hoffmann Filho
CONDICIONAL IF Desenvolvido pelo Mestrando Rodrigo Moreira Barreto – VHLab (Virtual Humans Simulation Laboratory – PUCRS) 1 Desenvolvido por: Rodrigo Moreira.
Algoritmos Aula 5 Estrutura de Decisão e Repetição. Prof. Luiz
1 Estruturas de Controle Algoritmos Algoritmos –Série de ações em uma ordem específica As ações executadas Ordem na qual as ações são executadas.
ALGORITMOS Profº Antonio Carlos Marcelino de Paula 1.
1Unidade 04 – Estruturas de Repetição Algoritmos e Linguagens de Programação Estruturas de Repetição Prof.: Guilherme Baião S. Silva
Aula 3 Comandos Condicionais Prof. Filipe Mutz.. Revisão Computadores e seus Componentes – Processador, Memórias Primárias e Secundárias – Sistema Operacional.
1 CCO 016 FUNDAMENTOS DE PROGRAMAÇÃO Universidade Federal de Itajubá Prof. Dr. Edison Oliveira de Jesus.
1 Estruturas Condicionais Aula – Tópico 3 Algoritmos e Estruturas de Dados I (DCC/003)
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Transcrição da apresentação:

DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Carga Horária: 60 h

DSC/CCT/UFCG 2 Tópicos 3.1Introdução 3.2Algoritmos 3.3Pseudocódigo 3.4Estruturas de Controle 3.5Estrutura de Seleção If 3.6Estrutura de Seleção If / Else 3.7Estrutura de Repetição While 3.8Formulação de Algoritmos: Estudo de Caso 1 (Repetição Controlada por Contador) 3.9Formulação de Algoritmos com Refinamento Top- down por Passos: Estudo de Caso 2 (Repetição Controlada por Sentinela) Tópicos 3.1Introdução 3.2Algoritmos 3.3Pseudocódigo 3.4Estruturas de Controle 3.5Estrutura de Seleção If 3.6Estrutura de Seleção If / Else 3.7Estrutura de Repetição While 3.8Formulação de Algoritmos: Estudo de Caso 1 (Repetição Controlada por Contador) 3.9Formulação de Algoritmos com Refinamento Top- down por Passos: Estudo de Caso 2 (Repetição Controlada por Sentinela) Introdução à Programação

DSC/CCT/UFCG 3 Tópicos 3.10Formulação de Algoritmos com Refinamento Top- down: Estudo de Caso 3 (Estruturas de Controle Aninhadas) 3.11Operadores de Atribuição 3.12Operadores de Incremento e Decremento Tópicos 3.10Formulação de Algoritmos com Refinamento Top- down: Estudo de Caso 3 (Estruturas de Controle Aninhadas) 3.11Operadores de Atribuição 3.12Operadores de Incremento e Decremento Introdução à Programação

DSC/CCT/UFCG Introdução  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  Conhecimento dos “blocos de construção” disponíveis  Uso de princípios adequados de programação  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  Conhecimento dos “blocos de construção” disponíveis  Uso de princípios adequados de programação

DSC/CCT/UFCG 5  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  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  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  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 3.2 Algoritmos

DSC/CCT/UFCG 6  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  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 3.3 Pseudocódigo

DSC/CCT/UFCG 7  Execução Seqüencial  Declarações executadas uma após a outra, na ordem pré-definida (na escrita)  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)  Execução Seqüencial  Declarações executadas uma após a outra, na ordem pré-definida (na escrita)  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) 3.4 Estruturas de Controle

DSC/CCT/UFCG 8  Bohm & Jacopini  Todos os programas escritos em termos de 3 estruturas de controle  Estruturas Seqüenciais   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  Bohm & Jacopini  Todos os programas escritos em termos de 3 estruturas de controle  Estruturas Seqüenciais   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 3.4 Estruturas de Controle

DSC/CCT/UFCG 9  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  Oval  Indicação do início ou término de um programa ou uma seção de código  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  Oval  Indicação do início ou término de um programa ou uma seção de código 3.4 Estruturas de Controle Incrementar j Início

DSC/CCT/UFCG 10  Estruturas de controle única entrada/ única 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  Estruturas de controle única entrada/ única 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 3.4 Estruturas de Controle

DSC/CCT/UFCG 11  Estrutura de Seleção  Uso na escolha entre cursos de ação alternativos  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  Estrutura de Seleção  Uso na escolha entre cursos de ação alternativos  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 3.5 Estrutura de Seleção if

DSC/CCT/UFCG 12  Estrutura de Seleção  Análise do Exemplo 1  Condição Verdadeira   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   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  Estrutura de Seleção  Análise do Exemplo 1  Condição Verdadeira   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   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 3.5 Estrutura de Seleção if

DSC/CCT/UFCG 13  Estrutura de Seleção  Declaração do Exemplo 1 em C if(media_final >= 7) printf(“Você passou por média\n");  Código em C apresenta uma representação próxima ao pseudocódigo  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  Estrutura de Seleção  Declaração do Exemplo 1 em C if(media_final >= 7) printf(“Você passou por média\n");  Código em C apresenta uma representação próxima ao pseudocódigo  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 ? V V F F 3.5 Estrutura de Seleção if

DSC/CCT/UFCG 14  A estrutura de seleção if é uma estrutura do tipo única entrada/ única saída Uma decisão pode ser tomada em qualquer expressão zero - falsa diferente de zero - Verdadeira 3.5 Estrutura de Seleção if Média final ≥ 7 ? V V F F Imprimir “V. passou por média”

DSC/CCT/UFCG 15  If  Só executa uma ação se a condição testada for Verdadeira  If/Else  Especifica um par de ações a serem executadas, uma caso a condição testada seja Verdadeira, outra caso esta seja Falsa  If  Só executa uma ação se a condição testada for Verdadeira  If/Else  Especifica um par de ações a serem executadas, uma caso a condição testada seja Verdadeira, outra caso esta seja Falsa 3.6 Estrutura de Seleção if-else

DSC/CCT/UFCG 16  If/Else  Exemplo em pseudocódigo 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”  If/Else  Exemplo em pseudocódigo 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” 3.6 Estrutura de Seleção if-else 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

DSC/CCT/UFCG 17  If/Else  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  If/Else  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 3.6 Estrutura de Seleção if-else

DSC/CCT/UFCG 18  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”); 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 ;  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”); 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 ; 3.6 Estrutura de Seleção if-else

DSC/CCT/UFCG 19  Diagrama de fluxo da estrutura If/Else  Estruturas 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  Diagrama de fluxo da estrutura If/Else  Estruturas 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 3.6 Estrutura de Seleção if-else Média final ≥ 7 ? V V F F Imprimir “V. passou por média” Imprimir “V. vai para a final ou foi reprovado por média”

DSC/CCT/UFCG 20  Pseudocódigo para uma estrutura If/Else 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”  Pseudocódigo para uma estrutura If/Else 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” 3.6 Estrutura de Seleção if-else

DSC/CCT/UFCG 21  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"); }  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"); } 3.6 Estrutura de Seleção if-else

DSC/CCT/UFCG 22  Instrução Composta  Análise do exemplo  Sem as chaves, a declaração printf(“Caso contrário, você foi reprovado\n"); seria executada em todos os casos  Com as chaves, a referida declaração só será executada se o if for falso  Instrução Composta  Análise do exemplo  Sem as chaves, a declaração printf(“Caso contrário, você foi reprovado\n"); seria executada em todos os casos  Com as chaves, a referida declaração só será executada se o if for falso 3.6 Estrutura de Seleção if-else

DSC/CCT/UFCG 23  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 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 mostre “você passou por média”  Se a média for entre 4 e 7 mostre “você ficou para a final”  Se a média for menor que 4 mostre “você está reprovado”  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 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 mostre “você passou por média”  Se a média for entre 4 e 7 mostre “você ficou para a final”  Se a média for menor que 4 mostre “você está reprovado” Exercício

DSC/CCT/UFCG 24  Blocos  Instruções compostas por declarações  Erros de Sintaxe  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  Blocos  Instruções compostas por declarações  Erros de Sintaxe  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 3.6 Estrutura de Seleção if-else

DSC/CCT/UFCG 25  Generalização do if/else  As condições lógicas true/false do if/else são generalizadas para múltiplos valores de uma variável  Exemplo  Atividades condicionais:  (Conceito=‘A’) imprimir “Aprovado com excelência”  (Conceito=‘B’) imprimir “Aprovado bom”  (Conceito=‘C’) imprimir “Aprovado”  (Conceito=‘D’) imprimir “Reprovado”  Generalização do if/else  As condições lógicas true/false do if/else são generalizadas para múltiplos valores de uma variável  Exemplo  Atividades condicionais:  (Conceito=‘A’) imprimir “Aprovado com excelência”  (Conceito=‘B’) imprimir “Aprovado bom”  (Conceito=‘C’) imprimir “Aprovado”  (Conceito=‘D’) imprimir “Reprovado” 3.6 Estrutura de Seleção swich

DSC/CCT/UFCG 26  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”); }  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”); } 3.6 Estrutura de Seleção swich

DSC/CCT/UFCG 27  Estrutura de Repetição  Especificação de uma ação a ser repetida enquanto uma dada condição permanecer 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  Estrutura de Repetição  Especificação de uma ação a ser repetida enquanto uma dada condição permanecer 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 3.7 Estrutura de Repetição while

DSC/CCT/UFCG 28  Exemplo while(item > 0) { total_a_pagar = total_a_pagar + custo_item; item = item -1; }  Exemplo while(item > 0) { total_a_pagar = total_a_pagar + custo_item; item = item -1; } 3.7 Estrutura de Repetição while Item > 0 ? F F V V Compute um item e adicione seu preço ao total a pagar

DSC/CCT/UFCG Exercício

DSC/CCT/UFCG 30  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.  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. 3.8 Formulação de Algoritmos I

DSC/CCT/UFCG 31  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  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 3.8 Formulação de Algoritmos I

DSC/CCT/UFCG 32  Repetição controlada por contador 3.8 Formulação de Algoritmos I 1 /* Programa 01 - Média de uma turma 2 de 40 alunos usando repetição 3 controlada por contador */ 4 #include main() 7{7{ 7{7{ 8 float nota, total, media; 9 int contador; 10 /* fase de inicialização */ 11 total = 0; 12 contador = 1; /* fase de processamento */ 15 while (contador <= 40) { 16 printf(“Digite nota: "); 17 scanf("%d", &nota); 18 total = total + nota; 19 contador = contador + 1; 20 } 22 /* fase de conclusão */ 23 media = total / 40; 24 printf(“A média da turma é %4.1d\n", media); return 0; /* indica que o programa terminou satisfatoriamente */ 26 return 0; /* indica que o programa terminou satisfatoriamente */ 27 } Exemplo de Saída Digite nota: 9,8 Digite nota: 9,7 Digite nota: 1,8 Digite nota: 9,7 Digite nota: 6,4 Digite nota: 8,8 Digite nota: 2,8 Digite nota: 7,8 Digite nota: 7,7 Digite nota: 8,5 Digite nota: 3,5 Digite nota: 5,1 Digite nota: 9,2 Digite nota: 5,9 Digite nota: 7,0 Digite nota: 6,3 Digite nota: 5,8 Digite nota: 6,8 Digite nota: 6,1 Digite nota: 7,0 Digite nota: 3,9 Digite nota: 7,8 Digite nota: 5,8 Digite nota: 7,2 Digite nota: 5,1 Digite nota: 8,8 Digite nota: 9,0 Digite nota: 2,9 Digite nota: 9,3 Digite nota: 9,1 Digite nota: 7,3 Digite nota: 3,8 Digite nota: 8,3 Digite nota: 9,4 Digite nota: 7,5 Digite nota: 8,9 Digite nota: 2,8 Digite nota: 4,8 Digite nota: 8,2 Digite nota: 6,6 A média da turma é 6,8 Exemplo de Saída Digite nota: 9,8 Digite nota: 9,7 Digite nota: 1,8 Digite nota: 9,7 Digite nota: 6,4 Digite nota: 8,8 Digite nota: 2,8 Digite nota: 7,8 Digite nota: 7,7 Digite nota: 8,5 Digite nota: 3,5 Digite nota: 5,1 Digite nota: 9,2 Digite nota: 5,9 Digite nota: 7,0 Digite nota: 6,3 Digite nota: 5,8 Digite nota: 6,8 Digite nota: 6,1 Digite nota: 7,0 Digite nota: 3,9 Digite nota: 7,8 Digite nota: 5,8 Digite nota: 7,2 Digite nota: 5,1 Digite nota: 8,8 Digite nota: 9,0 Digite nota: 2,9 Digite nota: 9,3 Digite nota: 9,1 Digite nota: 7,3 Digite nota: 3,8 Digite nota: 8,3 Digite nota: 9,4 Digite nota: 7,5 Digite nota: 8,9 Digite nota: 2,8 Digite nota: 4,8 Digite nota: 8,2 Digite nota: 6,6 A média da turma é 6,8

DSC/CCT/UFCG 33  Algoritmos com Refinamento Top-Down por Passos  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?  Algoritmos com Refinamento Top-Down por Passos  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? 3.9 Formulação de Algoritmos II

DSC/CCT/UFCG 34  Algoritmos com Refinamento Top-Down por Passos (Stepwise)  Solução do Problema  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)  Algoritmos com Refinamento Top-Down por Passos (Stepwise)  Solução do Problema  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) 3.9 Formulação de Algoritmos II

DSC/CCT/UFCG 35  Refinamento Top-Down por Passos  Representação do topo (top) em pseudocódigo 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  Refinamento Top-Down por Passos  Representação do topo (top) em pseudocódigo 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 3.9 Formulação de Algoritmos II

DSC/CCT/UFCG 36  Fases de diversos programas  Inicialização  Fase na qual são atribuídos valores iniciais às variáveis do programa  Processamento  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  Fases de diversos programas  Inicialização  Fase na qual são atribuídos valores iniciais às variáveis do programa  Processamento  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 3.9 Formulação de Algoritmos II

DSC/CCT/UFCG 37  Refinamento da Fase de Inicialização Inicialize as variáveis Inicialize total com zero 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”)  Refinamento da Fase de Inicialização Inicialize as variáveis Inicialize total com zero 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”) 3.9 Formulação de Algoritmos II

DSC/CCT/UFCG 38  Refinamento da 3 ª linha do pseudocódigo Calcule e imprima a média da turma Se contador for diferente de zero Calcule média dividindo total por contador Imprima média Caso contrário Imprima “Nenhuma nota foi digitada”  Refinamento da 3 ª linha do pseudocódigo Calcule e imprima a média da turma Se contador for diferente de zero Calcule média dividindo total por contador Imprima média Caso contrário Imprima “Nenhuma nota foi digitada” 3.9 Formulação de Algoritmos II

DSC/CCT/UFCG 39  Repetição controlada por sentinela 3.9 Formulação de Algoritmos II 1 /* Programa 02 – Média de uma turma 2 com repetição controlada por 3 sentinela */ 4 #include 5 6 int main() 7{7{ 8 float media, nota, total; /* novo tipo de dados */ 9 int contador; /* fase de inicialização */ 12 total = 0; 13 contador = 0; /* fase de processamento */ 16 printf( “Digite nota, -1 ao final: " ); 17 scanf( "%f", &nota ); while ( nota != -1 ) { 20 total = total + nota; 21 contador = contador + 1; 22 printf( “Digite nota, -1 ao final: " ) 23 scanf( "%f", &nota ); 24 } /* fase de finalização */ 27 if ( contador != 0 ) { 28 media = ( float ) total / contador; 29 printf( “A média da turma é %.2f", media ); 30 } 31 else 32 printf( "Nenhuma nota foi digitada\n" ); return 0; /* indica que o programa terminou satisfatoriamente */ 35 }

DSC/CCT/UFCG 40  Repetição controlada por sentinela 3.9 Formulação de Algoritmos II 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 A média da turma é 7,0 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 A média da turma é 7,0 Situação totalizando 39 notas (observe a última entrada do usuário, -1 )

DSC/CCT/UFCG 41  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)  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) 3.10 Estruturas de Controle Aninhadas

DSC/CCT/UFCG 42  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  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  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  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 Estruturas de Controle Aninhadas

DSC/CCT/UFCG 43  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 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  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 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 3.10 Estruturas de Controle Aninhadas

DSC/CCT/UFCG 44  Refinamento da 2 ª linha Enquanto contalunos for menor ou igual a 30 Receba o próximo resultado da prova Se o aluno foi aprovado Adicione um a aprovados Caso contrário Adicione um a reprovados Adicione um a contalunos  Refinamento da 2 ª linha Enquanto contalunos for menor ou igual a 30 Receba o próximo resultado da prova Se o aluno foi aprovado Adicione um a aprovados Caso contrário Adicione um a reprovados Adicione um a contalunos 3.10 Estruturas de Controle Aninhadas

DSC/CCT/UFCG 45  Refinamento da 3 ª linha Imprima o número de aprovados Imprima o número de reprovados Se mais de 25 alunos tiverem sido aprovados Imprima “A mensalidade será aumentada em 10%”  Refinamento da 3 ª linha Imprima o número de aprovados Imprima o número de reprovados Se mais de 25 alunos tiverem sido aprovados Imprima “A mensalidade será aumentada em 10%” 3.10 Estruturas de Controle Aninhadas

DSC/CCT/UFCG 46  Estruturas de Controle Aninhadas 3.10 Estruturas de Controle Aninhadas 1 /* Programa 03 - Análise dos resultados 2 results */ 3 #include int main() 6{6{ 6{6{ 7 /*initialização */ 8 int aprovados = 0, reprovados = 0, contalunos = 1, resultado; /*Execução */ 11 while (contalunos <= 30) { 12 printf(“Digite resultado ( 1 = aprovado, 2 = reprovado ): "); 13 scanf("%d", &resultado); if ( resultado == 1 ) /*if/else aninhado no while*/ 16 aprovados = aprovados + 1; 17 else 18 reprovados = reprovados + 1; contalunos = contalunos + 1; 21 } 22 /* Finalização */ 23 printf( “Aprovados %d\n", aprovados ); 24 printf( “Reprovados %d\n", reprovados ); if ( aprovados > 25 ) 27 printf( “A mensalidade será aumentada em 10%\n" ); return 0; /* finalização satisfatória */ 30 }

DSC/CCT/UFCG 47  Estruturas de Controle Aninhadas 3.10 Estruturas de Controle Aninhadas Exemplo de Saída Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 2 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 2 Digite resultado: 2 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Aprovados: 23 Aprovados: 23 Reprovados: 7 Reprovados: 7 Exemplo de Saída Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 2 Digite resultado: 1 Digite resultado : 2 Digite resultado: 1 Digite resultado: 1 Digite resultado : 1 Digite resultado: 1 Digite resultado: 1 Digite resultado : 2 Digite resultado: 2 Digite resultado: 2 Digite resultado : 1 Digite resultado: 1 Aprovados: 23 Aprovados: 23 Reprovados: 7 Reprovados: 7

DSC/CCT/UFCG 48  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  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  Comentários  Processamento de 30 resultados de teste pelo programa escrito  Uso de um laço controlado por contador  Uso de dois contadores  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 Estruturas de Controle Aninhadas

DSC/CCT/UFCG 49  Operadores de Atribuição  Abreviação de expressões de atribuição  Exemplo em C c = c + 3;  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;  Operadores de Atribuição  Abreviação de expressões de atribuição  Exemplo em C c = c + 3;  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; 3.11 Operadores de Atribuição

DSC/CCT/UFCG 50  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)  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) 3.11 Operadores de Atribuição

DSC/CCT/UFCG 51  Operador de Incremento ( ++ )  Uso em substituição de +=1  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  Operador de Incremento ( ++ )  Uso em substituição de +=1  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 3.12Operadores de Incremento/Decremento

DSC/CCT/UFCG 52  Pós-incremento/Pós-decremento  Operador usado após da variável ( c++ ou c-- )  Expressão executada antes da alteração (incremento/decremento) da variável  Se c igual a 5 printf( "%d", ++c );  Imprimirá 6 printf( "%d", c++ );  Imprimirá 5  Em todo caso, c assume agora o valor 6  Pós-incremento/Pós-decremento  Operador usado após da variável ( c++ ou c-- )  Expressão executada antes da alteração (incremento/decremento) da variável  Se c igual a 5 printf( "%d", ++c );  Imprimirá 6 printf( "%d", c++ );  Imprimirá 5  Em todo caso, c assume agora o valor Operadores de Incremento/Decremento

DSC/CCT/UFCG 53  Quando a variável não está numa expressão  Pré-incremento e pós-incremento apresentam mesmo efeito ++c; printf( “%d”, c );  Apresenta o mesmo efeito de c++; printf( “%d”, c );  Quando a variável não está numa expressão  Pré-incremento e pós-incremento apresentam mesmo efeito ++c; printf( “%d”, c );  Apresenta o mesmo efeito de c++; printf( “%d”, c ); 3.12Operadores de Incremento/Decremento

DSC/CCT/UFCG 54  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  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.  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  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. Exercício

DSC/CCT/UFCG José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria DEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO UNIVERSIDADE FEDERAL DE CAMPINA GRANDE CENTRO DE CIÊNCIAS E TECNOLOGIA