Prévia do material em texto
SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL SENAC - RIO GRANDE DO SUL LÓGICA DE PROGRAMAÇÃO Porto Alegre, 2003. LÓGICA DE PROGRAMAÇÃO 1ª Edição Elaboração e Edição SENAC - Rio Grande do Sul Documento produzido para uso interno do SENAC - Rio Grande do Sul SENAC.RS - Departamento Regional no Rio Grande do Sul Lógica de Programação 1ª edição Porto Alegre: SENAC-RS, 2003. 68 pp. LÓGICA DE PROGRAMAÇÃO 3 CONTEÚDO PROGRAMÁTICO Esta apost i la foi desenvolvida pelo SENAC/RS, para apoio ao aluno durante o desenvolvimento do curso de Lógica de Programação. Este material é composto de bases teóricas que abrangem o conteúdo programático do curso e exercícios para sua f ixação. Além do conteúdo programático, abaixo descri to, este material poderá conter tópicos adicionais que se destinam a complementar o aprendizado do aluno. O conteúdo programático deste curso foi projetado para uma carga horária de 60 horas, com o propósito de, ao f inal do curso, tornar o aluno apto ao uso do software e de suas ferramentas para a real ização dos seus trabalhos. O conteúdo abrange os seguintes i tens: Diferenças entre os Ambientes Operacionais: Texto e Gráfico Noções de Programação Orientada ao Objeto e ao Evento Conceito de Programação Estruturada e Modular Definir o Conceito ERES Algori tmos: Definição e ut i l ização Tipos de Algoritmos Formas de Representação Algori tmos Naturais e Estruturados Elementos usados na construção de Algori tmos Constantes e Variáveis Expressões Operandos e Operadores Tabela Verdade Comando de Atribuição Inicio de Estruturas Conceituação Estrutura Seqüencial Estrutura de Seleção Simples Estrutura de Seleção Composta Estrutura de Seleção Múlt ipla Estruturas de Repetição Contador Fixo e Flag Como usar o ILA e o Editor Q (Qedit) LÓGICA DE PROGRAMAÇÃO 4 SUMÁRIO Conteúdo programát ico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Concei tos In iciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Sof tware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Lóg ica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Lógica de programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Diferença Entre Sistemas Operacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Programação Orientada ao Objeto (POO) e programação Orientada ao Evento (POE). . . . . . . . 10 Paradigma da Programação Or ientada a Eventos/Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 O que é um Evento? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Como são Desencadeados os Eventos? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Quem Gerenc ia os Eventos? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 O que é uma Classe de Objeto? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 O que é um Obje to? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Como ut i l izar ob je tos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Programação estruturada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Algor i tmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 O que é um Algor i tmo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Formas de Representação de um Algor i tmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Vantagens e Desvantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 A lgor i tmos natura is . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Algor i tmo Natura l Comparado com Algor i tmo Est ruturado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Elementos Usados nos Algor i tmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Operandos e Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Operandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Estruturas de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Est ru tura Seqüenc ia l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Estru tura de Se leção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Estru tura de Seleção S imples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Estru tura de Seleção Composta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Estru tura de Seleção Múl t ip la . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 LÓGICA DE PROGRAMAÇÃO 5 Est ru tura de Repet ição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Est ru tura Faca Enquanto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Estru tura para prox imo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Exemplo de repet ição por contador f ixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Exemplo de repet ição por f lag de resposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Exemplo de repet ição por f lag predeterminado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Procedimentos e Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Modular ização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Módulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Di ferença ent re Procedimento e Função . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Procedimentos com Parâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Passagem de parâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Exemplos de Procedimento e Função . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Recurs iv idade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Vetores e Matr izes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 O que são Vetores e Mat r izes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Algori tmos para Manipular Vetores e Matr izes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Apêndice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Exemplo de Algor i tmo para Ordenar um Vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Apêndice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Comandos do Interpretador da L inguagem dos Algor i tmos ( i la ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Exercícios de Raciocínio Lógico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Exercíc ios com Algor í tmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 LÓGICA DE PROGRAMAÇÃO 6 CONCEITOS INICIAIS Desde os primórdios, o homem vem tentando resolver seus problemas com maior rapidez e o menor esforço possíveis, procurando automatizar as tarefas rotineiras. Isso possibi l i tou o aparecimento de instrumentos como a roda, roldana, alavanca, carro e até o computador. No entanto as tarefas que devem ser real izadas pelo computador, de forma automática, têm de ser anteriormente pensadas e colocadas em uma seqüência de ações para, posteriormente, serem inseridas na máquina. A essa seqüência de ações denomina-se Programa e à fase de formular soluções que gerem programas denomina-se Lógica de Programação . Programar é basicamente Construir Algoritmos . A meta principal de qualquer programador é resolver problemas por meio de soluções lógicas para obter resultados eficientes (corretos) e eficazes (com qual idade). Porém, se as soluções não forem bem planejadas (passo a passo), com certeza essa meta não será at ingida. Antes de iniciar o estudo de Lógica de Programação , conheça alguns conceitos básicos: SOFTWARE Software é o conjunto dos programas quecomandam o funcionamento do Hardware . Programas são fei tos a part i r de algori tmos (objeto de estudo deste curso), seqüências de instruções/comandos para se at ingir um objetivo. Depois de pronto, o algoritmo é convert ido para uma l inguagem de programação . O produto dessa conversão é um programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 7 LÓGICA As pessoas uti l izam a lógica no cotidiano sem perceber; chegam mesmo a citá-la, sem entender direi to o seu signif icado. Segundo o dicionário Aurél io , a lógica é a “coerência de raciocínio, de idéias”, ou ainda a “seqüência coerente, regular e necessária de acontecimentos, de coisas”. Você pode perceber isso, nos exemplos a seguir: O número 3 é menor que o número 5. O número 7 é maior que o número 5. Logo, o número 3 é menor que os números 5 e 7. Quando chove, não é preciso regar as plantas do jardim. Hoje choveu. Logo, hoje não é preciso regar as plantas do jardim. O Brasi l f ica na América do Sul. A América do sul f ica no continente americano. Logo, os brasi leiros são americanos. Às vezes o raciocínio funciona desordenadamente. Quantas vezes você já ouviu as frases: “E se acontecer aqui lo?”, ou “É, mas eu não t inha pensado nisso!” Neste exemplo, estão descri tas ações de quem vai a um banco; entretanto, veja se seria possível ret i rar o dinheiro obedecendo à seqüência descri ta. 1 Sair do banco. 2 Aguardar a vez de ser atendido. 3 Entrar na f i la do caixa. 4 Digi tar a senha. 5 Entrar no banco 6 Informar o valor a ser ret irado. 7 Procurar a f i la do caixa. 8 Pegar o comprovante de saque, o cartão eletrônico e o dinheiro. 9 Entregar o cartão eletrônico ao funcionário que atende no caixa. 10 Conferir o valor em dinheiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 8 Você conseguir ia ret i rar o dinheiro? Com certeza não, pois, embora as ações estejam corretas, a seqüência está errada. A primeira ação é sair do banco . Como se pode reti rar dinheiro de um banco estando fora dele? Agora observe as mesmas ações na seqüência correta. 1 Entrar no banco. 2 Procurar a f i la do caixa. 3 Entrar na f i la do caixa. 4 Aguardar a vez de ser atendido. 5 Entregar o cartão eletrônico ao funcionário que atende no caixa. 6 Informar o valor a ser ret irado. 7 Digi tar a senha. 8 Pegar o comprovante de saque, o cartão eletrônico e o dinheiro. 9 Conferir o valor em dinheiro. 10 Sair do banco Uti l iza-se a lógica para ordenar e corrigir pensamentos ou ações voltados para a solução de problemas. LÓGICA DE PROGRAMAÇÃO Falar em Lógica de Programação s ignif ica apenas contextual izar a lógica na programação de computadores, buscando a melhor seqüência de ações para solucionar determinado problema. Na programação de computadores, o nome dessa seqüência de ações é Algoritmo , que é, de maneira bem simples, a seqüência de passos ou ações para at ingir um objet ivo. Já ação é um fato que, a part i r de um estado inicial , após um período de tempo f inito, produz um estado f inal previsível e def inido. Por exemplo, abrir uma porta é uma ação. No exemplo acima você pode observar que, ao objeto (porta), no estado inicial (porta fechada), é apl icada a ação (abrir) por um tempo determinado (segundos), levando ao estado f inal (porta aberta), previsível e def inido (pois é esperado que, quando se abre algo, principalmente qualquer porta, no f inal, ela esteja aberta). OBJETIVO O objetivo deste curso é proporcionar a apropriação de conhecimentos capazes de reconhecer, ut i l izar e saber a f inal idade e o funcionamento das técnicas, ferramentas e elementos uti l izados na construção de algori tmos para que possamos ordenar, desenvolver e aprimorar o raciocínio lógico apl icado na solução de problemas do cotidiano. LÓGICA DE PROGRAMAÇÃO 9 DIFERENÇA ENTRE SISTEMAS OPERACIONAIS O Sistema Operacional no ambiente Texto, o DOS, entre outros, tem como lógica a tr i logia C.O.D. - Comando, Origem e Destino. Exemplo: O Sistema Operacional no ambiente Gráf ico, o Windows, entre outros, tem como lógica a tr i logia O.E.A. - Objeto, Evento e Ação. É necessário exist ir um Objeto (ex. Um botão), um Evento (ex. Um cl ique neste botão), para executar uma Ação (ex. Abrir outra Janela). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 10 PROGRAMAÇÃO ORIENTADA AO OBJETO (POO) E PROGRAMAÇÃO ORIENTADA AO EVENTO (POE). PARADIGMA DA PROGRAMAÇÃO ORIENTADA A EVENTOS/OBJETOS Neste paradigma, o controle de f luxo de dados é cr iado a part i r da elaboração da Interface, onde o sistema operacional envia mensagens ao apl icativo informando quando algum Evento ocorre e sobre qual Objeto . A part ir desta mensagem é veri f icada a existência de Código para tratar o Evento ; se houver, este é executado. Assim, a ordem através da qual o seu Código de programa é executado depende de quais Eventos ocorram. Por essa razão, costuma-se dizer que quem controla a execução do sistema é o Usuário , pois, invariavelmente, o evento será disparado por ele. A Programação Orientada ao Objeto (POO) contém a Programação Orientada ao evento (POE), porém a POE não existe sem a POO. Podemos ter um objeto e não ter nenhum evento associado a ele, porém não podemos ter um evento sem exist ir um objeto. O QUE É UM EVENTO? Um evento é um acontecimento, algo que acontece ou se faz acontecer sobre um Objeto da apl icação. Um acontecimento que o objeto pode reconhecer. COMO SÃO DESENCADEADOS OS EVENTOS? Através de ações de Usuários interagindo com o programa, por um outro programa requisi tando uma troca de dados, ou pelo próprio Windows. Mexer e cl icar botões do mouse, pressionar teclas no teclado, são ações que desencadeiam eventos. Exemplos de eventos: Cl ick, MouseMove, Keypress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 11 QUEM GERENCIA OS EVENTOS? Os eventos são gerenciados pelo próprio programa ou pelo sistema (ambiente) operacional gráfico. Exemplo de fluxograma: O QUE É UMA CLASSE DE OBJETO? Uma Classe Objeto é um modelo de como o objeto será ao ser cr iado, ou seja, de onde este é derivado. A classe é composta por Código e Dados formando uma unidade. Exemplos de classes: O QUE É UM OBJETO? Um Objeto é uma instância de uma classe. Quem uti l iza um objeto não precisa saber como este foi construído, mas, como interagir com ele; nem como o objeto executa um cálculo, mas como chamar a função que o executa e definir valores aos seus parâmetros. Desta forma um objeto da classe CommandButton (Command1) só exist i rá quando desenharmos este em um formulário, neste instante cr ia-se uma instânciadesta classe, o objeto Command1. LÓGICA DE PROGRAMAÇÃO 12 COMO UTILIZAR OBJETOS Os objetos são ut i l izados através da manipulação de suas Propriedades, Métodos e Eventos , def inidos assim: Desta forma, para alterarmos a cor de fundo de um formulário, devemos alterar o valor da propriedade BackColor, com o valor correspondente à cor desejada. Ex: Red Se quisermos exibir (ação) um formulário ( janela), temos que ut i l izar o Método Show . Ex: Form1.Show Por f im, se quisermos emit ir um Beep toda vez que o usuário movimenta o mouse sobre o formulário, devemos escrever um código para o Evento do Objeto que reconhece este movimento, neste caso o evento MouseMove . Vantagens na uti l ização de objetos A primeira vantagem é a redução no número de l inhas de código. Imagine você ter que criar uma janela que permita a conf iguração de Impressora, em vez de cr iá- la e escrever centenas de l inhas de código, você pode uti l izar o objeto CommonDialogControl fornecido pela l inguagem. Outra vantagem é a possibi l idade da ut i l ização de objetos desenvolvidos por terceiros , ou objetos criados por você mesmo , em qualquer apl icação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 13 PROGRAMAÇÃO ESTRUTURADA Na programação estruturada a arquitetura e do t ipo Top to Down. Isto é, de cima para baixo. Efetua a execução do Código do início até o f im. Na programação modular o programa é fei to por módulos (rot inas), sendo que o conjunto desses formam o programa num todo. Este t ipo de programação é que vai formar o Código a ser escri to para cada Evento veri f icado. Os conhecimentos de Programação Estruturada e Modular, que será o objeto deste curso servem para elaborarmos os algori tmos e escrevermos os códigos nos procedimentos e funções a serem implementados, e executados quando for disparado um evento na Programação Orientada ao Objeto/Evento. ETAPAS PARA A SOLUÇÃO DE PROBLEMAS. 1 Planejamento Geral (O Que deve ser fei to). 2 Planejamento Detalhado (Como deve ser fei to?) 3 Revisão (Teste de mesa). Veri f icar se Como decidimos fazer, tem como resultado o Que deve ser fei to. 4 Codif icação. 5 Compilação ou Interpretação. 6 Teste do Programa. 7 Documentação. Ao elaborar um programa, devemos em primeiro lugar deixar bem claro, o Que precisa ser fei to e, logo após, definirmos as maneiras possíveis de se chegar ao resultado desejado (Como?). Não existe uma única solução para um problema, dentre as soluções encontradas devemos escolher a que mais sat isfaça ao conceito E. R. E. S . , ou seja: E – Eficácia, o programa deve fazer o que deve ser fei to. Não confundir com ef iciência que signif ica fazer bem fei to. Um programa pode ser bem fei to, mas não oferecer a solução para o problema proposto. R – Rapidez, dentre as várias soluções encontradas para o mesmo problema, devemos escolher a que seja mais rápida em termos de execução. E – Economia. Também devemos escolher a solução mais econômica em termos de ut i l ização de memória principal e memória de armazenamento. S – Segurança. O programa deve prever e tratar possíveis erros do usuário. Exemplo: se pedirmos para digi tar o Sexo (M/F), o programa não deve deixar que o usuário digi te qualquer outra letra que não sejam o M ou o F . Para elaborar a solução de um problema usamos os Algoritmos . LÓGICA DE PROGRAMAÇÃO 14 ALGORITMOS O QUE É UM ALGORITMO? Um Algoritmo é uma seqüência f inita de instruções bem claras, bem definidas e bem detalhadas que, quando colocadas em uma ordem lógica , nos levam a solução de um problema. Os Algoritmos independem da l inguagem de programação a ser ut i l izada. O objetivo da construção de Algoritmos é que eles possam ser adaptados a qualquer l inguagem de programação. Não existe apenas um Algoritmo para a solução de um problema. Um Algoritmo pode ser numérico ou não. Um Algoritmo pode ter tantas entradas e saídas de dados, quantas forem necessárias, pode até não ter entradas, mas obrigatoriamente deverá ter pelo menos uma saída de dados que é o resultado do processamento. FORMAS DE REPRESENTAÇÃO DE UM ALGORITMO Temos 3 (três) formas de representar um algori tmo: • PSEUDOCÓDIGO (OU PORTUGUÊS ESTRUTURADO, OU PORTUGOL). • FLUXOGRAMA • DIAGRAMA DE CHAPIN PSEUDOCÓDIGO : As estruturas lógicas são escri tas numa l inguagem próxima ao português, na seqüência em que são executadas. FLUXOGRAMA: Nesta forma de representação as estruturas lógicas são expressas através de f iguras geométricas, interl igadas por setas que indicam o caminho a ser seguido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 15 DIAGRAMA DE CHAPIN : As estruturas lógicas são representadas por f iguras retangulares, colocadas uma após a outra, de cima para baixo. VANTAGENSE DESVANTAGENS PSEUDOCÓDIGO: • Fácil de compreender. • Fáci l de ler e converter para programação. • Melhor para representar programas maiores. • É estruturado. FLUXOGRAMA: • Fácil de compreender. • Bom para construir e visual izar pequenos programas. • Difíci l de desenhar quando o programa f ica muito grande. • Não é estruturado. DIAGRAMA DE CHAPIN: • Fáci l de compreender, ler e converter para a programação. • É estruturado. • Bom para visual izar pequenos programas. • Difíci l de desenhar quando o programa f ica muito grande. Observação: Neste curso usaremos algoritmos com a forma de representação Pseudocódigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 16 ALGORITMOS NATURAIS Algori tmos naturais são usados para l inguagens mais ant igas que não são estruturadas e nem modulares, como Fortran, Basic, Cobol (antes de ter o comando Perform), etc.. . Esse t ipo de algori tmo uti l iza comandos de retorno ou avanço (instrução GO TO) , do f luxo para determinada l inha do algori tmo. Com o surgimento das l inguagens de programação estruturadas e modulares esse t ipo de algori tmo se tornou obsoleto. As l inguagens estruturadas não possuem mais os comandos de retorno ou avanço (instrução GO TO) , para uma determinada l inha do algori tmo, a própria estrutura é que define o retorno ou avanço do f luxo. EXEMPLO DE ALGOR ITMO NATURAL Algori tmo para ret irar a devolução do Imposto de Renda. INICIO Passo 1 – Sair de casa. Passo 2 – Ir até o banco. Passo 3 – dir igir-se ao balcão. Passo 4 – Já chegou a devolução do Imposto de Renda? Passo 5 – Sim: vá para o passo 12. Passo 6 – Não: Voltar para casa. Passo 8 – Esperar um dia. Passo 9 – É sábado, domingo ou feriado? Passo 10 – Sim: vá para o passo 8. Passo 11 – Não: vá para o passo 1. Passo 12 – Retirar o dinheiro. Passo 13 – Voltar para casa. FIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 17 ALGORITMO NATURAL COMPARADO COM ALGORITMO ESTRUTURADO Desafio : ler dez valores numéricos, mostrar os valores l idos e no f inal mostrar a soma dos números digi tados. ALGOR ITMO NATURAL ALGOR ITMO ESTRUTURADO INICIO VARIAVEIS Passo 1 – Ler N NUMERICO N, S, C Passo 2 – Escrever N INICIO Passo 3 – S = S + N FACA ENQUANTO C<10 Passo 4 – C = C + 1 LER N Passo 5 – C < 10? ESCREVER N Passo 6 – Sim: vá para o passo 1 S = S + N Passo 7 – Não: vá para o passo 8 C = C + 1 Passo 8 – Escrever “Soma =“,S FIM_ENQUANTO FIM ESCREVER “Soma =“,S FIM Na construção de algori tmos, ut i l izamos diversos elementos. Entre eles podemos ci tar valores informados ao programa (pelo teclado ou l idos de um disco), comandos para armazenar valores, expressões, estruturas, e etc. Veremos a seguir quais são esses elementos, quando usar, para que usar e como eles funcionam dentro de um algori tmo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 18 ELEMENTOS USADOS NOS ALGORITMOS 1 CONSTANTES: 1.1 Numérico; 1.2 Data; 1.3 Lógica; 1.4 Caracter (texto, literal, string) 2 VARIÁVEIS: 2.1 Numérico; 2.2 Data; 2.3 Lógica; 2.4 Caracter (texto, literal, string) 3 EXPRESSÕES: 3.1 Operandos; 3.2 Operadores; 4 COMANDO DE ATRIBUIÇÃO: 5 ESTRUTURAS: 5.1 Seqüencial; 5.2 Seleção; 5.2.1 Simples; 5.2.2 Composta; 5.2.3 Múltipla; 5.3 Repetição; 5.3.1 Contador fixo; 5.3.2 Flag; 5.3.2.1 De resposta; 5.3.2.2 Predeterminado; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 19 CONSTANTES CONSTANTES: são valores ut i l izados no processamento, mas que não sofrerão alterações durante o mesmo. Exemplos: nomes, datas de nascimento, números de funcionários, nomes de cidades, etc. As constantes podem ser dos seguintes tipos: NUMÉRICO: Quando começam por um número, um sinal ou um parêntese, todos os demais caracteres são apenas números, com apenas uma exceção, que é o separador decimal (dependendo da l inguagem, pode ser o ponto ou a vírgula). Exemplos: 123, 34,75, (567), -512, etc. DATA: Quando t iver um formato conhecido de data. Os mais comuns são: dd/mm/aa, dd/mmm/aa, dd/mm/aaaa, dd/mmm/aaaa, dd/mm, dd/mmm, mm/aa, mmm/aa, mm/aaaa, mmm/aaaa. LÓGICA: (Booleanas). São os valores que correspondem às quatro letras ou palavras lógicas correspondentes: T (True), F (False), Y (Yes), N (No). CARACTER: (Texto, Li teral ou String). São reconhecidas pela exclusão, ou seja, tudo que não for reconhecido como numérico, data ou lógico, é do t ipo caracter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 20 VARIÁVEIS VARIÁVEIS: Não são valores. Variáveis são endereços de memória (Ram) que armazenam temporariamente valores. Esses endereços recebem um rótulo, que é o nome da variável, e um conteúdo. Cada vez que mencionamos o nome da variável, é manipulado o seu conteúdo. Observação: Podemos imaginar uma variável como sendo uma gaveta em um armário (endereço de memória Ram), onde guardamos alguma coisa (conteúdo), prego, por exemplo. Para ident i f icar esta gaveta colocamos uma etiqueta (rótulo), com o nome de prego (nome da variável). Quando queremos pregos temos que abrir a gaveta que tem o rótulo prego e pegar o seu conteúdo. Os nomes das variáveis devem sempre começar por uma letra, não devem ter espaços em branco e nem caracteres especiais, no máximo o símbolo sublinhado. Exemplos: Nome_cl i , Num_func, Datanasc, etc. As variáveis são declaradas no início do algori tmo. Dependendo do valor a ser armazenado, as variáveis poderão ser dos t ipos: Numérico , Data , Lógico ou Caracter ( texto, l i teral ou str ing). Os valores armazenados nas variáveis permanecem até que: • O computador seja desligado (normal ou por falta de energia), visto que são armazenados na memória Ram; • Por término do programa ou rot ina onde foram criadas; • Seja atribuído um novo valor para a mesma variável. Observação: Só podemos armazenar um valor de cada vez em uma variável. Ao atr ibuirmos um novo valor que deve ser do mesmo t ipo, o valor anterior será sumariamente el iminado. Exemplo : Se escrevermos A=5 , o valor cinco será o conteúdo da variável A . Se mais adiante escrevermos A=20 , o valor vinte passa a ser o novo conteúdo da variável A , e o valor anterior, cinco, será el iminado. Escopo: (abrangência), as variáveis, dependendo da l inguagem, podem ser Públicas (Public) ou Globais (Global) e Privadas (Private) ou Locais (Locals). Observação: As variáveis Públicas ou Globais são vistas por todos os módulos do programa, e as Locais ou Privadas somente nas rotinas onde são criadas. LÓGICA DE PROGRAMAÇÃO 21 EXPRESSÕES Expressão: é qualquer instrução de manipulação de dados. As expressões podem ser: ARITMÉTICAS: Nesse t ipo de expressão só podemos ut i l izar operadores, constantes e variáveis do t ipo numérico, e o resultado será sempre um valor numérico. Exemplo 3+2, A*B. RELACIONAIS: Nesse t ipo de expressão real izamos uma comparação entre dois ou mais operandos do mesmo t ipo, ut i l izando operadores relacionais e o resultado será sempre um valor lógico (verdadeiro ou falso). Exemplo: 10>5, A<B. LÓGICAS: É a união de duas ou mais expressões relacionais ut i l izando operadores lógicos, e o resultado também será sempre um valor lógico (verdadeiro ou falso). Exemplo: A>B E 10>5, Cidade = “Canoas” OU Cidade = “Porto Alegre”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 22 OPERANDOS E OPERADORES OPERANDOS São os elementos que serão manipulados. Como operandos podemos utilizar: CONSTANTES: Exemplo: 15+25, 345/5, 12,35*20; VARIÁVEIS: Exemplo: A-B, X/Y, HT*SH; FUNÇÕES DA LINGUAGEM: Exemplo: PI()*Cos(x)+Raiz(256,2) Observações: Linguagens apl icat ivas mais específ icas como as Plani lhas Eletrônicas e os Gerenciadores de Bancos de Dados podem ut i l izar como operandos as referências a células (Exemplo: A3*B5) ou os campos do Banco de dados (Exemplo: Horas_Trab*Sal_Hora). OPERADORES São símbolos ou palavras que indicam o t ipo de manipulação e também determinam de que t ipo é a expressão. Os operadores se dividem em três grupos: ARITMÉTICOS: • Adição: + • Subtração: - • Multipl icação: * • Divisão: / • Exponenciação: ^ Observação: Os operadores ari tméticos mantêm a mesma prioridade matemática, ou seja: em primeiro lugar são executadas as raízes e exponenciações, logo a seguir, as mult ipl icações e divisões, e, por úl t imo, as somas e subtrações. Em caso de empate de prioridades, o cálculo é efetuado sempre da esquerda para a direi ta. Para alterar a prior idade dos operadores, usamos parênteses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 23 RELACIONAIS • Igualdade: = • Maior do que: > • Menor do que: < • Maior ou igual a: >= • Menor ou igual a: <= • Diferente: <> Observações: Entre os operadores relacionais não existem prioridades, sempre são executados da esquerda para a direita, à medida que forem aparecendo. LÓGICOS (Booleanos) • NAO • E • OU Observação: Nos operadores lógicos o E tem prioridade sobre o OU . Os operadores lógicos igualmente chamados de Booleanos ut i l izam a álgebra de Boole, ou álgebra Booleana, também denominada Tabela Verdade. O operador NAO é um inversor de resultados, isto é, se o resultado da expressão for verdadeiro transforma em falso e vice-versa. Exemplo: 50>30, resultado verdadeiro. NAO (50>30), resultado falso. Usando o operador E , o resultado f inal só será verdadeiro se o resultado de todas as condições forem verdadeiras, qualquer outra hipótese, o resultado será falso. Usando o operador OU , o resultado f inal só será falso se o resultado de todas as condições forem falsas; qualquer outra hipótese, o resultado será verdadeiro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . LÓGICA DE PROGRAMAÇÃO 24 Veja o exemplo da tabela verdade abaixo: Comando de atr ibuição O comando de atr ibuição serve para colocar um valor (conteúdo) dentro de uma variável. O comando de atr ibuição, dependendo da l inguagem, pode ser: = ← := Exemplo: A = 15 ou A ←15 ou A := 15 Em qualquer dos casos estamos colocando o valor 15 como conteúdo da variável A . Neste curso uti l izaremos como comando de atr ibuição o sinal de = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 25 ESTRUTURAS DE CONTROLE As estruturas de controle servem para direcionar o f luxo do processamento. As estruturas de controle podem ser: ESTRUTURA SEQÜENCIAL A estrutura seqüencial , como diz o próprio nome, é uma seqüência de instruções que se sucedem uma após a outra sem desvios ou interrupções. Este t ipo de estrutura não possui palavras chaves, é composta somente por l inhas de comandos sucessivas e está sempre l imitada pelo início e f im do algori tmo ou pelo inicio e f im de uma outra estrutura. Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar o nome do aluno, as duas notas e a média calculada. VARIAVEIS NUMERICO N1, N2, M CARACTER NOME INICIO N1 = 0 N2 = 0 M = 0 LER NOME LER N1 LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2,M FIM ESTRUTURA DE SELEÇÃO Devemos ut i l izar uma estrutura de seleção. Sempre que para executar alguma ação dependa do resultado de uma condição, isto é, no que temos que fazer existe uma condicionante. Observação: Conforme o que devemos fazer, de acordo com o resultado da condição, a estrutura de seleção pode ser de três t ipos di ferentes: Seleção Simples, Seleção Composta ou Seleção Múlt ipla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 26 ESTRUTURA DE SELEÇÃO SIMPLES Na estrutura de Seleção Simples , somente teremos uma ação se o resultado da condição for Verdadeiro , caso o resultado seja falso não há ação a ser executada. As palavras chaves de uma estrutura de Seleção Simples são: Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar o nome do aluno, as duas notas, a média calculada e as palavras Aluno Reprovado, caso a média seja menor do que sete. VARIAVEIS NUMERICO N1, N2, M CARACTER NOME INICIO N1 = 0 N2 = 0 M = 0 LER NOME LER N1 LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2, M SE M < 7 ENTAO ESCREVER “ALUNO REPROVADO” FIM_SE FIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 27 ESTRUTURA DE SELEÇÃO COMPOSTA Na estrutura de Seleção Composta , será executado um comando ou um grupo de comandos, caso o resultado da condição seja Verdadeiro e outro comando ou outro grupo de comandos diferentes, se o resultado da condição for Falso . As palavras-chave de uma estrutura de Seleção Composta são: Observação: Se o resultado da condição for Verdadeiro será executado tudo que estiver entre as palavras ENTAO e SENAO , sendo ignorado o que tudo que est iver após a palavra SENAO , porem se o resultado da condição for Falso , será desprezado tudo que estiver entre as palavras ENTAO e SENAO , sendo executado apenas o que estiver entre as palavras SENAO e FIM_SE . Exemplo: Ler o nome e duas notas de um aluno, calcular a média e mostrar o nome do aluno, as duas notas, a média calculada e as palavras Aluno Reprovado, caso a média seja menor do que sete e Aluno Aprovado em caso contrário. VARIAVEIS NUMERICO N1, N2, M CARACTER NOME INICIO N1 = 0 N2 = 0 M = 0 LER NOME LER N1 LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2,M SE M < 7 ENTAO ESCREVER “ALUNO REPROVADO” SENAO ESCREVER “ALUNO APROVADO” FIM_SE FIM LÓGICA DE PROGRAMAÇÃO 28 ESTRUTURA DE SELEÇÃO MÚLTIPLA A Estrutura de Seleção Múltipla é ut i l izada quando devemos fazer vários testes em uma mesma variável ou testar o valor de uma variável dependendo do teste do valor de outra variável. Observação: A estrutura de Seleção Múltipla pode ser construída com Estruturas de Seleção Composta encadeadas (aninhadas), ou pela estrutura Faca Caso . Ut i l izando Estruturas de Seleção Composta encadeada, para fazer a Seleção Múltipla podemos fazer o encadeamento das seguintes formas: Encadeamento, somente se o resultado da primeira condição for verdadeiro. Encadeamento somente se o resultado da primeira condição for falso. LÓGICA DE PROGRAMAÇÃO 29 Um encadeamento se o resultado da pr imeira condição seja verdadeiro, e outro encadeamento, caso o resultado da primeira condição seja falso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 30 SELEÇÃO MÚLT IPLA COM ESTRUTURA DE FACA CASO: As palavras-chave da estrutura Faca Caso são: Observação: Para a solução do próximo exemplo, usaremos uma solução com estrutura de Seleção Composta encadeada e outra solução ut i l izando a estrutura Faca Caso . Exemplo: Ler o estado civi l de uma pessoa como valor numérico, sendo que 1 corresponde a Solteiro, 2 a Casado e 3 para Outros. Testar estes valores levando-se em conta que o usuário pode digitar errado e escrever o estado civi l em caracteres. SOLUÇÃO UT IL I ZANDO ESTRUTURA DE SELEÇÃO COMPOSTA ENCADEADA: VARIAVEIS NUMERICO EC INICIO EC = 0 ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)” LER EC SE EC = 1 ENTAO ESCREVER “Solteiro” SENAO SE EC = 2 ENTAO ESCREVER “Casado” SENAO SE EC = 3 ENTAO ESCREVER “Outros” SENAO ESCREVER “Valor inválido” FIM_SE FIM_SE FIM_SE LÓGICA DE PROGRAMAÇÃO 31 SOLUÇÃO UT IL I ZANDO ESTRUTURA DE FACA CASO: VARIAVEIS NUMERICO EC INICIO EC = 0 ESCREVER “Digite o estado civil (1 – solteiro, 2 – casado, 3 – outros)” LER EC FACA CASO CASO EC = 1: ESCREVER “Solteiro” CASO EC = 2: ESCREVER “Casado” CASO EC = 3: ESCREVER “Outros” OUTRO_CASO: ESCREVER “Valor inválido” FIM_CASO ESTRUTURA DE REPETIÇÃO Uma Estrutura de Repetição deve ser usada sempre que uma rot ina tenha que ser executada mais do que uma vez durante o mesmo processamento. As repetições podem ser fei tas por Contador Fixo , ou seja, a rot ina vai ser repetida sempre um número f ixo de vezes. Por Flag de Resposta , onde a cada volta do laço perguntamos ao usuário se ele quer cont inuar ou não, se a resposta for sim à rotina, segue repetindo; e se for não, a rot ina termina. Ainda podemos fazer a repetição por Flag Predeterminado , isto é, determinamos que quando o usuário pressionar um determinado conjunto de teclas ou um determinado valor para conteúdo de uma variável, a rot ina termina. Para construir a estruturade repetição, podemos uti l izar dois t ipos de estruturas: a estrutura FACA ENQUANTO ou a estrutura PARA PROXIMO , sendo que a estrutura FACA ENQUANTO serve tanto para repetições por Contador Fixo como para, repetições por Flag . A estrutura de PARA PROXIMO só serve para repetições por Contador Fixo . ESTRUTURA FACA ENQUANTO As palavras-chave da estrutura FACA ENQUANTO são: LÓGICA DE PROGRAMAÇÃO 32 Nesse t ipo de construção a rot ina só entra na estrutura caso a condição seja verdadeira, senão a estrutura é ignorada. Entrando na estrutura, o programa executa tudo que estiver contido entre as palavras Faca Enquanto e Fim_Enquanto . Quando é encontrada a palavra Fim_Enquanto , a rot ina retorna ao início da estrutura e testa novamente a condição, enquanto a condição for verdadeira cont inua repetindo. Para que possamos entender melhor o funcionamento desta estrutura, vamos observar os exemplos a seguir: A seguir outro t ipo de construção para repetições com a estrutura PARA PROXIMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 33 ESTRUTURA PARA PROXIMO As palavras chave da estrutura PARA PROXIMO são: Neste t ipo de construção a rotina sempre entra na estrutura a pr imeira vez, visto que no inicio da estrutura temos uma atr ibuição: VAR = VI (valor inicial) , repete tudo que estiver dentro da estrutura até encontrar a palavra PROXIMO . Quando encontra a palavra PROXIMO , pega o valor do passo, soma na variável de controle e faz um teste com o valor f inal (VF) , enquanto o valor da variável de controle não for maior do que o valor f inal (VF), continua repetindo. Observação: O PASSO é opcional, quando não colocado assume por padrão o valor 1 (um). Este t ipo de Estrutura é mais ut i l izado para trabalhar com Vetores e Matrizes , como veremos na últ ima parte da aposti la. Vamos observar o exemplo a seguir para melhor entender o funcionamento da estrutura PARA PROXIMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 34 EXEMPLO DE REPETIÇÃO POR CONTADOR FIXO Desafio: Ler o nome do aluno e duas notas para uma turma de 15 alunos, calcular a média e mostrar o nome as duas notas e a média de cada aluno. SOLUÇÃO UT IL I ZANDO A ESTRUTURA FACA ENQUANTO VARIAVEIS NUMERICO N1, N2, M, C CARACTER NOME INICIO N1 = 0 N2 = 0 M = 0 C = 0 ESCREVER “DIGITE O NOME, N1, N2” FACA ENQUANTO C < 15 LER NOME LER N1 LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2, M. C = C + 1 FIM_ENQUANTO FIM SOLUÇÃO UT I L I ZANDO A ESTRUTURA PARA PROX IMO VARIAVEIS NUMERICO N1, N2, M, C CARACTER NOME INICIO N1 = 0 N2 = 0 M = 0 C = 0 ESCREVER “DIGITE O NOME, N1, N2” PARA C = 1 ATE 15 LER NOME LER N1 LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2,M PROXIMO FIM LÓGICA DE PROGRAMAÇÃO 35 EXEMPLO DE REPETIÇÃO POR FLAG DE RESPOSTA Desafio: Ler o nome e duas notas para os diversos alunos, calcular a média e mostrar o nome, as duas notas e a média de cada aluno. Após processar cada aluno, perguntar ao usuário se deseja continuar. Enquanto o usuário responder sim (S) , o programa continua; se a resposta for não (N), o programa termina. Observação: Para repetições usando como controle o Flag, só poderemos utilizar a estrutura FACA ENQUANTO. Solução: VARIAVEIS NUMERICO N1, N2, M CARACTER NOME, CF INICIO N1 = 0 N2 = 0 M = 0 CF = “S” ESCREVER “DIGITE O NOME, N1, N2” FACA ENQUANTO CF = “S” LER NOME LER N1 LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2,M ESCREVER “DESEJA CONTINUAR (S/N)?” LER CF FIM_ENQUANTO FIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 36 EXEMPLO DE REPETIÇÃO POR FLAG PREDETERMINADO Problema: Ler o nome e duas notas para uma turma de alunos, calcular a média e mostrar o nome, as duas notas e a média de cada aluno. O programa irá terminar quando o usuário digi tar a palavra “FIM” , como conteúdo da variável Nome, em vez de um nome vál ido. Observação: Predeterminamos que quando o usuário digi tar a palavra FIM no lugar do nome de um aluno, o programa irá terminar. Solução: VARIAVEIS NUMERICO N1, N2, M CARACTER NOME INICIO N1 = 0 N2 = 0 M = 0 ESCREVER “DIGITE O NOME (FIM PARA SAIR), N1, N2” NOME = “ “ FACA ENQUANTO NOME <> “FIM” LER NOME SE NOME <> “FIM” LER N1 LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2,M FIM_SE FIM_ENQUANTO FIM Até aqui anal isamos quais são as palavras-chave e como se representam os algori tmos em Pseudocódigo. Veremos a seguir como fazer a representação das estruturas de controle através de Fluxograma e Diagrama de Chapin .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 37 ESTRUTURA SEQÜENC IAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 38 ESTRUTURA DE SELEÇÃO S IMPLES LÓGICA DE PROGRAMAÇÃO 39 ESTRUTURA DE SELEÇÃO COMPOSTA LÓGICA DE PROGRAMAÇÃO 40 ESTRUTURA DE SELEÇÃO MÚLT IPLA LÓGICA DE PROGRAMAÇÃO 41 ESTRUTURA DE REPET IÇÃO LÓGICA DE PROGRAMAÇÃO 42 PROCEDIMENTOS E FUNÇÕES No f inal dos anos 60, várias empresas se depararam com o aumento crescente dos custos para a elaboração de programas de computador. Isso gerou a chamada Crise do Software . Essa crise foi também decorrente do descompasso entre a tecnologia de desenvolvimento dos Softwares. Sem metodologias avançadas para a elaboração de programas, a probabi l idade de aparecimentos de bugs ( falhas, erros) nos Softwares era quase inevitável. Isso tornava a manutenção dos sistemas de informações cada vez mais onerosa. Para tentar resolver esses problemas, uma série de estudos foi iniciada e surgiram vários t ipos de programação. Um deles, o mais ut i l izado, é a Programação Estruturada. A característ ica dessa programação é a uti l ização de técnicas que decompõem a solução de um problema em “blocos” que interagem com um bloco principal. Isso é possível por meio da técnica de refinamentos sucessivos e da modularização dos algori tmos. A Programação Estruturada tem como objet ivo desenvolver Programas/Algori tmos confiáveis, legíveis, de fáci l entendimento, f lexíveis e de fáci l manutenção; para isso, ela ut i l iza as técnicas a seguir. 1) Desenvolvimento de algori tmos por etapas/refinamentos sucessivos. 2) Número l imitado de estruturas de controle de f luxo. 3) Mudanças de etapas/refinamentos de al ta complexidade ou tamanho em módulos. MODULARIZAÇÃO Técnica para desenvolver algori tmos, por meio de ref inamentos sucessivos, em que podem ser ut i l izados módulos. MÓDULO Conjunto de comandos que const i tui uma parte de um algori tmo principal e que tem uma tarefa bem definida e é independente em relação ao resto do Algori tmo. Fazendo uma analogia, imagine o coração como um módulo do corpo humano. Esse módulo desempenha um conjunto de operações específ icas, tem uma tarefa bem definida e é independente em relação à boa parte dos outros órgãos (tanto assim, que pode ser transplantado para outro corpo). Veja a seguir as característ icas da técnica da modularização. 1) A independência do módulo permite uma manutenção mais simples e evita efei tos colaterais em outros pontos do algori tmo. 2) A elaboração do módulo pode ser fei ta independentemente e em época diferente do restante do algori tmo. 3) Testes correções dos módulos podem ser fei tas separadamente. 4) Um módulo pode ser ut i l izado em outros algori tmos que requerem o mesmo processamento por ele executado. LÓGICA DE PROGRAMAÇÃO 43 PROCED IMENTO E FUNÇÃO Para inserir módulos em um algori tmo existem os comandos Procedimento e Função . As ações de procedimento e função estão hierarquicamente subordinadas a um algori tmo principal, geralmente, chamado de Módulo Principal . Dentro de um procedimento ou uma função, pode haver o chamamento de outros procedimentos ou funções. Veja o diagrama a seguir. Cada procedimento ou função pode ut i l izar os objetos (constantes e varáveis) do módulo principal, definir os seus próprios, ou ainda uti l izar os dois t ipos. Veja o quadro abaixo. Pelo exemplo acima, tanto as Funções 1 e 2 como o Procedimento 4 podem uti l izar a variável X , porque ela é uma variável global e está no módulo principal. Porém, a variável Z não pode ser ut i l izada no algori tmo principal, nem na função 1 e nem no Procedimento 4, por ser uma variável local da Função 2. LÓGICA DE PROGRAMAÇÃO 44 VAR IÁVEL GLOBAL Variável que pode ser ut i l izada no módulo em que foi declarada ou em um módulo interno ao módulo do algori tmo no qual foi declarada. VAR IÁVEL LOCAL Variável que só pode ser ut i l izada no módulo do algori tmo no qual foi declarada e que não possui qualquer signif icado fora desse módulo. Observação: Todo módulo (Procedimento ou Função) é criado por meio de declarações e executado por meio de um comando de chamada. DIFERENÇA ENTRE PROCEDIMENTO E FUNÇÃO A diferença entre Procedimento e Função é que o Procedimento executa uma tarefa e não retorna valores para o módulo que o chamou, já a Função também executa uma tarefa, mas obrigatoriamente deverá retornar um resultado para o módulo que a chamou. A chamada de um procedimento é fei ta como uma l inha de comando normal, repassando ou não parâmetros (argumentos); já a chamada de uma função sempre deve ser por atr ibuição a uma variável ou por um teste condicional, também repassando ou não parâmetros (argumentos). PROCEDIMENTOS COM PARÂMETROS Parâmetros (argumentos) Na técnica de modularização podem ser ut i l izados pontos de comunicação entre os módulos. Esses pontos, chamados Parâmetros , c lassif icam-se em formais e reais. PARÂMETROS FORMA IS São os parâmetros declarados com o módulo (Procedimento ou Função). São os que recebem os valores enviados pelo módulo que chamou o Procedimento ou a Função. PARÂMETROS REA IS São os parâmetros que substi tuem os parâmetros formais, no procedimento ou função. São os que enviam valores do módulo principal para o módulo (procedimento ou função) que foi chamado. PASSAGEM DE PARÂMETROS PASSAGEM DE PARÂMETROS POR VALOR Quando passamos parâmetros por valor, na verdade estamos enviando uma cópia do valor original da variável. Portanto, se no Procedimento ou Função este valor for al terado, não modificará o conteúdo da variável cujo valor foi repassado. LÓGICA DE PROGRAMAÇÃO 45 PASSAGEM DE PARÂMETROS POR REFERÊNC IA Quando repassamos parâmetros por referência, na real idade estamos enviando não uma cópia do valor, mas, sim, o endereço de memória onde está armazenado o valor. Logo, qualquer alteração deste valor no Procedimento ou Função impl ica al terar o conteúdo da variável que repassou o parâmetro. Observação: Existe diferença no padrão (Default) de repasse de parâmetros entre as linguagens. Exemplo : No Visual Basic o Padrão (Default) de repasse é por referência, já no Delphi o padrão (Default) é por valor. EXEMPLOS DE S INTAXE No Visual Basic: Na declaração do t ipo: Procedimento (x) , o repasse de x é por referência (Padrão). Se quisermos repassar o parâmetro por valor, a declaração tem que ser: Procedimento (By val x). No Delphi Na declaração do t ipo: Procedimento (x) , o repasse de x é por valor (Padrão). Se quisermos repassar o parâmetro por referência, a declaração tem que ser: Procedimento (Var x). Observação: Em algumas linguagens é possível elaborar um arquivo contendo diversos Procedimentos e Funções e compilar este arquivo como uma DLL, ficando, portanto todos os procedimentos e funções contidos nele disponíveis para todos os programas do sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 46 EXEMPLOS DE PROCEDIMENTO E FUNÇÃO PROCED IMENTO Ler o estado civi l de uma pessoa como valor numérico, sendo 1 para solteiro, 2 para casado e 3 para outros. Escrever o estado civi l em caracteres. Módulo Principal Procedimento Traduz(e) VARIAVEIS INICIO Numerico ec, e SE e = 1 entao INICIO Escrever “Solteiro” Ec = 0 SENAO Ler ec SE e = 2 entao Traduz (ec) Escrever “casado” FIM SENÃO SE e = 3 entao Escrever “outros” SENAO Escrever “Inválido” FIM_SE FIM_SE FIM_SE FIM FUNÇÃO Ler a base e altura de um tr iângulo, calcular a área. Escrever a base, a al tura e a área calculada. Módulo Principal Funcao Calc_Área(b, h) VARIAVEIS INICIO Numerico base, altura, área,a a = b * h Inicio retornar a Base = 0 FIM Altura = 0 Area = 0 Ler Base Ler Altura Area = Calc_Área (Base, Altura) Escrever Área FIM LÓGICA DE PROGRAMAÇÃO 47 RECURSIVIDADE Os Procedimentos e as Funções, na maioria das l inguagens, possuem a propriedade da recursividade, isto é, a capacidade de chamar ela mesma. Podemos ut i l izar a recursividade para simular uma estrutura de repetição. EXEMPLO DE RECURS IV IDADE VARIAVEIS Numerico Num, N INICIO Num= 0 Mostra(Num) FIM PROCED IMENTO MOSTRA(N) INICIO N = N + 2 Escrever N SE N < 10 entao Mostra(N) FIM_SE FIM RESULTADO Temos como resultado desse processamento, os seguintes valores: 2 – 4 – 6 – 8 – 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 48 VETORES E MATRIZES O QUE SÃO VETORES E MATRIZES Vetores e Matr izes, que nas l inguagens de programação são chamados de Array , são variáveis indexadas, isto e, em uma mesma variável podemos armazenar diversos valores, e esses valores são ident i f icados pelo nome da variável e por um número ou mais números, dependendo de quantas dimensões tem a matr iz. Esse número ou esses números são os índices da matriz, pois indicam a posição do valor (elemento) dentro da Matr iz ou do Vetor. Vamos fazer uma analogia para entendermos melhor esse conceito. Como vimos anteriormente, uma variável normal é um endereço de memória onde podemos guardar um valor de cada vez. Como se fosse uma gaveta onde podemos guardar apenas um objeto; se quisermos colocar outro objeto, temos que reti rar o anterior. Agora vamos supor que nessa gaveta f izemos cinco divisões, então podemos guardar cinco objetos na mesma gaveta, isso é o que podemos comparar como sendo um Vetor . A Matriz pode-se comparar como sendo um armário com, por exemplo, três gavetas. Neste caso eu posso guardar três objetos, um em cada gaveta, porém, se em cada gaveta são fei tas três divisões, podemos nesse armário guardar não apenas três objetos, mas, sim, nove objetos. EXEMPLO DE VETOR Matriz numérico V[5] Para referenciar o valor 18 , temos que indicar V[3] , isto é, o valor 18 é o terceiro elemento do Vetor V, ou que o valor 18 encontra-se na terceira posição do vetor. EXEMPLO DE MATR IZ Matriz numérico M[3,3] Para referenciar o valor 76 , temos que indicar M[2,3] , isto é, o elemento da matr iz que armazena o valor 76 está na l inha 2, coluna 3 . A indicação do índice ou índices é fei ta sempre entre colchetes “[ ]” , ou em algumas outras l inguagens ente parênteses “( )”. Como o Vetor é uma matriz que possui dimensão única, temos apenas um índice, que indica a posição que o elemento ocupa dentro do Vetor. Por exemplo: V[3]. O número 3 entre os colchetes indica da Posição do Elemento ( local onde o valor está armazenado). LÓGICA DE PROGRAMAÇÃO 49 Como a Matriz tem mais de uma dimensão, tem uma quantidade de índices igual à quantidade de suas dimensões. No exemplo anterior, a matriz tem duas dimensões, tendo, portanto, dois índices: o pr imeiro, indicando a l inha , e o segundo, indicando a coluna em que se encontra armazenadoo valor. Exemplo: M[2,3] , o número 2 indica a l inha , e o numero 3 indica a coluna, Posição do Elemento ( local do valor armazenado). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 50 ALGORITMOS PARA MANIPULAR VETORES E MATRIZES Para construir algori tmos que manipulam Vetores e Matr izes, ut i l izamos a estrutura Para - Proximo, que é a mais adequada para esse t ipo de construção. Algumas l inguagens admitem o comando de lei tura direta para armazenar um valor em um elemento do Vetor ou da Matr iz; outras só aceitam o armazenamento por atr ibuição. Para ser genérico nos exemplos, usaremos a atr ibuição que todas as l inguagens suportam. Exemplo de Vetor : Algori tmo para ler e escrever um Vetor de nome V com cinco posições (elementos). VARIAVEIS NUMERICO AUX, I MATRIZ NUMERICO V[5] INICIO AUX = 0 PARA I = 1 ATE 5 LER AUX V[I] = AUX ESCREVER V[I] PROXIMO FIM Exemplo de Matriz : Algori tmo para ler e escrever uma Matriz de nome M com nove posições (elementos), com três l inhas e três colunas. VARIAVEIS NUMERICO AUX, L, C MATRIZ NUMERICO M[3,3] INÍCIO AUX = 0 PARA L = 1 ATE 3 PARA C = 1 ATE 3 LER AUX M[L,C] = AUX ESCREVER M[L,C] PROXIMO PROXIMO FIM Podemos dentro da estrutura Para – Proximo , trabalhando com Vetores e Matrizes , fazer os mesmos t ipos de processamentos que fazemos dentro da estrutura Faca – Enquanto , com a vantagem de que os valores permanecem armazenados na Memória, até que o processamento termine. LÓGICA DE PROGRAMAÇÃO 51 CONSIDERAÇÕES FINAIS Acreditamos que ao terminar esse curso e após ter real izado os exercícios constantes nesta aposti la, o aluno, com certeza, deve ter apropriado os conhecimentos necessários sobre raciocínio lógico, estruturas e construção de algori tmos, para dar prosseguimento à sua aprendizagem de uma l inguagem de programação, seja ela Visual Basic, Delphi, Java, etc., e apl icar os conhecimentos adquir idos nesse curso para elaborar seus programas de maneira correta e ef ic iente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 52 APÊNDICE 1 EXEMPLO DE ALGORITMO PARA ORDENAR UM VETOR Desafio : Classif icar em ordem crescente um vetor A com dez elementos (dez posições) VARIAVEIS NUMERICO N, I, J, AUX MATRIZ NUMERICO A [10] INICIO N = 0 AUX = O PARA I = 1 ATE 10 LER N A [ I ] = N (Bloco para carregar e imprimir o vetor) ESCREVER A [I] PROXIMO PARA I = 1 ATE 9 PARA J = I+1 ATE 10 SE A [I ] > A [J] ENTAO AUX = A [I ] A [ I ] = A [J] (Bloco para ordenar o vetor) A [J] = AUX FIM_SE PROXIMO PROXIMO PARA I = 1 ATE 10 ESCREVER A [I ] (Bloco para imprimir o vetor ordenado) PROXIMO FIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LÓGICA DE PROGRAMAÇÃO 53 APÊNDICE 2 COMANDOS DO INTERPRETADOR DA LINGUAGEM DOS ALGORITMOS (ILA) Os comandos do ILA ( Interpretador da Linguagem dos Algori tmos) são, em geral, os mesmos ut i l izados nas estruturas dos algori tmos representados em Pseudo-Código (Português Estruturado). • INICIO • FIM • LER • ESCREVER • SE • SENAO • FIM_SE • FACA ENQUANTO • FIM_ENQUANTO • PARA – PRÓXIMO, Etc.. . Abaixo temos uma l ista de Comandos e Funções do ILA que podemos (ou devemos) usar nos algori tmos para faci l i tar o desempenho dos algori tmos e também obter uma melhor visual ização dos resultados. • ALEATÓRIO() – Função. Resulta em um valor aleatório sempre maior que zero e menor do que 1. Maior número a ser gerado 0,999999, menor número 0,000001. • COMPRIMENTO(<var>,<texto>) – Função. Somente para dados do t ipo caracter ( texto). O resultado é um valor numérico que indica a quantidade de caracteres que compõem texto ou o conteúdo da variável. Exemplo: x = “casa” – COMPRIMENTO(X) = 4 • COR(<frente>,<fundo>) – Comando Muda o atr ibuto de cor no vídeo, os argumentos (parâmetros) podem ser em texto ou código numérico. Ver tabela de cores no Help do ILA. Exemplo: COR(“verde”,”Amarelo”) é igual a COR(2,15), a fonte f ica em verde sobre o fundo amarelo. Para ter efei to, este comando deve ser usado antes de um comando escrever, l impar ou janela. • ESPERAR(<tempo>) – Comando Suspende a execução do algori tmo por um intervalo de tempo, dependendo da velocidade do processador. Exemplo: ESPERAR(200). • IMPRESSORA() – Função. Para ter efei to a função deve ser usada antes do comando escrever. Desvia as informações enviadas pelo comando escrever para a impressora. Para retornar a escrever no vídeo devemos usar a função Vídeo(). LÓGICA DE PROGRAMAÇÃO 54 • INTEIRO(<n>,<var>) – Função. Extrai de um número ou uma variável qualquer, somente a parte inteira. Exemplos: Inteiro(14,235) = 14. N = 234,57 – Inteiro(N) = 234. • JANELA(<linha>,<coluna>,<linha1>,<coluna1>) – Comando. Desenha uma moldura na tela. A primeira coordenada l inha, coluna, refere- se ao canto superior da janela, e a segunda coordenada l inha1, coluna1, determina o canto inferior direi to da janela. Exemplo: Janela(2,3,20,78), desenha, na tela, uma moldura começando na l inha 2, coluna 3 e terminando na l inha 20, coluna 78. • LIMPAR(<LINHA>,<COLUNA>,<LINHA1>,<COLUNA1>) – COMANDO . Semelhante aocomando janela, l impa uma área da tela desde o canto superior esquerdo, l inha, coluna, até o canto inferior direi to, l inha1, coluna1. Caso forem omit idos os parâmetros (argumentos), será assumido 1,1,24,80, isto é, l impa a tela inteira. Exemplos: Limpar(2,30,2,70), l impa somente a l inha 2 desde a coluna 30 até a coluna 70. Limpar, l impa a tela inteira. • PI – CONSTANTE. Constante numérica cujo resultado é o valor de Pi = 3,14159265359 • POSICIONAR(<linha>,<coluna>) – Comando. Posiciona o cursor na tela, conforme indicado por l inha e coluna. Este comando deve ser usado sempre antes dos comandos Ler e Escrever. Exemplo: POSICIONAR(12,15). Posiciona o cursor na l inha 12, na coluna 15. • RAIZ(<num>,<índice>) – Função. Calcula a raiz indicada pelo índice, de um número qualquer. O parâmetro <num>, indica o número do qual se quer a raiz, e o parâmetro <índice>, indica o t ipo de raiz desejado. Exemplos: Raiz(256,2), calcula a raiz quadrada de 256 = 16. RAIZ(8,3), calcula a raiz cúbica de 8 = 2. • RESTO(<valor1>,<valor2>) – Função. O resultado dessa função é o valor do resto da divisão inteira do valor1 pelo valor2. Exemplos: Resto(24/12) = 0. Resto(25,12) = 1. • RETORNAR – Comando. Retorna um valor (resultado), de uma função definida pelo usuário, para o módulo que chamou a função. • VALOR(<var>,<texto>) – Função. Transforma um texto ou o conteúdo de uma variável caracter em um valor numérico, desde que o conteúdo desse texto ou dessa variável seja apenas caracteres numéricos. Exemplo: VALOR(“12”) = 12. X = “23” – VALOR(X) = 23. • VIDEO() – Função. A saída padrão (Default) do comando Escrever é para o vídeo. Porém, se desviamos essa saída para a impressora usando a função Impressora(), devemos após a impressão retornar à saída para o vídeo. Para isso usamos Video(). LÓGICA DE PROGRAMAÇÃO 55 EXERCÍCIOS DE RACIOCÍNIO LÓGICO 1) Utilizar cálculos aritméticos com oito números oito, (88888888), usando apenas os oito números oito e todos eles de forma a obter como resultado o valor 1000 (mil). 2) Uti l izar cálculos ari tméticos com quatro números quatro, (4444) , usando apenas os quatro números quatro e sempre todos eles de forma a obter os 10 (dez) dígi tos do sistema decimal. Ex: 44-44 = 0, 44/44 = 1, . . . 3) 64, 8, 49, 7, 36. ? . 4) 2, 5, 7, ? , ? , ? , ? , 20, 22, 25. 5) 82, 97, 114, 133, ? . 6) 4, 6, 10, 18, 34, ? . 7) 2,9,100,.. . 8) 2, 10, 12, 16, 17, 18, 19, ? . 9) 10) Um t i jolo pesa 1Kg mais meio t i jolo. Qual o peso de 3 t i jolos? 11) Temos dois baldes, um com capacidade para 3 l i tros e outro com a capacidade de 5 l i t ros. Usando somente estes dois baldes medir no balde de 5 l i tros exatamente 4 l i t ros. 12) Sobre uma mesa há quatro pacotes de presentes exatamente iguais. O conteúdo deles, porém, é di ferente, não sendo igual o peso de cada um deles. Sabemos que o peso total dos 4 pacotes é 8,800 Kg; o quarto pacote pesa menos 800 gramas que o segundo. O terceiro pesa mais 400 gramas que o pr imeiro, e o segundo pacote pesa mais 100 gramas do que a média do peso deles. Qual o peso de cada pacote? 13) Em uma obra temos um grupo de oi to t i jolos. Sete destes t i jolos têm o mesmo peso e um é mais pesado. Usando uma balança de dois pratos e pesando apenas duas vezes, determinar qual o t i jolo é mais pesado. 14) Na cozinha tem um cesta contendo ovos. Uma pessoa veio t i rar ovos desta cesta cinco vezes. Cada vez que ela vinha t i rar ovos, t i rava sempre a metade dos ovos que t inha na cesta mais meio ovo. Quando ela ret irou ovos na quinta vez a cesta f icou vazia. Quantos ovos t inham na cesta antes de ela começar a ret irar ovos? 15) Um operário recebe R$ 50,00 por dia de trabalho para terminar uma obra em 10 dias e paga uma multa de R$ 20,00 por dia que atrasar a obra. No f inal da obra recebeu R$ 380,00. Em quantos dias terminou a obra? LÓGICA DE PROGRAMAÇÃO 56 16) Dada a seguinte divisão: Qual o valor de P,Q,R,S,T . 17) Numa rua tem três casas, temos que l igar Água, Luz e Telefone nas três casas individualmente. Como fazer não cruzando l inhas. Veja abaixo: 18) Dentro de uma peça fechada com uma porta bem vedada, tem uma lâmpada incandescente. Na parte de traz da peça, por fora, tem um interruptor de energia com chave tr ipla. Descobrir qual a chave que l iga a lâmpada, podendo abrir a porta para olhar apenas uma vez. 19) Chegaram ao banco cinco sacos contendo moedas. Quatro sacos têm moedas verdadeiras e apenas um saco contém moedas falsas. O peso de cada moeda verdadeira é de 10gr, e cada moeda falsa pesa 1gr. Fazendo apenas uma pesagem, determinar com certeza qual o saco que está com moedas falsas. 20) Dois árabes se encontram em um oásis, cada um acompanhado de seus camelos. Vamos ident i f icar um deles como X e o outro como Y . Se o Y der um camelo para X , eles f icam com quantidades iguais, porém se for X a dar um camelo para Y , Y f ica com o dobro da quantidade de camelos que f ica X . Quantos camelos tem cada árabe? 21) Encontramos duas portas, a porta A e a porta B , sendo uma do inferno, e a outra, do céu, não sabemos qual a porta certa. Em frente a estas portas estão dois guardas que se revezam caminhando de um lado para outro. Um destes guardas só fala a verdade, nunca diz mentiras. O outro, ao contrário, só diz mentiras, nunca fala a verdade. Também não sabemos qual fala a verdade e qual mente. Só podemos fazer uma pergunta para apenas um dos guardas, e com uma resposta única deste guarda, entramos na porta certa que é a do céu. Como formular a pergunta? LÓGICA DE PROGRAMAÇÃO 57 22) O quadrado mágico. A soma em qualquer direção é sempre um valor constante. Qual a lógica de preenchimento? 23) Uma empresa possui cem (100) funcionários. Foi sol ici tado pelo gerente da mesma um relatório informando quantos funcionários tomavam café, quantos tomavam chá, quantos tomavam ambos e quantas pessoas não tomavam nada. Feito o relatório, apresentava o seguinte: Café – 78 , Chá – 71 , Café e Chá – 48 e Nada – zero . O chefe olhou relatór io e notou que t inha um erro. Qual o erro que existe? 24) Qual o estranho? (AOGIBA – BIAXACA – CELANAMI – RENOUCA – JANARAL) 25) Como chegar aos seguintes resultados? 26) Uma bactéria dobra seu número a cada minuto. Num determinado recipiente ela leva 29 minutos para ocupar até a metade. Quanto tempo levará para encher o recipiente? 27) Ao medir uma vara veri f icou-se que ela tem 10 metros mais a terça parte do seu comprimento. Qual o tamanho da vara? 28) No fundo de um poço com 20 metros de profundidade tem um caracol. Durante o dia o caracol sobe 2 metros na parede do poço e durante a noite cai escorregando 1 metro. Em quantos dias o caracol sai do poço? 29) 30) De uma peça de tecido com 100 metros de comprimento, uma costureira corta 5 metros por dia. Quanto tempo levará para cortar a peça toda? 31) Temos três baldes, um com capacidade para 3 l i t ros, outro com capacidade para 5 l i t ros e o terceiro com a capacidade de 10 l i t ros. Devemos misturar no balde de 5 l i t ros, 4 l i t ros de água e 1 l i t ro de querosene. Como fazer ut i l izando apenas os baldes acima? LÓGICA DE PROGRAMAÇÃO 58 32) Num balcão estão enfi leirados seis copos numa seqüência de 3 cheios e 3 vazios. Mover apenas um copo e deixar a seqüência al ternada com um cheio e um vazio. 33) Dispor ari tmeticamente nove números sete (777777777) de forma que o resultado seja igual a 790. 34) 123² – 122² = ? 538² – 537² = ? 35) Dois pais e dois f i lhos foram a uma confei taria e compraram três doces diferentes. Cada um deles comeu um doce inteiro. Como isto foi possível? 36) Foi deitaràs 08:00. Acertou o despertador para as 09:00 do dia seguinte. Quanto tempo dormiu? 37) Escrever os números de um até nove, menos o oi to (12345679). Escolher o que menos gosta. Mult ipl icar os números 12345679 pelo número escolhido mult ipl icado por nove e observe o resultado. Exemplo: escolhendo o número 5, mult ipl icar (12345679)*45 = ? 38) Precisamos cozinhar um ovo em dois minutos. Só dispomos de duas ampulhetas, uma com tempo de 3 minutos e outra com tempo de 5 minutos. Como medir o tempo corretamente? 39) Um relógio está parado. Outro atrasa uma hora por dia. Qual mostra mais freqüente a hora certa? 40) Sabe-se que 5 melancias valem 21 cajus, que 7 cajus valem 15 laranjas, que 18 laranjas valem 6 mangas e que 10 mangas custam R$ 10,00. Calcular o preço de uma melancia. 41) Observe as f iguras abaixo e descubra qual delas completa a ul t ima seqüência, substi tuindo o X . LÓGICA DE PROGRAMAÇÃO 59 42) Tendo por base as equações solucionadas, determine o valor de X na últ ima equação. 43. Quantos tr iângulos você consegue ver em cada uma das f iguras abaixo? 44. As equações abaixo, formadas por barras, não estão corretas, como transformá-las verdadeiras, movendo apenas uma barra em cada equação? 45. Anal isando as equações abaixo formadas por f iguras, como podemos determinar o valor de X . ÷ 4 =3 + =20 * =32 ÷ + =X LÓGICA DE PROGRAMAÇÃO 60 46. Nos valores contidos nas f iguras abaixo, qual o valor de X? 47. Na f igura abaixo temos 7 quadrados. Mover apenas 3 pal i tos e deixar apenas 5 quadrados iguais. 48. Na f igura abaixo tem 17 pal i tos formando uma f igura com 6 quadrados. Retirar 5 pal i tos e deixar a f igura com apenas 3 quadrados. 49. A f igura a seguir é composta de cinco quadrados formados por 16 pal i tos. Deslocar apenas dois pal i tos e deixar somente quatro quadrados. 50. A f igura abaixo tem cinco quadrados, deslocar apenas quatro pal i tos deixando apenas três quadrados. LÓGICA DE PROGRAMAÇÃO 61 51. Com vinte e quatro pal i tos formamos a f igura abaixo que possui nove quadrados. Retirar seis pal i tos e deixar a f igura com três quadrados. 52. Com doze pal i tos formamos a f igura abaixo que tem quatro quadrados. Retirar apenas dois pal i tos, deixando a f igura com apenas dois quadrados. 53. Na f igura abaixo temos um tr iângulo equi látero formado por nove pal i tos. Mover cinco pal i tos e formar cinco tr iângulos também equi láteros. LÓGICA DE PROGRAMAÇÃO 62 EXERCÍCIOS COM ALGORÍTMOS 1) Escreva o pseudocódigo em português estruturado que leia três valores em variáveis distintas e armazene a soma em uma outra variável e escreva o valor obtido. 2) Ler três valores em variáveis diferentes armazene, a soma das duas primeiras em uma nova variável e o produto das duas últimas em uma outra variável e mostre o produto das duas novas variáveis em uma terceira variável. 3) Escreva o pseudocódigo em português estruturado e que leia três valores em diferentes variáveis e escreva o maior valor digitado. 4) Escreva o pseudocódigo em português estruturado que leia dez valores fornecidos pelo usuário e escreva os valores e seus dobros. 5) Gerar números de zero a 200 variando de 5 em 5. Mostrar estes números digitados e, no final, a soma deles e quantos números foram gerados. 6) Fazer uma tabela de conversão de polegadas para centímetros. Esta tabela deverá começar em uma polegada e terminar em 10 polegadas variando de 0.5 em 0.5 de polegada. Mostrar a tabela 7) Ler 10 valores dois a dois, compará-los entre si. Mostrar cada par de números, e ao lado deles a mensagem, segundo cada caso. Se forem iguais, se o maior é o primeiro ou se o maior é o segundo. 8) Escreva o pseudocódigo em português estruturado que mostre somente os números pares de 0 até 100. Se este número for maior que 20, escreva também o seu quadrado. 9) Escreva o pseudocódigo em português estruturado que, para 20 números fornecidos pelo usuário, escreva a quantidade de positivos e de negativos. 10) Escreva o pseudocódigo em português estruturado que mostre a tabuada de zero até 10 para um número fornecido pelo usuário. 11) Ler oito valores positivos. Testar cada valor, se for maior do que 100, extrair a raiz quadrada, caso contrário, elevar ao quadrado. Mostrar os números lidos e ao lado a raiz ou o quadrado. No final informar quantos números pares foram digitados. 12) Uma empresa possui 15 funcionários. Ler para cada funcionário o seu nome, as horas trabalhadas e seu salário hora. Calcular o salário bruto. Mostrar o nome de cada funcionário, as horas trabalhadas, o salário hora e o salário bruto. No final mostrar o total de salários brutos. 13) Ler 20 valores dois a dois. Testar estes valores. Se o segundo for maior que o primeiro, calcular a soma deles. Se o primeiro for maior que o segundo, calcular a diferença, e, se forem iguais, multiplicá-los. 14) Fazer um algoritmo que calcule as raízes da equação do segundo grau usando a fórmula de Báscara. Testar o discriminante, caso seja negativo, informar que é impossível no campo dos números reais; caso contrário, calcular e mostrar as raízes. 15) Ler o nome, o sexo e a idade de 100 pessoas. Mostrar quantas pessoas são do sexo masculino e quantas são do sexo feminino, quantas são menores de 18 anos e quantas são maiores ou iguais a 18. LÓGICA DE PROGRAMAÇÃO 63 16) Ler oito valores diferentes de zero, imprimir os valores lidos e no final mostrar quantos números são negativos. 17) Ler uma série de dez números, mostrar os números lidos e, no final, a soma deles e quais foram o maior e o menor número digitado. 18) Ler o nome e número de filhos de 30 pessoas, imprimindo: a. Quantas pessoas têm de 1 a 3 filhos. b. Quantas pessoas têm de 4 a 7 filhos. c. Quantas pessoas têm 8 filhos ou mais. d. Quantas pessoas não têm filho. 19) Ler nome, idade e sexo de 40 pessoas e após imprimir: a. Número de pessoas do sexo masculino. b. Número de pessoas do sexo feminino. c. Número de pessoas com idade até 30 anos. d. Número de pessoas com idade igual ou superior a 60 anos. 20) O proprietário de um cinema desejou saber certo dia qual seria a sessão mais lucrativa para ele. Assim sendo, para cada um dos 100 espectadores deste dia registrou nome e sessão (tarde ou noite). Fazer um algoritmo para ler estes dados e após informar ao proprietário qual foi a sessão que teve mais espectadores ou se foram iguais. 21) Numa pesquisa populacional, entre outros dados, registrou-se para cada um dos 160000 recenseados o nome, sexo, idade e grau de escolaridade (0=analfabeto, 1=primário, 2=secundário, 3=superior, 4=pós-graduação). Como resultado da pesquisa deseja-se obter um relatório contendo as seguintes informações: a. Número de analfabetos. b. Número de pessoas com instrução primária. c. Número de pessoas com mais de 50 anos e instrução secundária. d. Número de pessoas com formação superior e. Número de homens pós-graduados. f. Número de mulheres pós-graduadas 22) Ler as notas e os nomes de uma turma de 30 alunos, mostrar os nomes e as notas de cada aluno e a mensagem de aprovado, se a nota for maior ou igual a 7 e reprovado, se menor que 7. No final imprimir a nota mais alta, a nota mais baixa, a média aritmética da turma, quantos alunos foram aprovados e quantos foram reprovados. 23) Ler 10 valores maiores que zero. Mostrar os valores e informar se são ímpares ou não. No final mostrar a soma deles, a média aritmética, a soma dos pares, a soma dos ímpares, o maior e o menorvalor. LÓGICA DE PROGRAMAÇÃO 64 24) Ler o nome e o salário bruto de 15 funcionários de uma empresa. Calcular o INSS e o IRRF conforme tabelas abaixo. Calcular o valor do Vale Transporte = 6% sobre o salário bruto. Calcular o salário líquido. Mostrar os nomes dos funcionários, o salário bruto, o valor do INSS, valor do IRRF, valor do Vale Transporte e o salário líquido. Observação: O valor do Vale Transporte não pode ul trapassar R$ 95,00 No final mostrar: - A soma dos salários l íquidos; - A média dos salários brutos; - O maior salár io; - O menor salár io; 25) Fazer um algoritmo que solicite dois valores quaisquer e apresente um menu com as opções de soma, subtração, multiplicação e divisão, Conforme a opção escolhida apresentar os números digitados e o resultado. Perguntar se quer mais cálculos; caso positivo reiniciar, se não, encerrar o programa informando quantos cálculos foram efetuados. 26) Uma empresa resolveu conceder um aumento aos seus funcionários conforme tabela abaixo: Salários até R$ 200,00 20% Salários de R$ 200,01 até R$ 500,00 15% Salários acima de R$ 500,00 10% a. Ler para cada funcionário o nome e o salár io antigo. Calcular o novo salário. Mostrar o nome, o salário anterior e o novo salár io. Final izar o programa quando for digi tada a palavra “FIM” em lugar do nome. Informar no f inal o seguinte: b. Quantos funcionários têm a empresa; c. O total dos salários antigos; d. O total dos salários novos; e. O maior salár io novo; f . O menor salár io novo. 27) Escrever um algori tmo que lê a quantidade de cobaias uti l izadas em cada uma das experiências e um código 1 ou 2. O código 1 representa coelhos e o 2 representa ratos. Quer-se saber o total de cobaias ut i l izadas, o total de ratos, o total de coelhos, a percentagem de coelhos e a percentagem de ratos. Escrever esses valores. Usar como Flag 999, na quantidade de cobaias. LÓGICA DE PROGRAMAÇÃO 65 28) Em um certo estabelecimento selecionaram 20 pessoas com diferentes idades e para cada uma delas foram registrados, nome, idade e mês de nascimento. Após o registro de dados, desejou-se saber: a. Idade da pessoa mais jovem; b. Nome e idade da pessoa mais idosa; c. Número de pessoas nascidas no mês de setembro e no mês de outubro. 29) Um fabricante de televisores deseja inteirar-se do movimento de sua produção durante um determinado período, para cada um dos televisores fabricados, registraram-se os seguintes dados: modelo (1, 2 ou 3), t ipo preto e branco (PB) ou color ido (C), preço de custo e preço de venda. a. Elaborar um algori tmo para ler e imprimir estes dados, além do lucro obtido na venda de cada televisor. b. Usar como f lag 9 no modelo. c. Ao f inal do algori tmo deverá ser impresso um segundo relatório contendo as seguintes informações: i . Número de televisores vendidos do modelo 1; i i . Número de televisores vendidos do modelo 2; i i i . Número de televisores vendidos do modelo 3; iv. Número de televisores preto e branco vendidos; v. Número de televisores color idos vendidos; vi . Lucro total obtido pela fábrica; vi i . Maior preço de custo; vi i i . Maior preço de venda. 30) Uma empresa deseja real izar um levantamento no cadastro de seus funcionários. Para isso, deverá ser l ido para cada funcionário: nome, idade, salário e ano de admissão; a. Ao f inal deverá ser impresso um relatório em que constarão os seguintes dados: i . Nome do funcionário mais idoso; i i . Nome do funcionário mais antigo na empresa; i i i . Maior salár io na empresa. iv. Usar como f lag ZZZ no nome. LÓGICA DE PROGRAMAÇÃO 66 31) A empresa X requisi tou uma pesquisa em seu cadastro de pessoal com objetivo de inteirar-se de alguns dados. Para cada um dos seus funcionários consta no cadastro nome, sexo, tempo de serviço e salár io. O algori tmo deverá ler estes dados e após imprimir na tela, um relatór io contendo as seguintes informações: a. Nome, sexo, tempo de serviço salário e mensagem "FUNCIONÁRIO APOSENTADO", para os empregados que possuírem mais de 35 anos de serviço; · b. Nome, sexo, tempo de serviço e salár io dos funcionários que possuírem tempo de serviço inferior a 3 anos. c. Nome, sexo, tempo de serviço e salár io dos funcionários que possuírem tempo de serviço superior a 3 anos e salários inferiores a R$ 500,00 d. Usar como f lag FIM no campo nome. 32) Uma empresa fez uma pesquisa para saber a aceitação de um produto lançado no mercado, para isso devemos ler o sexo e a resposta de cada pessoa pesquisada. a. Usar com f lag a letra X no campo sexo. b. No f inal informar: i . Quantas pessoas responderam SIM. i i . Quantas pessoas responderam NÃO. i i i . Quantas pessoas do sexo feminino disseram SIM. iv. Quantas pessoas do sexo mascul ino disseram NÂO. v. Quantas foram as pessoas pesquisadas. 33) Ler o nome, as horas trabalhadas e o salário hora de cada funcionário de uma empresa. O programa terminará quando forem digitadas três letras X no lugar do nome (XXX). Calcular o salár io bruto. Fazer uma função para calcular o INSS, outra para calcular o IRRF, conforme tabelas abaixo e outra para calcular o vale transporte, que é de 6% sobre o salário Bruto. Observação: O valor do Vale Transporte não pode ul trapassar 110,00 reais. LÓGICA DE PROGRAMAÇÃO 67 a. Calcular o Salário Líquido. b. Escrever o nome, Salár io Bruto, INSS. IRRF, VT e SL para cada funcionário. 34) Elaborar um algori tmo para ler números posit ivos. O programa terminará quando o usuário digi tar o zero. Escrever os números l idos. Fazer uma função para informar se o número digi tado é primo ou não. a. No f inal informar: i . A soma total dos números. i i . A soma dos números primos. i i i . O maior número. iv. O menor número. 35) Ler um número de um a sete, correspondendo ao dia da semana, fazer um procedimento para escrever o dia da semana em caracteres. 36) Ler como valor numérico o dia, mês e ano em varáveis dist intas, repassar estes parâmetros para uma função que vai testar se esta data está digi tada corretamente. 37) Ler um valor de um até 10. Consist i r a entrada. Fazer uma função para calcular o fator ial do número digi tado. 38) Escrever um algori tmo que lê um vetor V[16] e o escreve. Conte, a seguir, quantos valores de V são negativos, quantos são pares, quantos são impares e escreva esta informação. 39) Escreva um algori tmo que lê um vetor A [20] e escreve todos os valores maiores que 10 deste vetor e suas posições. 40) Escrever um algoritmo que lê um vetor X[15] e o escreve. Substi tua, a seguir, todos os valores zeros de X pelo valor do dobro de sua posição e escrever o novo vetor. 41) Escrever um algori tmo que lê um vetor C[20] e o escreve. Encontre, a seguir, o maior elemento de C e o escreva. 42) Escrever um algoritmo que lê um vetor V[18] e o escreve. Encontre, a seguir, o menor elemento e a sua posição no vetor V e escreva: "O MENOR ELEMENTO DE V É =“, M, “E A SUA POSIÇÃO É =“, P. 43) Escreva o pseudocódigo em português estruturado que leia um vetor V de 10 posições e, após, veri f ica se um número N, fornecido pelo usuário, existe no vetor. Se exist ir , indicar a posição, se não, escrever a mensagem "O número fornecido não existe no vetor!". 44) Escreva o pseudocódigo em português estruturado que leia um vetor A, de 5 posições, um vetor B de 5 posições e coloque a soma dos elementos no vetor C, também de 5 posições. LÓGICA DE PROGRAMAÇÃO 68 45) Ler um vetor K de cinco posições. Escrever o vetor. Mostrar a soma do primeiro elemento com o úl t imo e a mult ipl icação do segundo pelo quarto e a di ferença entrea mult ipl icação e a soma. 46) Escreva o pseudocódigo em português estruturado que leia um vetor V de 20 posições e classif ique-o em ordem crescente. Escreva o vetor ordenado. 47) Ler 50 valores de 1 até 10, contar e mostrar quantas vezes foi digi tado cada valor. 48) Escreva o pseudocódigo em português estruturado que leia um vetor L de 15 posições e classif ique-o em ordem decrescente. Escreva o vetor ordenado. 49) Preencher um vetor de 15 posições com valores aleatórios de 1 até 100. Escrever o vetor. Pesquisar os valores do vetor. Se forem menores que 50 substi tuir pelo seu tr iplo, caso contrário substi tuir pelo seu dobro. Escrever o vetor modif icado. 50) Escreva um algori tmo que lê uma matriz M[5,5] e calcula as somas: a. Da l inha 4 de M; b. Da coluna 2 de M; c. De todos os elementos da matr iz. 51) Escrever um algori tmo que lê duas matrizes N1[4,6] E N2[4,6] e cria uma matr iz M1 que seja a soma de N1 com N2. Escrever as matr izes l idas e calculadas. 52) Escrever um algori tmo que lê uma matriz M[6,6] e calcula as somas das l inhas e das colunas. Escrever a matriz l ida e as somas calculadas 53) Escrever um algori tmo que lê uma matriz M[5,5] e calcula as somas: a. Da l inha 3 de M; b. Da coluna 5 de M; c. Da diagonal da matriz. d. Da diagonal inversa da matr iz. 54) Preencher uma matr iz M de quinze l inhas por quinze colunas M[15,15], com números aleatórios de 1(um) até 1000(mil). Sol ic i tar que o usuário digi te um valor também de 1(um) até 1000(mil) . Consist i r esta entrada. Pesquisar se o número digi tado foi gerado na matr iz. Caso tenha sido encontrado informar ao usuário em qual posição se encontra e se não for encontrado enviar uma mensagem informando que não foi gerado. 55) Ler valores para uma matriz de cinco l inhas por cinco colunas, preencher e escrever a matr iz l inha por l inha. Transpor a matr iz, isto é, passar o valor das l inhas para as colunas e escrever novamente a matriz.