Escola Estadual de Educação Profissional - EEEP Ensino Médio Integrado à Educação Profissional Curso Técnico em Informática Lógica de Programação Governador Cid Ferreira Gomes Vice Governador Francisco José Pinheiro Secretária da Educação Maria Izolda Cela de Arruda Coelho Secretário Adjunto Maurício Holanda Maia Secretário Executivo Antônio Idilvan de Lima Alencar Assessora Institucional do Gabinete da Seduc Cristiane Carvalho Holanda Coordenadora de Desenvolvimento da Escola Maria da Conceição Ávila de Misquita Vinãs Coordenadora da Educação Profissional – SEDUC Andrea Rocha Araujo Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional LÓGICA DE PROGRAMAÇÃO Ementa Curso pretende aplicar os conhecimentos de lógica de programação servindo de introdução ao estudo da programação de sistemas de computadores e a orientação a objetos. Objetivo PROPICIAR AOS ALUNOS INTEGRANTES DO CURSO: Desenvolver a construção de algorimos usando: o o o Seqüência Lógica. Instruções. Estruturas de Comandos Conteúdo programático CONCEITOS INICIAIS LÓGICA LÓGICA DE PROGRAMAÇÃO ALGORITMOS FORMAS DE REPRESENTAÇÃO DE UM ALGORITMO ALGORITMOS NATURAIS ELEMENTOS USADOS NOS ALGORITMOS CONSTANTES VARIÁVEIS EXPRESSÕES OPERANDOS E OPERADORES OPERANDOS OPERADORES ESTRUTURAS DE CONTROLE ESTRUTURA SEQÜENCIAL ESTRUTURA DE SELEÇÃO SIMPLES ESTRUTURA DE SELEÇÃO COMPOSTA ESTRUTURA DE SELEÇÃO MÚLTIPLA SELEÇÃO MÚLTIPLA COM ESTRUTURA DE FACA CASO: ESTRUTURA DE REPETIÇÃO ESTRUTURA PARA PROXIMO EXEMPLO DE REPETIÇÃO POR FLAG DE RESPOSTA EXEMPLO DE REPETIÇÃO POR FLAG PREDETERMINADO PROCEDIMENTOS E FUNÇÕES DIFERENÇA ENTRE PROCEDIMENTO E FUNÇÃO Informática - Lógica de Programação 1 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional PASSAGEM DE PARÂMETROS EXEMPLOS DE PROCEDIMENTO E FUNÇÃO RECURSIVIDADE RESULTADO VETORES E MATRIZES ALGORITMOS PARA MANIPULAR VETORES E MATRIZES EXERCÍCIOS COM ALGORITMOS Referencia bibliográfica Lógica de Programação : SENAC.RS - Departamento Regional no Rio Grande do Sul Informática - Lógica de Programação 2 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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 possibilitou o aparecimento de instrumentos como a roda, roldana, alavanca, carro e até o computador. No entanto as tarefas que devem ser realizadas 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 deaçõ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 qualidade). Porém, se as soluções não forem bem planejadas (passo a passo), com certeza essa meta não será atingida. Antes de iniciar o estudo de Lógica de Programação, conheça alguns conceitos básicos: SOFTWARE Software é o conjunto dos programas que comandam o funcionamento do Hardware. Programas são feitos a partir de algoritmos (objeto de estudo deste curso), seqüências de instruções/comandos para se atingir um objetivo. Depois de pronto, o algoritmo é convertido para uma linguagem de programação. O produto dessa conversão é um programa. LÓGICA As pessoas utilizam a lógica no cotidiano sem perceber; chegam mesmo a citá-la, sem entender direito o seu significado. Segundo o dicionário Aurélio, 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 Brasil fica na América do Sul. A América do sul fica no continente americano. Logo, os brasileiros são americanos. Às vezes o raciocínio funciona desordenadamente. Quantas vezes você já ouviu as frases: “E se acontecer aquilo?”, ou “É, mas eu não tinha pensado nisso!” Neste exemplo, estão descritas ações de quem vai a um banco; entretanto, veja se seria possível retirar o dinheiro obedecendo à seqüência descrita. Informática - Lógica de Programação 3 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 1 Sair do banco. 2 Aguardar a vez de ser atendido. 3 Entrar na fila do caixa. 4 Digitar a senha. 5 Entrar no banco 6 Informar o valor a ser retirado. 7 Procurar a fila 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. Você conseguiria retirar 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 retirar dinheiro de um banco estando fora dele? Agora observe as mesmas ações na seqüência correta. 1 Entrar no banco. 2 Procurar a fila do caixa. 3 Entrar na fila 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 retirado. 7 Digitar 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 Utiliza-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 significa apenas contextualizar 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 atingir um objetivo. Já ação é um fato que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e definido. Por exemplo, abrir uma porta é uma ação. Estado inicial (porta fechada), é aplicada a ação (abrir) por um tempo determinado (segundos), levando ao estado final (porta aberta), previsível e definido (pois é esperado que, quando se abre algo, principalmente qualquer porta, no final, ela esteja aberta). OBJETIVO O objetivo deste curso é proporcionar a apropriação de conhecimentos capazes de reconhecer, utilizar e saber a finalidade e o funcionamento das técnicas, ferramentas e elementos utilizados na construção de algoritmos para que possamos ordenar, desenvolver e aprimorar o raciocínio lógico aplicado na solução de problemas do cotidiano. Informática - Lógica de Programação 4 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional ALGORITMOS O QUE É UM ALGORITMO? Um Algoritmo é uma seqüência finita 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 linguagem de programação a ser utilizada. O objetivo da construção de Algoritmos é que eles possam ser adaptados a qualquer linguagem 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 algoritmo: • PSEUDOCÓDIGO (OU PORTUGUÊS ESTRUTURADO, OU PORTUGOL). • FLUXOGRAMA • DIAGRAMA DE CHAPIN PSEUDOCÓDIGO: As estruturas lógicas são escritas numa linguagem 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 figuras geométricas, interligadas por setas que indicam o caminho a ser seguido. ALGORITMOS NATURAIS Algoritmos naturais são usados para linguagens mais antigas que não são estruturadas e nem modulares, como Fortran, Basic, Cobol (antes de ter ocomando Perform), etc... Esse tipo de algoritmo utiliza comandos de retorno ou avanço (instrução GOTO), do fluxo para determinada linha do algoritmo. Com o surgimento das linguagens de programação estruturadas e modulares esse tipo de algoritmo se tornou obsoleto. As linguagens estruturadas não possuem mais os comandos de retorno ou avanço (instrução GO TO), para uma determinada linha do algoritmo, a própriaestrutura é que define o retorno ou avanço do fluxo. EXEMPLO DE ALGORITMO NATURAL Algoritmo para retirar a devolução do Imposto de Renda. Informática - Lógica de Programação 5 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional INICIO Passo 1 – Sair de casa. Passo 2 – Ir até o banco. Passo 3 – dirigir-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 ALGORITMO NATURAL COMPARADO COM ALGORITMO ESTRUTURADO Desafio: ler dez valores numéricos, mostrar os valores lidos e no final mostrar a soma dos números digitados. Na construção de algoritmos, utilizamos diversos elementos. Entre eles podemos citar valores informados ao programa (pelo teclado ou lidos 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 algoritmo. ELEMENTOS USADOS NOS ALGORITMOS 1 CONSTANTES: 1.1 Numérico; Informática - Lógica de Programação 6 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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; CONSTANTES CONSTANTES: são valores utilizados 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 linguagem, pode ser o ponto ou a vírgula). Exemplos: 123, 34,75, (567), -512, etc. DATA: Quando tiver 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). Informática - Lógica de Programação 7 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional CARACTER: (Texto, Literal ou String). São reconhecidas pela exclusão, ou seja, tudo que não for reconhecido como numérico, data ou lógico, é do tipo caracter. 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 identificar 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_cli, Num_func, Datanasc, etc. As variáveis são declaradas no início do algoritmo. Dependendo do valor a ser armazenado, as variáveis poderão ser dos tipos: Numérico, Data, Lógico ou Caracter (texto, literal ou string). 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 rotina 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 atribuirmos um novo valor que deve ser do mesmo tipo, o valor anterior será sumariamente eliminado. 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á eliminado. Escopo: (abrangência), as variáveis, dependendo da linguagem, 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. EXPRESSÕES Expressão: é qualquer instrução de manipulação de dados. As expressões podem ser: Informática - Lógica de Programação 8 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional ARITMÉTICAS: Nesse tipo de expressão só podemos utilizar operadores, constantes e variáveis do tipo numérico, e o resultado será sempre um valor numérico. Exemplo 3+2, A*B. RELACIONAIS: Nesse tipo de expressão realizamos uma comparação entre dois ou mais operandos do mesmo tipo, utilizando 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 utilizando 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”. 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 aplicativas mais específicas como as Planilhas Eletrônicas e os Gerenciadores de Bancos de Dados podem utilizar 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 tipo de manipulação e também determinam de que tipo é a expressão. Os operadores se dividem em três grupos: ARITMÉTICOS: • Adição: + • Subtração: • Multiplicação: * • Divisão: / • Exponenciação: ^ Observação: Os operadores aritmé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 multiplicações e divisões, e, por último, as somas e subtrações. Em caso de empate de prioridades, o cálculo é efetuado sempre da esquerda para a direita. Para alterar a prioridade dos operadores, usamos parênteses. Informática - Lógica de Programação 9 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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 utilizam 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 final 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 final só será falso se o resultado de todas as condições forem falsas; qualquer outra hipótese, o resultado será verdadeiro. Veja o exemplo da tabela verdade abaixo: Comando de atribuição O comando de atribuição serve para colocar um valor (conteúdo) dentro de uma variável. O comando de atribuição, dependendo da linguagem, 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. Informática - Lógica de Programação 10 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional Neste curso utilizaremos como comando de atribuição o sinal de =. ESTRUTURAS DE CONTROLE As estruturas de controle servem para direcionar o fluxo 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 tipo de estrutura não possui palavras chaves, é composta somente por linhas de comandos sucessivas e está sempre limitada pelo início e fim do algoritmo ou pelo inicio e fim 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 utilizar 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 tipos diferentes: Seleção Simples, Seleção Composta ou Seleção Múltipla. 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. Informática - Lógica de Programação 11 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional As palavras chaves de uma estrutura de Seleção Simples são: SE <CONDIÇÃO> ENTÃO COMANDOS 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. 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 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: SE <CONDIÇÃO> ENTÃO COMANDOS SENAO COMANDOS FIM_SE 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 estiver 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. Informática - Lógica de Programação 12 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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 ESTRUTURA DE SELEÇÃO MÚLTIPLA A Estrutura de Seleção Múltipla é utilizada 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. Utilizando 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. SE <CONDIÇÃO> ENTÃO SE <CONDIÇÃO> ENTÃO COMANDOS SENAO COMANDOS FIM_SE SENAO COMANDOS FIM_SE Encadeamento somente se o resultado da primeira condição for falso. Informática - Lógica de Programação 13 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional SE <CONDIÇÃO> ENTÃO COMANDOS SENAO SE <CONDIÇÃO> ENTÃO COMANDOS SENAO COMANDOS FIM_SE FIM_SE Um encadeamento se o resultado da primeira condição seja verdadeiro, e outro encadeamento, caso o resultado da primeira condição seja falso. SELEÇÃO MÚLTIPLA 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 utilizando a estrutura Faca Caso. Exemplo: Ler o estado civil 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 civil em caracteres. SOLUÇÃO UTILIZANDO 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” Informática - Lógica de Programação 14 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional SENAO ESCREVER “Valor inválido” FIM_SE FIM_SE FIM_SE SOLUÇÃO UTILIZANDO 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 rotina tenha que ser executada mais do que uma vez durante o mesmo processamento. As repetições podem ser feitas por Contador Fixo, ou seja, a rotina vai ser repetida sempre um número fixo de vezes. Por Flag de Resposta, onde a cada volta do laço perguntamos ao usuário se ele quer continuar ou não, se a resposta for sim à rotina, segue repetindo; e se for não, a rotina 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 rotina termina. Para construir a estrutura de repetição, podemos utilizar dois tipos 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. Informática - Lógica de Programação 15 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional ESTRUTURA FACA ENQUANTO Os Comandos serão executados se a condição for verdadeira e se repetirá enquanto a condição não seja negada. ESTRUTURA PARA PROXIMO As palavras chave da estrutura PARA PROXIMO são: Neste tipo de construção a rotina sempre entra na estrutura a primeira vez, visto que no inicio da estrutura temos uma atribuiçã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 final (VF), enquanto o valor da variável de controle não for maior do que o valor final (VF), continua repetindo. 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 UTILIZANDO A ESTRUTURA FACA ENQUANTO Informática - Lógica de Programação 16 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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 UTILIZANDO A ESTRUTURA PARA PROXIMO 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 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. Informática - Lógica de Programação 17 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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 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 digitar a palavra “FIM”, como conteúdo da variável Nome, em vez de um nome válido. Observação: Predeterminamos que quando o usuário digitar 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 Informática - Lógica de Programação 18 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional LER N2 M = (N1+N2)/2 ESCREVER NOME, N1, N2,M FIM_SE FIM_ENQUANTO FIM Até aqui analisamos quais são as palavras-chave e como se representam os algoritmos em Pseudocódigo. Veremos a seguir como fazer a representação das estruturas de controle através de Fluxograma. ESTRUTURA SEQÜENCIAL ESTRUTURA DE SELEÇÃO SIMPLES - SE Informática - Lógica de Programação 19 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional ESTRUTURA DE SELEÇÃO COMPOSTA ESTRUTURA DE SELEÇÃO MÚLTIPLA ESTRUTURA DE REPETIÇÃO Informática - Lógica de Programação 20 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional PROCEDIMENTOS E FUNÇÕES Programação Estruturada. A característica dessa programação é a utilizaçã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 algoritmos. Para inserir módulos em um algoritmo existem os comandos Procedimento e Função. As ações de procedimento e função estão hierarquicamente subordinadas a um algoritmo 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 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 é feita como uma linha de comando normal, repassando ou não parâmetros (argumentos); já a chamada de uma função sempre deve ser por atribuição a uma variável ou por um teste condicional, também repassando ou não parâmetros (argumentos). Parâmetros (argumentos) Na técnica de modularização podem ser utilizados pontos de comunicação entre os módulos. Esses pontos, chamados Parâmetros, classificam-se em formais e reais. Informática - Lógica de Programação 21 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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 alterado, não modificará o conteúdo da variável cujo valor foi repassado. EXEMPLOS DE PROCEDIMENTO E FUNÇÃO PROCEDIMENTO Ler o estado civil de uma pessoa como valor numérico, sendo 1 para solteiro, 2 para casado e 3 para outros. Escrever o estado civil em caracteres. Módulo Principal VARIAVEIS Numerico ec, e INICIO Ec = 0 Ler ec Traduz (ec) FIM FUNÇÃO Ler a base e altura de um triângulo, calculada. Módulo Principal VARIAVEIS Numerico base, altura, área,a Inicio Base = 0 Altura = 0 Area = 0 Ler Base Ler Altura Area = Calc_Área (Base, Altura) Escrever Área FIM Procedimento Traduz(e) INICIO SE e = 1 entao Escrever “Solteiro” SENAO SE e = 2 entao Escrever “casado” SENÃO SE e = 3 entao Escrever “outros” SENAO Escrever “Inválido” FIM_SE FIM_SE FIM_SE a área. Escrever calcular FIM a base, a altura e a área Funcao Calc_Área( INICIO a=b*h retornar a FIM RECURSIVIDADE Os Procedimentos e as Funções, na maioria das linguagens, possuem a propriedade da recursividade, isto é, a capacidade de um procedimento ou função chamar eles mesmos. VARIAVEIS Numerico Num, N INICIO Num= 0 Mostra(Num) FIM PROCEDIMENTO 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. Informática - Lógica de Programação 22 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional VETORES E MATRIZES O QUE SÃO VETORES E MATRIZES Vetores e Matrizes, que nas linguagens 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 identificados pelo nome da variável e por um número ou mais números, dependendo de quantas dimensões tem a matriz. Esse número ou esses números são os índices da matriz, pois indicam a posição do valor (elemento) dentro da Matriz ou do 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 feitas três divisões, podemos nesse armário guardar não apenas três objetos, mas, sim, nove objetos. Matriz numérico V[5] Índice 1 2 3 4 5 Valores 5 1 5 1 8 3 5 4 0 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 MATRIZ Matriz numérico M[3,3] Índice 1 2 3 1 20 14 60 2 15 17 54 3 30 76 10 Para referenciar o valor 76, temos que indicar M[2,3], isto é, o elemento da matriz que armazena o valor 76 está na linha 2, coluna 3. A indicação do índice ou índices é feita sempre entre colchetes “[ ]”, ou em algumas outras linguagens 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). Exemplo: M[2,3], o número 2 indica a linha, e o numero 3 indica a coluna, Posição do Elemento (local do valor armazenado). Informática - Lógica de Programação 23 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional ALGORITMOS PARA MANIPULAR VETORES E MATRIZES Exemplo de Vetor: Algoritmo para ler e escrever um Vetor de nome V com cinco posições (elementos). Exemplo de Matriz: Algoritmo para ler e escrever uma Matriz de nome M com nove posições (elementos), com três linhas 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 VARIAVEIS NUMERICO AUX, I MATRIZ NUMERICO V[5] INICIO AUX = 0 PARA I = 1 ATE 5 LER AUX EXEMPLO DE ALGORITMO PARA ORDENAR UM VETOR Desafio: Classificar 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 EXERCÍCIOS COM ALGORITMOS 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. Informática - Lógica de Programação 24 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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. 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. Informática - Lógica de Programação 25 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional 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 menor valor. 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. 24) 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), tipo preto e branco (PB) ou colorido (C), preço de custo e preço de venda. Elaborar um algoritmo para ler e imprimir estes dados, além do lucro obtido na venda de cada televisor. Informática - Lógica de Programação 26 Escola Estadual de Educação Profissional [EEEP] Ensino Médio Integrado à Educação Profissional a. Elaborar um algoritmo para ler e imprimir estes dados, além do lucro obtido na venda de cada televisor. b. Usar como flag 9 no modelo. c. Ao final do algoritmo deverá ser impresso um segundo relatório contendo as seguintes informações: i. Número de televisores vendidos do modelo 1; ii. Número de televisores vendidos do modelo 2; iii. Número de televisores vendidos do modelo 3; iv. Número de televisores preto e branco vendidos; v. Número de televisores coloridos vendidos; vi. Lucro total obtido pela fábrica; vii. Maior preço de custo; viii. Maior preço de venda. 25) Uma empresa deseja realizar um levantamento no cadastro de seus funcionários. Para isso, deverá ser lido para cada funcionário: nome, idade, salário e ano de admissão; a. Ao final deverá ser impresso um relatório em que constarão os seguintes dados: i. Nome do funcionário mais idoso; ii. Nome do funcionário mais antigo na empresa; iii. Maior salário na empresa. iv. Usar como flag ZZZ no nome. Informática - Lógica de Programação 27 Hino Nacional Hino do Estado do Ceará Ouviram do Ipiranga as margens plácidas De um povo heróico o brado retumbante, E o sol da liberdade, em raios fúlgidos, Brilhou no céu da pátria nesse instante. Poesia de Thomaz Lopes Música de Alberto Nepomuceno Terra do sol, do amor, terra da luz! Soa o clarim que tua glória conta! Terra, o teu nome a fama aos céus remonta Em clarão que seduz! Nome que brilha esplêndido luzeiro Nos fulvos braços de ouro do cruzeiro! Se o penhor dessa igualdade Conseguimos conquistar com braço forte, Em teu seio, ó liberdade, Desafia o nosso peito a própria morte! Ó Pátria amada, Idolatrada, Salve! Salve! Brasil, um sonho intenso, um raio vívido De amor e de esperança à terra desce, Se em teu formoso céu, risonho e límpido, A imagem do Cruzeiro resplandece. Gigante pela própria natureza, És belo, és forte, impávido colosso, E o teu futuro espelha essa grandeza. Terra adorada, Entre outras mil, És tu, Brasil, Ó Pátria amada! Dos filhos deste solo és mãe gentil, Pátria amada,Brasil! Deitado eternamente em berço esplêndido, Ao som do mar e à luz do céu profundo, Fulguras, ó Brasil, florão da América, Iluminado ao sol do Novo Mundo! Do que a terra, mais garrida, Teus risonhos, lindos campos têm mais flores; "Nossos bosques têm mais vida", "Nossa vida" no teu seio "mais amores." Ó Pátria amada, Idolatrada, Salve! Salve! Brasil, de amor eterno seja símbolo O lábaro que ostentas estrelado, E diga o verde-louro dessa flâmula - "Paz no futuro e glória no passado." Mas, se ergues da justiça a clava forte, Verás que um filho teu não foge à luta, Nem teme, quem te adora, a própria morte. Terra adorada, Entre outras mil, És tu, Brasil, Ó Pátria amada! Dos filhos deste solo és mãe gentil, Pátria amada, Brasil! Mudem-se em flor as pedras dos caminhos! Chuvas de prata rolem das estrelas... E despertando, deslumbrada, ao vê-las Ressoa a voz dos ninhos... Há de florar nas rosas e nos cravos Rubros o sangue ardente dos escravos. Seja teu verbo a voz do coração, Verbo de paz e amor do Sul ao Norte! Ruja teu peito em luta contra a morte, Acordando a amplidão. Peito que deu alívio a quem sofria E foi o sol iluminando o dia! Tua jangada afoita enfune o pano! Vento feliz conduza a vela ousada! Que importa que no seu barco seja um nada Na vastidão do oceano, Se à proa vão heróis e marinheiros E vão no peito corações guerreiros? Se, nós te amamos, em aventuras e mágoas! Porque esse chão que embebe a água dos rios Há de florar em meses, nos estios E bosques, pelas águas! Selvas e rios, serras e florestas Brotem no solo em rumorosas festas! Abra-se ao vento o teu pendão natal Sobre as revoltas águas dos teus mares! E desfraldado diga aos céus e aos mares A vitória imortal! Que foi de sangue, em guerras leais e francas, E foi na paz da cor das hóstias brancas!