500 likes | 669 Views
Lógica de Programação. Estruturas de Controle. Estruturas de Controle. Nesta aula Estrutura Sequencial Estrutura de Seleção Estrutura de Repetição Objetivos Apresentar o conceito de estrutura sequencial de fluxo de execução
E N D
Lógica de Programação Estruturas de Controle
Estruturas de Controle • Nesta aula • Estrutura Sequencial • Estrutura de Seleção • Estrutura de Repetição • Objetivos • Apresentar o conceito de estrutura sequencial de fluxo de execução • Explicar a aplicabilidade das estruturas de seleção, suas variações, combinações e equivalências • Apresentar as estruturas de repetição, suas particularidades e equivalências
Estrutura Sequencial • O Fluxo de Controle segue a mesma sequência linear da nossa escrita, ou seja: • De cima para baixo; • Da esquerda para direita • Cada ação é seguida de um ; • Objetiva separar uma ação da outra • Indica que a próxima ação da sequência deve ser executada
Estrutura sequencial Algoritmo 3.1 – Modelo geral início // declaração de variáveis // corpo do algoritmo ação 1; ação 2; ação 3; . . . ação n; fim. // fim do algoritmo
Estrutura sequencial Algoritmo 3.2 - Média Aritmética início // declaração de variáveis real: N1, N2, N3, N4,// notas bimestrais MA;// média anual // entrada de dados leia (N1, N2, N3, N4); // processamento MA ¬ (N1 + N2 + N3 + N4) / 4; // saída de dados escreva (MA); fim.
Estruturas de Seleção • São aquelas que permitem alterar o Fluxo de Execução, de forma a selecionar qual parte deve ser executada • Essa “decisão” de execução é tomada a partir de uma condição, que pode resultar apenas em Verdade ou Falsidade • Uma condição é representada por expressões relacionais ou lógicas • As estruturas de seleção podem ser classificadas em simples, compostas ou encadeadas
Seleção Simples se <condição> então início// início do bloco verdade comando 1; comando 2; ... comando n; fim; // fim do bloco verdade fimse; • Quando a <condição> for verdadeira o “bloco verdade” é executado • Quando a <condição> for falsa o “bloco verdade” não é executado
Seleção Simples Algoritmo 3.3 - Média Aritmética com Aprovação início // declaração de variáveis real: N1, N2, N3, N4,// notas bimestrais MA;// média anual // entrada de dados leia (N1, N2, N3, N4); // processamento MA ¬ (N1 + N2 + N3 + N4) / 4; // saída de dados escreva (MA); se (MA >= 7) então escreva (“Aluno Aprovado !”); fimse; fim.
Seleção Composta se <condição> então início// início do bloco verdade comando 1; comando n; fim; // fim do bloco verdade senão início// início do bloco falsidade comando 1; comando n; fim; // fim do bloco falsidade fimse; • Quando a <condição> for verdadeira o “bloco verdade” é executado • Quando a <condição> for falsa o “bloco falsidade” é executado
Seleção Composta Algoritmo 3.4 - Média Aritmética com aprovação e reprovação início // declaração de variáveis real: N1, N2, N3, N4,// notas bimestrais MA;// média anual leia (N1, N2, N3, N4); MA ¬ (N1 + N2 + N3 + N4) / 4; escreva (MA); se (MA >= 7) então início escreva (“Aluno Aprovado !”); escreva (“Parabéns !”); fim; senão início escreva (“Aluno Reprovado !”); escreva (“Estude mais !”); fim; fimse; fim.
Seleção Encadeada • Ocorre quando uma seleção tem como ação uma outra seleção • Uma seleção encadeada pode ser: • Heterogênea: Quando não é possível identificar padrão de comportamento • Homogênea: Quando é possível identificar padrão de comportamento • se – então – se: quando depois de cada então ocorre outro se • se – senão – se: quando depois de cada senão ocorre outro se
Seleção Encadeada • Dados três valores A, B, C, verificar se eles podem ser os comprimentos dos lados de um triângulo • Caso positivo, verificar se compõem • Triângulo equilátero • Triângulo isósceles • Triângulo escaleno A B C
Seleção Encadeada • Dados três valores A, B, C, verificar se eles podem ser os comprimentos dos lados de um triângulo • Caso positivo, verificar se compõem • Triângulo equilátero – três lados iguais • Triângulo isósceles – dois lados iguais • Triângulo escaleno – todos os lados diferentes A B C
Seleção Encadeada • Triângulo: (A<B+C) e (B<A+C) e (C<A+B) • Equilátero: (A=B) e (B=C) • Isósceles: (A=B) ou (B=C) ou (A=C) • Escaleno: (A<>B) e (B<>C) e (A<>C)
Seleção Encadeada Heterogênea Algoritmo 3.5 – Tipos de Triângulo início inteiro: A, B, C;// tamanho dos lados leia (A, B, C); se (A<B+C) e (B<A+C) e (C<A+B) então se (A=B) e (B=C) então escreva (“Triangulo Equilátero”); senão se (A=B) ou (B=C) ou (A=C) então escreva (“Triângulo Isósceles”); senão escreva (“Triangulo Escaleno”); fimse; fimse; senão escreva (“Estes valores não formam um triângulo”); fimse; fim.
Seleção Encadeada Homogênea se – então – se se <Cond1> então se <Cond2> então se <Cond3> então se <Cond4> então W; fimse; fimse; fimse; fimse; É equivalente a: se <Cond1> e <Cond2> e <Cond3> e <Cond4> então W; fimse;
Seleção Encadeada Homogênea se X=V1 então C1; fimse; se X=V2 então C2; fimse; se X=V3 então C3; fimse; se X=V4 então C4; fimse; se X=V1 então C1; senão se X=V2 então C2; senão se X=V3 então C3; senão se X=V4 então C4; fimse; fimse; fimse; fimse; se – senão – se
Seleção de Múltipla Escolha • Seleções encadeadas homogêneas se-senão-se são bastante frequentes para o tratamento de listas de valor • Para simplificar a escrita, pode-se utilizar o comando escolha. • Adaptando o algoritmo anterior: escolha X caso V1: C1; caso V2: C2; caso V3: C3; caso V4: C4; fimescolha;
Seleção de Múltipla Escolha • Construa um algoritmo que, tendo como dados de entrada o preço de um produto e seu código de origem, mostre o preço junto de sua procedência • Caso o código não seja nenhum dos especificados, o produto deve ser encarado como importado • Siga a tabela de códigos abaixo
Seleção de Múltipla Escolha Algoritmo 3.6 – Múltipla Escolha início real: Preço; inteiro: Origem; leia (Preço, Origem); escolha Origem caso 1: escreva (Preço, “ – produto do Sul”); caso 2: escreva (Preço, “ – produto do Norte”); caso 3: escreva (Preço, “ – produto do Leste”); caso 4: escreva (Preço, “ – produto do Oeste”); caso 7, 8, 9: escreva (Preço, “ – produto do Sudeste”); caso 10..20: escreva (Preço, “ – produto do Centro-Oeste”); caso 5, 6, 25..50: escreva (Preço, “ – produto do Nordeste”); caso contrário: escreva (Preço, “ – produto importado”); fimescolha; fim.
Estruturas de Repetição • São aquelas que permitem executar mais de uma vez (repetir) um determinado trecho do algoritmo • O trecho do algoritmo em repetição é também chamado de laço (ou “loop”) • As repetições devem ser sempre finitas • Quanto a quantidade de repetições, os laços podem ser • Pré-determinados: Sabe-se antes a quantidade de execuções • Indeterminados: Não se conhece a quantidade de execuções • Quanto ao critério de parada, os laços podem utilizar • Teste no início • Teste no final • Variável de controle
Repetição com Teste no Início • Laço que verifica antes de cada execução, se é “permitido” executar o trecho do algoritmo • Trata-se de um laço que se mantém repetindo enquanto uma dada condição permanecer verdadeira enquanto <condição> faça comando 1; comando 2; ... comando n; fimenquanto;
Repetição com Teste no Início • Contador: Variável que reproduz o processo de contagem início inteiro: CON; CON ¬ 0; enquanto CON < 3 faça CON ¬ CON + 1; fimenquanto; fim. CON 0 1 2 3
Repetição com Teste no Início Algoritmo 3.7 - Média Aritmética para 50 alunos início // declaração de variáveis real: N1, N2, N3, N4,// notas bimestrais MA;// média anual inteiro: CON;// contador CON ¬ 0; // inicialização do contador enquanto (CON < 50) faça// teste da condição de parada leia (N1, N2, N3, N4); MA ¬ (N1 + N2 + N3 + N4) / 4; escreva (MA); se (MA >= 7) então escreva (“Aluno Aprovado. Parabéns !”); senão escreva (“Aluno Reprovado. Estude mais !”); fimse; CON ¬ CON + 1; // incremento do contador fimenquanto; fim.
Repetição com Teste no Início • Acumulador: Variável que reproduz o processo de acumulação início inteiro: CON, X, ACM; CON ¬ 0; ACM ¬ 0; enquanto CON < 3 faça CON ¬ CON + 1; leia (X); ACM ¬ ACM + X; fimenquanto; fim. CON ACM X 0 3 1 2 0 5 7 11 5 2 4
Repetição com Teste no Início Algoritmo 3.8 - Média Aritmética da turma de 50 alunos início // declaração de variáveis real: MA,// média anual de dado aluno ACM,// Acumulador MAT;// Média Anual da Turma inteiro: CON;// contador CON ¬ 0; // inicialização do contador ACM ¬ 0; // inicialização do acumulador enquanto (CON < 50) faça// teste da condição de parada leia (MA); ACM ¬ ACM + MA; // soma em ACM os valores lidos em MA CON ¬ CON + 1; // incremento do contador fimenquanto; MAT¬ ACM / 50; // calculo da média anual da turma escreva (“média anual da turma = “, MAT); fim.
Repetição com Teste no Final • Laço que verifica depois de cada execução, se é “permitido” continuar executando o trecho do algoritmo • Trata-se de um laço que se mantém repetindo até que uma dada condição se torne verdadeira repita comando 1; comando 2; ... comando n; até <condição>;
Repetição com Teste no Final Algoritmo 3.9 - Média Aritmética da turma com Repita início // declaração de variáveis real: MA,// média anual de dado aluno ACM,// Acumulador MAT;// Média Anual da Turma inteiro: CON;// contador CON ¬ 0; // inicialização do contador ACM ¬ 0; // inicialização do acumulador repita leia (MA); ACM ¬ ACM + MA; // soma em ACM os valores lidos em MA CON ¬ CON + 1; // incremento do contador até (CON >= 50); // teste da condição de parada MAT¬ ACM / 50; // calculo da média anual da turma escreva (“média anual da turma = “, MAT); fim.
Repetição com Variável de Controle • Laço simplificado para utilização em repetições de quantidade predeterminada • Incorpora internamente o funcionamento de um contador de repetições para V de vi até vf passo p faça comando 1; comando 2; ... comando n; fimpara;
Repetição com Teste no Final Algoritmo 3.10 - Média Aritmética da turma com Para início // declaração de variáveis real: MA,// média anual de dado aluno ACM,// Acumulador MAT;// Média Anual da Turma inteiro: V;// contador ACM ¬ 0; // inicialização do acumulador para V de 1 até 50 passo 1 faça leia (MA); ACM ¬ ACM + MA; // soma em ACM os valores lidos em MA fimpara; MAT¬ ACM / 50; // calculo da média anual da turma escreva (“média anual da turma = “, MAT); fim.
Comparação entre Estruturas de Repetição • Aprendemos 3 maneiras de construir laços de repetição • É importante perceber que existem laços mais adequados ou convenientes para cada situação
Exercício • Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de uma adega, tendo como dados de entrada tipos de vinho, sendo • T – vinho tinto • B – vinho branco • R – vinho rosê • Especifique a porcentagem de cada tipo sobre o total geral de vinhos • A quantidade de vinhos é desconhecida • Utilize como finalizador • F – fim
Lógica de Programação Estruturas de Dados
Estruturas de Dados • Tópicos • Vetores • Matrizes • Registros • Registro de Conjuntos • Conjuntos de Registros
Estruturas de Dados • Os tipos primitivos (inteiro, real, caracter e lógico) não são suficientes para representar todos os tipos de informação. • Particularmente quando temos mais de uma informação relacionada. Ex: Lista dos nomes dos alunos de uma sala, endereço de alguém etc. • Utilizaremos os tipos primitivos para construir outras estruturas de dados mais complexas.
Vetores • Também denominados Estruturas compostas homogêneas unidimensionais • Permitem a manipulação de um conjunto de informações de um mesmo tipo primitivo • Declaração : tipo CLASSE = vetor [1 .. 40] de reais; CLASSE: VCLASSE; Onde: • CLASSE: Nome do tipo que está sendo construído • 1: Limite inicial do vetor • 40: Limite final do vetor • reais: Tipo primitivo base do vetor • VCLASSE: Nome da variável criada cf o tipo construído
Vetores • Manipulação: inteiro: A; VCLASSE [ 7 ] ¬ 6,5; VCLASSE [ 2 ] ¬ 7,8; VCLASSE [ 4 ] ¬ 5,3; leia (A); // supondo que foi informado 6 VCLASSE [ A ] ¬ 9,8; VCLASSE [ A-1 ] ¬ 9,1; leia ( VCLASSE [ A+3 ] ); // supondo que foi informado 4,7 VCLASSE 7,8 5,3 9,1 9,8 6,5 4,7 1 2 3 4 5 6 7 8 9 38 39 40
Vetores Algoritmo 4.1 – Notas acima da média usando variáveis simples início inteiro: NotaAcima; real: A, B, C, D, E, F, G, H, I, J, Média; NotaAcima ¬ 0; leia (A,B,C,D,E,F,G,H,I,J); Média ¬ (A + B + C + D + E + F + G + H + I + J)/10; se (A > Média) então NotaAcima ¬ NotaAcima + 1; fimse; se (B > Média) então NotaAcima ¬ NotaAcima + 1; fimse; . . . se (J > Média) então NotaAcima ¬ NotaAcima + 1; fimse; escreva (NotaAcima); fim.
Vetores Algoritmo 4.2 – Notas acima da média usando vetor início tipo Classe = vetor [1 .. 10] de reais; Classe: VClasse; inteiro: NotaAcima, X; real: Soma, Média; Soma ¬ 0; NotaAcima ¬ 0; para X de 1 até 10 passo 1 faça leia ( VClasse[X] ); Soma ¬ Soma + VClasse[X]; fimpara; Média ¬ Soma / 10; para X de 1 até 10 passo 1 faça se ( VClasse[X] > Média ) então NotaAcima ¬ NotaAcima + 1; fimse; fimpara; escreva (NotaAcima); fim.
Matrizes • Também denominadas Estruturas compostas homogêneas multidimensionais • Permitem a manipulação de um conjunto de informações de um mesmo tipo primitivo • Declaração: tipo SALA = matriz [1 .. 4, 1 .. 4] de inteiros; SALA: MSALA; Onde: • SALA: Nome do tipo que está sendo construído • 1: Limite inicial da primeira e da segunda dimensão • 4: Limite final da primeira e da segunda dimensão • inteiros: Tipo primitivo base da matriz • MSALA: Nome da variável criada cf o tipo construído
Matrizes • Manipulação: MSALA 1 2 3 4 inteiro : A, B; MSALA [ 2, 3 ] ¬ 5; 7 12 1 MSALA [ 3, 2 ] ¬ 6; 10 5 2 MSALA [ 1, 2 ] ¬ 7; A ¬ 4; 6 11 B ¬ 3; 3 MSALA [ A, B ] ¬ 8; 9 8 MSALA [ A, B-2 ] ¬ 9; 4 MSALA [ A-2, B-2 ] ¬ 10; MSALA [ B, A ] ¬ 11; MSALA [ B-2, A ] ¬ 12;
Matrizes • Exemplo: Cartão da Loteria Esportiva
Matrizes Algoritmo 4.3 – Loteria Esportiva, jogo mais marcado início tipo Loteria = vetor [1 .. 14, 1 .. 3] de caracteres; Loteria: mLoteria; inteiro: I, J, maisMar, nJogo, marLin; maisMar ¬ 0; para I de 1 até 14 faça marLin ¬ 0; para J de 1 até 3 faça se mLoteria[ I, J] =‘x’; então marLin ¬ marLin + 1; fimse; fimpara; se marLin > maisMar então maisMar ¬ marLin; nJogo ¬ I; fimse; fimpara; escreva (“Jogo mais marcado: “, nJogo, “com “, maisMar); fim.
Matrizes Algoritmo 4.4 – Loteria Esportiva, coluna mais marcada início tipo Loteria = vetor [1 .. 14, 1 .. 3] de caracteres; Loteria: mLoteria; inteiro: I, J, maisMar, nColuna, marCol; maisMar ¬ 0; para J de 1 até 3 faça marCol ¬ 0; para I de 1 até 14 faça se mLoteria[ I, J] =‘x’; então marCol ¬ marCol + 1; fimse; fimpara; se marCol > maisMar então maisMar ¬ marCol; nColuna ¬ J; fimse; fimpara; escreva (“Coluna mais marcada: “, nColuna, “com “, maisMar); fim.
Registros • Também denominadas Estruturas compostas heterogêneas • Permitem a manipulação de um conjunto de informações de tipos primitivos diferentes Exemplo: Passagem de ônibus Número: 0001 De: ____________________ Para: _______________________ Data: ____ / ____ / _______ Horário: ________ : _________ Poltrona: ____________ Distância: ____________ km
Registros • Declaração: tipo regPassagem = registro inteiro: Número; caracter: Origem, Destino, Data, Horário; inteiro: Poltrona; real: Distância; fimregistro; regPassagem: Passagem; • Manipulação: leia (Passagem); escreva (Passagem); leia (Passagem.Origem); escreva (Passagem.Destino); Passagem.Distância ¬ 500;
Registro de Conjuntos • Combinação de estruturas heterogêneas com homogêneas • Podem ser obtidas ao incluir num registro outro tipo de dados construído Exemplo: Registro de Estoque com Baixa semanal Nome: _____________________________________________ Código: ___________________ Preço: __________________ Baixa 1 2 3 4 5 6
Registro de Conjuntos • Declaração: tipo vDias = vetor [ 1 .. 6 ] de inteiros; tipo regProd = registro caracter: Nome; inteiro: Código; real: Preço; vDias: Baixa; fimregistro; regProduto: Produto; • Manipulação: escreva (Produto.Nome); escreva (Produto.Código); escreva (Produto.Preço); escreva (Produto.Baixa [ 1 ]); Produto.Baixa [ 4 ] ¬ 500;
Conjunto de Registros • Combinação de estruturas homogêneas com heterogêneas • Podem ser obtidas ao formar um conjunto com outro tipo de dados construído Exemplo: Ônibus formado por Passagem Número: 0001 De: ____________________ Para: _______________________ Data: ____ / ____ / _______ Horário: ________ : _________ Poltrona: ____________ Distância: ____________ km 1 2 3 4 44
Conjunto de Registros • Declaração: tipo regPassagem = registro inteiro: Número; caracter: Origem, Destino, Data, Horário; inteiro: Poltrona; real: Distância; fimregistro; Tipo vetPassagem = vetor [ 1 .. 44 ] de regPassagem; vetPassagem: Ônibus; • Manipulação: leia (Passagem [ 7 ]); escreva (Passagem [ 4 ]); leia (Passagem [12].Origem); escreva (Passagem [21].Destino); Passagem [34].Distância ¬ 500;