Baixe o app para aproveitar ainda mais
Prévia do material em texto
ETERJ Lógica Aritmética 1 ETERJ - A melhor técnica para entrar no Mercado de Trabalho LÓGICA E ARITMÉTICA INTRODUÇÃO Aritmética Palavra de origem grega, significando a aptidão de contar, tendo como propriedades fundamentais a Adição e Subtração. É o estudo dos números, das relações entre eles e das regras para combinações de dois ou mais números. Desenvolveu-se sob as pressões das necessidades práticas do comércio, das finanças e da astronomia. Este termo é usado não só para designar relações numéricas simples, mas também teorias mais complexas e abstratas. ALGARISMOS E NÚMEROS Algarismos são símbolos utilizados na composição dos números. Os algarismos utilizados são: 0,1, 2, 3, 4, 5, 6, 7, 8 e 9. Os algarismos têm seu valor próprio, quando estão escritos isoladamente. Por exemplo o algarismos “7” tem o seu valor, sendo maior do que o algarismo “3”. Porém se estes mesmos algarismos estiverem sendo utilizados na composição de um número, o valor significativo de cada um será determinado pela posição que o mesmo ocupara na composição do número. (Lógica posicional) Assim, apesar do algarismo “3” ter o valor próprio menor do que o algarismo “7”, no número 3753, ele apresentará dois valores distintos, sendo que o “3” que ocupa a posição de milhar do número terá um valor significativo maior do que o “7” que ocupa a posição de centena do número. Assim o número 3753, pode ser decomposto da seguinte maneira: 3 x 103 + 7 x 102 + 5 x 101 + 3 x 100 = 3 x 1000 + 7 x 100 + 5 x 10 + 3 x 1 = 3753 3 x 103 = 3 x 1000 = 3000 7 x 102 = 7 x 100 = 700 5 x 101 = 3 x 10 = 50 3 x 100 = 3 x 1 = 3 _____________________ 3753 ETERJ/NOVO RIO Lógica Aritmética: 2 ETERJ - A melhor técnica para entrar no Mercado de Trabalho OPERADORES ARITMÉTICOS É comum necessitarmos realizar cálculos matemáticos com as informações que estamos manipulando. Para isso, é necessário sabermos qual a representação dos símbolos de operações matemáticas. Vejamos: Usaremos o (*) asterístico como operador de multiplicação e a (/) barra como operador de divisão, símbolos normalmente utilizados em programação. Operador Operação Exemplo + Adição 10 + 15 - Subtração 20 – 10 * Multiplicação 3 * 5 / Divisão (o resultado será um número real) 5 / 2 = 2,5 \ ou DIV Divisão (o resultado será um inteiro) 10 div 2 = 5 7 div 2 = 3 % ou MOD Resto de uma divisão 7 mod 2 = 1 ^ ou exp (a, b) Exponenciação 5 ^ 2 ou exp(5, 2) Da mesma maneira que estudamos na escola, algumas operações têm prioridade sobre as outras. A potenciação tem a maior prioridade entre todos os operadores. Multiplicação e divisão devem ser operadas antes da adição e subtração. Assim, na expressão 3 + 2 * 5, primeiro operamos o 2 * 5, e somamos o resultado com 3 para obtermos 13. Para mudar a ordem das operações, usamos parênteses, o que estiver entre parênteses será operado primeiro. Por exemplo: (3 + 2) * 5, primeiro operamos o 3 + 2, porque está entre parênteses, e depois o resultado desta operação será multiplicado com 5 para obter 25. Quando na expressão só houverem operações com a mesma prioridade, a avaliação é feita normalmente da esquerda para a direita. Exemplo: ( 3 + 5 ) * ( 4 * ( 10 -7 ) ) / 2 Opera-se o que estiver nos parênteses mais internos ( 3 + 5 ) * ( 4 * 3 ) / 2 Operam-se os dois parênteses que restaram 8 * 12 / 2 Só há * e / -, então opera-se da esquerda para a direita 96 / 2 48 Resultado final ETERJ/NOVO RIO Lógica Aritmética: 3 ETERJ - A melhor técnica para entrar no Mercado de Trabalho OPERADORES RELACIONAIS Além de operações matemáticas, é freqüente nossa necessidade em comparar informações. Por exemplo: Se média for maior ou igual a 7. Para isso, utilizamos operadores relacionais. Operador Relação = Igualdade =/= ou ou <> Diferente > Maior que ou >= Maior ou igual que < Menor que ou <= Menor ou igual que Exemplo: Nome S ím b o lo Exemplos Resultado Igual a = 3 = 3 2 + 2 = 5 Verdadeiro Falso Nome S ím b o lo Exemplos Resultado Diferente de <> 140 <> 410 (10+5) <> (30/2) Verdadeiro Falso Maior que > 0 > -1 345 > ((3 +1)*100) Verdadeiro Falso Maior ou igual que >= 13 >= 7 + 6 77 >= 40 * 2 Verdadeiro Falso Menor que < 3 < 7 77 < 20 * 2 Verdadeiro Falso Menor ou igual que <= 3 <= 7 - 4 77 <= 25 * 4 Verdadeiro Falso ETERJ/NOVO RIO Lógica Aritmética: 4 ETERJ - A melhor técnica para entrar no Mercado de Trabalho OPERADORES LÓGICOS É freqüente precisarmos analisar expressões lógicas, aquelas que só possuem dois valores possíveis: Verdadeiro ou Falso. Os operadores usados em expressões lógicas são os Operadores Lógicos. Veja: Operador Relação E (And) E lógico Ou (Or) Ou lógico Não (Not) Negação lógica Ou-X (Xor) Ou ‘Exclusivo’ E RETORNA VERDADEIRO SE AMBAS AS PARTES FOREM VERDADEIRAS. OU BASTA QUE UMA PARTE SEJA VERDADEIRA PARA RETORNAR VERDADEIRO. NÃO INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO E VICE-VERSA. OU-X RETORNA VERDADEIRO SE AS PARTES FOREM DIFERENTES E FALSO SE FOREM IGUAIS Tabela Verdade Veja a seguinte tabela para entender melhor os operadores lógicos. A B A e B A ou B NÃO A A ou-X B F F F F V F F V F V V V V F F V F V V V V V V F ETERJ/NOVO RIO Lógica Aritmética: 5 ETERJ - A melhor técnica para entrar no Mercado de Trabalho EXPRESSÕES LÓGICAS As expressões compostas de relações sempre retornam um valor lógico. Exemplos: 2+5>4 Verdadeiro 3<>3Falso De acordo com a necessidade, as expressões podem ser unidas pelos operadores lógicos. Exemplos: 2+5>4 E 3<>3 Falso 2+5>4 OU 3<>3 Verdadeiro NÃO(3<>3) Verdadeiro V F F E V F V OU F V NÃO ETERJ/NOVO RIO Lógica Aritmética: 6 ETERJ - A melhor técnica para entrar no Mercado de Trabalho PRIORIDADE DE OPERADORES: Durante a execução de uma expressão que envolve vários operadores, é necessário à existência de prioridades, caso contrário poderemos obter valores que não representam o resultado esperado. A maioria das linguagens de programação utiliza as seguintes prioridades de operadores: 1º - Efetuar operações embutidas em parênteses "mais internos" 2º - Efetuar Funções 3º - Efetuar multiplicação e/ou divisão 4º - Efetuar adição e/ou subtração 5º - Operadores Relacionais 6º - Operadores Lógicos OBS: O programador tem plena liberdade para incluir novas variáveis, operadores ou funções para adaptar o algoritmo as suas necessidades, lembrando sempre, de que, estes devem ser compatíveis com a linguagem de programação a ser utilizada. EXERCÍCIO: 1) Com base no que mencionado acima, responda as perguntas a seguir: a) Na expressão A*B-C, qual será a seqüência de execução? b) Na expressão (A*B)-C, qual será a seqüência de execução? c) Na expressão A*(B-C), qual será a seqüência de execução? d) Na expressão (A*(B-C*(D/E))), qual será a seqüência de execução? A lógica para se montar uma expressão é ponto determinante na questão do resultado ser ou não verdadeiro, ou seja, de ser o resultado esperado. Exemplo: 6 * ( 9 + 3 * 2 ) / ( 2 * 4- 11 ) Operam-se as multiplicações nos parênteses 6 * ( 9 + 6 ) / ( 8 - 11 ) Operam-se os parênteses 6 * 15 / -3 Só há * e / - opera-se da esquerda para a direita 90 / -3 Observe o sinal negativo antes do 3... -30 Resultado final LINEARIZAÇÃO DE EXPRESSÕES Para a construção de Algoritmos todas as expressões aritméticas devem ser linearizadas, ou seja, colocadasem linhas. É importante também ressalvar a mudança dos operadores correspondentes da aritmética tradicional para a computacional. Exemplo: ETERJ/NOVO RIO Lógica Aritmética: 7 ETERJ - A melhor técnica para entrar no Mercado de Trabalho MODULARIZAÇÃO DE EXPRESSÕES A modularização é a divisão da expressão em partes, proporcionando maior compreensão e definindo prioridades para resolução da mesma. Como pode ser observado no exemplo anterior, em expressões computacionais usamos somente parênteses “( )” para modularização. Na informática podemos ter parênteses dentro de parênteses. Exemplos de prioridades: 1) (2+2)/2=2 2) 2+2/2=3 3) ((2+2)*(4+4))=32 4) 2+2*4+4=14 Exercícios: 1. Usando a lógica posicional, decomponha o número 17535. 2. De acordo com as prioridades de execução do operadores aritméticos, calcule a expressão 45 + 15 * 5 //10? 3. Os operadores aritméticos, relacionais e lógicos obedecem a uma determinada prioridade quando estão presentes na mesma expressão. Qual a ordem de prioridade desses operadores? 4. Linearizar e resolver: A- 47+12x4/2-21 2+3x2 B – 21+37+21x4-29 4+3/5 C – 175/5+345/3-28 25/2+3,5+27 22/2+4 7 5. Resolva as expressões abaixo: a) 4 + 3 * 5 + 2 – 5 b) 10 + 5 * 2 = 30 135 3 2 (2/3+(5-3))+1= Tradicional Computacional ETERJ/NOVO RIO Lógica Aritmética: 8 ETERJ - A melhor técnica para entrar no Mercado de Trabalho c) V and F or V not V or F d) 25+45/3 < 40 AND 21x2 = 44-4/2 OR NOT F e) 27 = 13+27/3 OR NOT V AND 125/5 <> 25 AND NOT V f) F AND V OR NOT V OR F AND NOT F OR V OR F AND F OR NOT V SISTEMAS DE NUMERAÇÃO SISTEMA DECIMAL Para se compreender a estrutura de qualquer sistema de numeração podemos começar por rever o sistema decimal, por ser aquele que usamos diariamente quando efetuamos os cálculos mais elementares. O sistema decimal (ou sistema de base 10) utiliza 10 símbolos designados por algarismos para representar quantidades. São eles o 0, o 1, o 2, o 3, o 4, o 5, o 6, o 7, o 8 e o 9. De um modo geral, podemos dizer que a base de qualquer sistema de numeração é dada pelo número de símbolos diferentes que esse sistema utiliza. Um número decimal é formado por uma combinação de algarismos. Para determinar a quantidade representada por um número decimal é necessário multiplicar cada um dos algarismos que o constituem por uma potência de 10 de acordo com a posição que cada um dos algarismos ocupa no número, e somar os resultados. Por exemplo o número decimal 27315 pode ser escrito da seguinte forma: 20000+7000+300+10+5, o que é o mesmo que: 2*10000+7*1000+3*100+1*10+5, que por sua vez equivale a: 2*104+7*103+3*102+1*101+5*100 Também sabemos que, se o expoente de um número for menor que zero, então esse expoente indica as casas decimais desse número. Conseqüentemente concluímos que podemos representar qualquer número decimal, inteiro ou fracionário, em desenvolvimento de potências de 10. 2*104+7*103+3*102+1*101+5*100+3x10-1+2x10-2 = 27315,32 SISTEMA BINÁRIO Todo o funcionamento de um computador digital é baseado no cálculo binário. O sistema de numeração binário (sistema de base 2) é formado por dois dígitos: o 0 e o 1. Os dígitos binários “0” e “1” são habitualmente designados por “BITs”. Um número binário constituído por 8 bits é designado por “BYTE”, um número binário de 16 bits é uma “WORD”, e um de 32 bits, uma “DOUBLE WORD”. Para contar em decimal, usamos intuitivamente um algoritmo muito simples: supondo que temos um contador por cada posição, todos inicializados em 0. Começamos a incrementá-los da direita para a esquerda. Quando o contador em qualquer posição ultrapassar o valor 9 (valor do símbolo mais elevado no caso do sistema decimal), o contador relativo a essa posição juntamente com todos os contadores à direita voltam a zero e o contador que ocupa a posição imediatamente à esquerda, é incrementado 1 unidade. Para contar em binário seguimos as mesmas regras, ou seja, obtemos a sequência: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, etc. ETERJ/NOVO RIO Lógica Aritmética: 9 ETERJ - A melhor técnica para entrar no Mercado de Trabalho SISTEMA HEXADECIMAL O sistema binário é muito pouco compacto, são necessários muitos dígitos para representar números relativamente pequenos, o que dificulta o trabalho das pessoas que programam os computadores. Para solucionar este problema usa-se freqüentemente o sistema de numeração hexadecimal, em vez do binário. O sistema hexadecimal, como o nome indica, é formado por 16 símbolos diferentes: o 0, o 1, o 2, o 3, o 4, o 5, o 6, o 7, o 8, o 9, o A, o B, o C, o D, o E e o F. As letras A, B, C, D, E e F correspondem aos valores 10, 11, 12, 13, 14 e 15 respectivamente. Como nos sistemas de numeração anteriormente estudados qualquer número do sistema hexadecimal pode ser desenvolvido em potências da sua base. Neste caso, a base é 16 uma vez que o número de dígitos utilizados são 16. SISTEMA OCTAL Um outro sistema de numeração é o octal. Utiliza os algarismos 0 a 7 na sua composição e serve como exemplo para demonstrar que podemos ter qualquer sistema de numeração. CONVERSÃO DE SISTEMAS DE NUMERAÇÃO Conversão de um número decimal (base 10) para um número binário (base 2) Para converter números decimais em binários existem dois métodos possíveis. O primeiro consiste em extrair do número decimal a converter potências na base dois, até o resto ser igual a zero. Atribuímos de seguida ao número binário resultante um 1 para cada posição binária correspondente a cada potência de dois extraída. Outro método possível consiste em dividir o número decimal sucessivamente por dois até obter zero. Os restos de cada operação formam o novo número binário, sendo o valor do primeiro resto, o dígito menos significativo, e o último, o mais significativo. Conversão de um número binário (base 2) para um número decimal (base 10) Para converter um número binário para o número decimal equivalente basta multiplicar cada dígito pela potência de 2 relativa à posição por ele ocupada e somar os resultados. Assim por exemplo o número binário 101 equivale ao número 5 no sistema decimal. 101 = 1*22 + 0*21 + 1*20 = 1*4 + 0*2 + 1*1 = 4 + 0 + 1 = 5 Conversão da base hexadecimal para a base decimal Para converter um número hexadecimal para o número decimal equivalente basta multiplicar cada dígito pela potência de 16 relativa à posição por ele ocupada e somar os resultados. ETERJ/NOVO RIO Lógica Aritmética: 10 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Conversão da base decimal para a base hexadecimal Para converter números decimais em hexadecimais usa-se um método semelhante ao que se utiliza para converter números decimais em binários. O método consiste em dividir o número decimal sucessivamente por dezesseis até obter zero. Os restos de cada operação formam o novo número hexadecimal, sendo o valor do primeiro resto o dígito menos significativo, e o último, o mais significativo. Conversão da base hexadecimal para a base binária As conversões da base 16 de e para a base binária são extremamente simples, daí ser o sistema hexadecimal o escolhido mais freqüentemente para substituir o sistema binário. Cada dígito hexadecimal equivale a quatro dígitos binários. Para converter um número binário para o sistema hexadecimal agrupam-se os dígitos binários em grupos de quatro da direita para a esquerda e substitui-se cada um destes grupos por um dígito hexadecimal de valor equivalente. Para converter um número binário para o sistema hexadecimal o método é o inverso deste, ou seja, substitui-se cada dígito hexadecimal por umgrupo de 4 dígitos binários com o valor equivalente. Exemplo: Converter o número 3547(10) para as bases (2), (8) e (16). Para a base 2, realizamos divisões sucessivas por dois. 3547 / 2 = 1773 resta 1 1773 / 2 = 886 resta 1 886 / 2= 443 resta 0 443 / 2 = 221 resta 1 221 / 2 = 110 resta 1 110 / 2 = 55 resta 0 55 / 2 = 27 resta 1 27 / 2 = 13 resta 1 13 / 2 = 6 resta 1 6 / 2 = 3 resta 0 3 / 2 = 1 resta 1 1 / 2 = 0 resta 1 Obs: O último quociente não pode ser dividido por 2. O número 3547 representado na base dois é igual aos valores obtidos nos restos das divisões em ordem inversa O algarismo mais significativo é o último resto (valor do quociente) e o menos significativo é o primeiro resto. Então o número na base dois é 110111011011. Para a base 8 realizamos divisões sucessivas por oito. 3547 / 8 = 443 resta 3 443 / 8 = 55 resta 3 55 / 8 = 6 resta 7 6 / 8 = 0 resta 6 Obs: O último quociente não pode ser dividido por 8. ETERJ/NOVO RIO Lógica Aritmética: 11 ETERJ - A melhor técnica para entrar no Mercado de Trabalho O número 3547 representado na base oito é igual aos valores obtidos nos restos das divisões em ordem inversa. O algarismo mais significativo é o último resto (valor do quociente) e o menos significativo é o primeiro resto. Então o número na base oito é 6733. Para a base 16 realizamos divisões sucessivas por dezesseis; 3547 / 16 = 221 resta 11 221 / 19 = 13 resta 13 13 / 16 = 0 resta 13 Obs: O último quociente não pode ser dividido por 16 O número 3547 representado na base dezesseis é igual aos valores obtidos nos restos das divisões em ordem inversa. O algarismo mais significativo é o ultimo resto (valor do quociente) e o menos significativo é o primeiro resto. Então o número na base dezesseis é 13 13 11 que representado pelas letras fica DDB. . Convertendo os números encontrados teremos novamente o número 3547 em decimal. Multiplica-se cada algarismo do numero pela base elevada a um expoente que será igual a zero para o algarismo menos significativo, sendo acrescido de uma unidade a cada algarismo mais representativo. Número binário: 110111011011 1 x 20 = 1 1 x 21 = 2 0 x 22 = 4 1 x 23 = 8 1 x 24 = 16 0 x 25 = 32 1 x 26 = 64 1 x 27 = 128 1 x 28 = 256 0 x 29 = 512 1 x 210 = 1024 1 x 211 = 2048 3547 Número octal: 6733 3 x 80 = 3 3 x 81 = 24 7 x 82 = 448 6 x 83 = 3072 3547 Número hexadecimal DDB 11 x 160 = 11 13 x 161 = 208 13 x 162 = 3328 ETERJ/NOVO RIO Lógica Aritmética: 12 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 3547 Exercícios: 1 – Converter para as novas bases: a – 1755(10) (2), (8), (16) b – 4523(8) (10) (16) c – ABA (16) (8) d – A5B2(16) (2), (8), (10) e – 10111001 (2) (8), (10), (16) f – 653(7) (10) APERFEIÇOAMENTO DA LÓGICA O QUE É LÓGICA 1.Não há consenso quanto à definição da lógica. Alguns autores definem-na como o estudo de processos válidos e gerais pelos quais atingimos a verdade, outros como a ciência das leis do pensamento, ou somente como o estudo dos princípios da inferência válida. Esta pluralidade de definições dá-nos conta da diversidade de estudos que são abrangidos pela Lógica. 2. A lógica foi criada por Aristóteles, no século IV a.C., como uma ciência autônoma que se dedica ao estudo dos atos do pensamento - Conceito, Juízo, Raciocínio, Demonstração do ponto de vista da sua estrutura ou forma lógica, sem ter em conta qualquer conteúdo material. É por esta razão que esta lógica aristotélica se designa também por lógica formal. 3. Em contraposição a este conceito de lógica formal, surgiu um outro - o de lógica material - para designar o estudo do raciocínio no que ele depende quanto ao seu conteúdo ou matéria. 4. Esta distinção entre lógica formal e lógica material permite-nos agora perceber porque: Tendo em conta a sua forma, o raciocínio é correto ou incorreto ( válido ou invalido). Mas se atendermos à sua matéria, a conclusão pode ser verdadeira ou falsa. Exemplo: Nenhum homem sabe dançar Este dançarino é homem logo Este dançarino não sabe dançar Este raciocínio é formalmente correto, uma vez que a conclusão está corretamente deduzida. Mas a conclusão é falsa, uma vez que é falsa a primeira proposição ("Nenhum homem sabe dançar"). ETERJ/NOVO RIO Lógica Aritmética: 13 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Estamos perante um raciocínio que tem validade formal, mas não tem validade material. Logo temos que concluir que é falso As pessoas utilizam 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: Ex: 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. Exercícios resolvidos: 1. Se eu passar no concurso, então irei trabalhar. Passei no concurso Logo, irei Trabalhar 2. Se ele me ama então casa comigo. Ele me ama Logo, ele casa comigo 3. Todos os brasileiros são humanos. Todos os paulistas são brasileiro. Logo, todos os paulistas são humanos 4. Se o Palmeiras ganhar o jogo, todos os jogadores receberão o bicho. Se o Palmeiras não ganhar o jogo, todos os jogadores receberão o bicho. Logo, todos os jogadores receberão o bicho 5. Todos os apartamentos são pequenos Todos os apartamentos são residências Logo, algumas residências são pequenas 6. O Flamengo é um bom time de futebol. O Palmeiras é um bom time de futebol. O Vasco é um bom time de futebol. O Cruzeiro é um bom time de futebol. Logo, todos os times brasileiros de futebol são bons (F) 7. Se num campeonato de futebol é verdade que “quem não faz, leva”, ou seja, time que não marca gol numa partida sofre ao menos um gol nessa mesma partida, então: ETERJ/NOVO RIO Lógica Aritmética: 14 ETERJ - A melhor técnica para entrar no Mercado de Trabalho a) em todos os jogos os dois times marcam gols b) nenhum jogo termina empatado c) o vencedor sempre faz um gol a mais que o vencido d) nenhum jogo termina 0 x 0, ou seja, sem gols e) resultados como 1 x 0, 2 x 0 ou 3 x 0 não são possíveis Solução: a) Se é verdade que “quem não faz, leva”, tem-se que o time que não marca qualquer gol leva pelo menos algum gol b) Logo, nenhuma partida termina sem gols, ou seja, 0 x 0 Gabarito: D 8. Se “cada macaco fica no seu galho”, então: a) tem mais macaco do que galho b) pode haver galho sem macaco c) dois macacos dividem um galho d) cada macaco fica em dois galhos e) dois galhos dividem um macaco Solução: a) Quando dizemos que cada macaco fica em seu galho, estamos afirmando que todo macaco fica em algum galho b) Não podemos dizer necessariamente que todo galho terá algum macaco pendurado. Logo, pode haver algum galho que fique sem macaco Gabarito: B Exercícios: 1. Três alunos são suspeitos de não estarem matriculados no Curso de Raciocínio Lógico. O Aparecido entrevistou os três, para cobrar a matrícula, e obteve os seguintes depoimentos: AURO: “Joaquim não pagou e Cláudia pagou” JOAQUIM: “Se Auro não pagou, Cláudia também não pagou” CLÁUDIA: “Eu paguei, mas pelo menos um dos outros não pagou” Pede-se: 1. Identificar os pagantes e os não pagantes,supondo que todos os depoimentos são verdadeiros 2. Identificar os mentirosos, supondo que todos pagaram as matrículas. 2. (ESAF) Se Beto briga com Glória, então Glória vai ao cinema. Se Glória vai ao cinema, então Carla fica em casa. Se Carla fica em casa, então Raul briga com Carla. Ora, Raul não briga com Carla. Logo. a. Carla não fica em casa e Beto não briga com Glória. b. Carla fica em casa e Glória vai ao cinema. ETERJ/NOVO RIO Lógica Aritmética: 15 ETERJ - A melhor técnica para entrar no Mercado de Trabalho c. Carla não fica em casa e Glória vai ao cinema. d. Glória vai ao cinema e Beto briga com Glória. e. Glória não vai ao cinema e Beto briga com Glória. 3. (ESAF) Se Carlos é mais velho do que Pedro, então Maria e Julia tem a mesma idade. Se Maria e Julia tem a mesma idade, então João é mais moço do que Pedro. Se João é mais moço do que Pedro, então Carlos é mais velho do que Maria. Ora, Carlos não é mais velho do que Maria. Então: a. Carlos não é mais velho do que Leila, e João é mais moço do que Pedro. b. Carlos é mais velho que Pedro, e Maria e Julia tem a mesma idade. c. Carlos e João são mais moços do que Pedro. d. Carlos é mais velho do que Pedro, e João é mais moço do que Pedro. e. Carlos não é mais velho do que Pedro, e Maria e Julia não tem a mesma idade. 4. (ESAF) José quer ir ao cinema assistir ao filme “Fogo Contra Fogo”, mas não tem certeza se o mesmo está sendo exibido. Seus amigos, Maria, Luis e Julio têm opiniões discordantes sobre se o filme está ou não em cartaz. Se Maria estiver certa, então Julio está enganado. Se Julio estiver enganado, então Luis está enganado. Se Luis estiver enganado, então o filme não está sendo exibido. Ora, ou o filme “Fogo contra Fogo” está sendo exibido, ou José não ira ao cinema. Verificou-se que Maria está certa. Logo, a. O filme “Fogo contra Fogo” está sendo exibido. b. Luis e Julio não estão enganados. c. Julio está enganado, mas Luis não. d. Luis está enganado, mas Julio não. e. José não irá ao cinema. O texto abaixo refere aos exercícios de 5 a 8: Chapéuzinho Vermelho ao entrar na floresta, perdeu a noção dos dias da semana. A Raposa e o Lobo Mau eram duas estranhas criaturas que freqüentavam a floresta. A Raposa mentia às segundas, terças e quartas-feiras, e falava a verdade nos outros dias da semana. O Lobo Mau mentia às quintas, sextas e sábados, mas falava a verdade nos outro dias da semana. (Adaptado de Linguagem Lógica de Iole de Freitas Druck IME - USP - publicado na revista do professor de Matemática) 5. Um dia Chapeuzinho Vermelho encontrou o Raposa e o Lobo Mau descansando à sombra de uma árvore. Eles disseram: Raposa: Ontem foi um dos meus dias de mentir. Lobo Mau: Ontem foi um dos meus dias de mentir. A partir dessas afirmações, Chapéuzinho Vermelho descobriu qual era o dia dasemana. Qual era? 6. Em outra ocasião Chapéuzinho Vermelho encontrou o Raposa sozinha. Ela fez as ETERJ/NOVO RIO Lógica Aritmética: 16 ETERJ - A melhor técnica para entrar no Mercado de Trabalho seguintes afirmações: Eu menti ontem. Eu mentirei daqui a 3 dias. Qual era o dia da semana? 7. Em qual dia da semana é possível a Raposa fazer as seguintes afirmações? Eu menti ontem. Eu mentirei amanhã. 8. Em que dias da semana é possível a Raposa fazer cada uma das seguintes afirmações: a) Eu menti ontem e eu mentirei amanhã. b) Eu menti ontem ou eu mentirei amanhã. c) Se menti ontem, então mentirei de novo amanhã. 9. Uma vela queima-se integralmente em três horas. Em quanto tempo se queimariam três velas do mesmo tamanho e acesas ao mesmo tempo? 10. O dobro do triplo do dobro de três. Que número é esse? 11. Trinta operários podem cavar trinta buracos em trinta dias. Assim sendo, em quantos dias poderão 12 operários cavar 12 buracos? 12. Um número multiplicado por 13, dá 65; dividido por ele mesmo,1; elevado ao cubo, 125. Qual é o número? 13. Qual dos números não pertence a série? a) 9 – 7 – 8 – 6 b) 7 – 5 – 6 - 3 14. Maria foi ao mesmo tempo a décima terceira melhor classificada e a décima terceira pior classificada de um concurso. Quantas eram as concorrentes? 15. Uma lesma deve subir um poste de 10 metros de altura. De dia sobe 2m e à noite desce 1m. Em quantos dias atingirá o topo do poste? 16. O pai do padre é filho do meu pai. O que eu sou do Padre? 17. Qual é o dobro da metade de dois? Seqüência Lógica Seqüência lógica são passos executados até atingir um objetivo ou solução de um problema. Às vezes o raciocínio funciona de forma desordenada. Quantas vezes você já ouviu as frases: “E se acontecer aquilo?”, ou “É, mas eu não tinha pensado nisso!”. ETERJ/NOVO RIO Lógica Aritmética: 17 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 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 abaixo: Ex: 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. JOGOS E PASSATEMPOS 1) Que número fica diretamente acima de119 na seguinte disposição de números? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 . . . . . . . . . . 2) Um pequeno caminhão pode carregar 50 sacos de areia ou 400 tijolos. Se forem colocados no caminhão 32 sacos de areia. Quantos tijolos podem ainda ele carregar? 3) Rafael caiu no fundo de um poço com 30 metros de profundidade. Todos os dias ele sobe 3 metros e escorrega 2 metros. Neste ritmo, quando chegará em cima? 4) Se a média de cinco números inteiros consecutivos é 17, qual o maior dos 5 números? 5) O pai do meu neto é o neto do meu pai. Quantas pessoas estão envolvidas? 6) Em um restaurante, comprando-se 3 sanduíches a R$ 1,00 cada, se ganha um, de graça. Se quarenta e cinco sanduíches foram consumidos, quanto dinheiro foi pago? 7) Você precisa usar 4 litros de água numa receita. Use os jarros para conseguir a medida certa, sendo que suas capacidades são 5 e 3 litros. 8) Uma fita de vídeo pode gravar 2 horas na velocidade SP, 4 horas na velocidade LP e 6 horas na velocidade SLP. Após ter sido gravada durante 32 minutos na velocidade SP e durante 44 minutos na velocidade LP, durante quantos minutos a fita poderá ser gravada na velocidade SLP até o seu término? ETERJ/NOVO RIO Lógica Aritmética: 18 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 9) Uma de nove moedas é mais pesada que as outras. Descubra qual, usando uma balança de dois pratos, apenas duas vezes. 10) Em 10 pilhas de tijolos, existe uma pilha onde os tijolos pesam metade dos tijolos das outras pilhas. Como podemos determinar qual das pilhas contém os tijolos mais leves, efetuando somente uma pesagem? 11) Qual dos cinco itens representa a melhor comparação? “Arvore está para o chão assim como chaminé está para...” a) fumaça b) tijolo c) garagem d) céu e) casa 12) Depois de doar um quarto de sua mesada ao irmão e ganhar mais cinco reais, ele ficou com 20 reais. Qual era o valor de sua mesada? a) 10 reais b) 30 reais c) 20 reais d) 35 reais e) 25 reais 13) Uma das opções abaixo, não tem relação com as outras. a) pedreiro b) maratonista c) mecânico d) carpinteiro e) agricultor 14) Do ponto de vista do volume, como ficaria a ordem abaixo? a) kg chumbo; kg isopor; gr ouro; litro água; 1 moeda b) kg isopor; kg chumbo; gr ouro; litroágua; 1 moeda c) kg chumbo; gr ouro; litro água; 1 moeda; kg isopor d) kg ouro; 1 moeda; kg chumbo; litro água; kg isopor e) kg ouro; litro agua; kg isopor; kg chumbo; 1 moeda 15) Segundo a cronologia, dentre as opções abaixo, qual o grupo com a ordem correta? a) ontem, amanhã, hoje, anteontem, depois de amanhã b) amanhã, ontem, hoje, anteontem, depois de amanhã c) anteontem, ontem, hoje, amanhã, depois de amanhã d) hoje, ontem, amanhã, anteontem, depois de amanhã e) ontem, hoje, anteontem, amanhã, depois de amanhã 16) Qual dos cinco itens se parece menos com os outros? a) tato b) sorriso c) paladar d) visão e) audição CONSTRUÇÃO DE ALGORITMOS INTRODUÇÃO A automatização de tarefas é um aspecto marcante da sociedade moderna. O aperfeiçoamento tecnológico alcançado, com respeito a isto, teve como elementos fundamentais à análise e a obtenção de descrições da execução de tarefas em termos de ações simples o suficiente, tal que pudessem ser automatizadas por uma máquina especialmente desenvolvida para este fim, O COMPUTADOR. ETERJ/NOVO RIO Lógica Aritmética: 19 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Em ciência da computação houve um processo de desenvolvimento simultâneo e interativo de máquinas (hardware) e dos elementos que gerenciam a execução automática (software) de uma dada tarefa. E essa descrição da execução de uma tarefa, como considerada acima, é chamada algoritmo. O objetivo dessa matéria é a Lógica de Programação dando uma base teórica e prática, suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a aprender uma linguagem de programação. Será mostrado também um grupo de algoritmos clássicos para tarefas cotidianas, tais como: ordenação e pesquisa. Definição de Algoritmo "O conceito central da programação e da Ciência da Computação é o conceito de algoritmos, isto é, programar é basicamente construir algoritmos." É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa. "O algoritmo pode ser usado como uma ferramenta genérica para representar a solução de tarefas independente do desejo de automatizá-las, mas em geral está associado ao processamento eletrônico de dados, onde representa o rascunho para programas (Software)." "Serve como modelo para programas, pois sua linguagem é intermediária à linguagem humana e às linguagens de programação, sendo então, uma boa ferramenta na validação da lógica de tarefas a serem automatizadas." "Um algoritmo é uma receita para um processo computacional e consiste de uma série de operações primitivas, interconectadas devidamente, sobre um conjunto de objetos. Os objetos manipulados por essas receitas são as variáveis." Atenção Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitos. O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios. Algoritmo não se aprende: - Copiando Algoritmo - Estudando Algoritmo Algoritmo só se aprende: - Construindo Algoritmo - Testando Algoritmo Características Todo algoritmo deve apresentar algumas características básicas: Ter fim; Não dar margem à dupla interpretação; Capacidade de receber dados de entrada; Poder gerar informações de saída; ETERJ/NOVO RIO Lógica Aritmética: 20 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito). Conceitos Algoritmo É uma seqüência finita de ações que descrevem como um problema pode ser resolvido. Instrução São frases que indicam as ações a serem executadas. São compostas de um verbo no imperativo/infinitivo mais um complemento. Ex. Bata(bater) duas claras em neve Ligue (ligar) os faróis Abra (abrir) a porta Programa Ações de um algoritmo obedecendo à sintaxe de uma linguagem de programação. Identação/Indentação É o deslocamento para a direita de uma instrução, significa que tais instruções estão subordinadas a instrução anterior. FORMAS DE REPRESENTAÇÃO Algoritmos podem ser representados, dentre outras maneiras, por: 1. Fluxograma Utilização de símbolos gráficos para representar algoritmos. No fluxograma existem símbolos padronizados para início, entrada de dados, cálculos, saída de dados, fim etc. Processamento Entrada de dados Início/Fim Decisão Saída de dados ETERJ/NOVO RIO Lógica Aritmética: 21 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Início/Fim Temos ainda um símbolo conhecido como conector, que é utilizado quando for preciso dividir o diagrama, colocando uma letra ou um número no símbolo para identificar os pares da conexão. Conector Vantagens: Uma das ferramentas mais conhecidas; Figuras dizem muito mais que palavras; Padrão mundial. Desvantagens Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá- los; Complica-se à medida que o algoritmo cresce. Ex: Inicio NUM NUM = NUM * 2 NUM Fim ETERJ/NOVO RIO Lógica Aritmética: 22 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 2. Descrição narrativa Faz-se uso do português para descrever algoritmos. Ex: Receita de bolo: 1 Providencie manteiga, ovos, 2 kg de massa etc. 2 Misture os ingredientes 3 Despeje a mistura na forma de bolo 4 Leve a forma ao forno 5 Espere 20 minutos 6 Retire a forma do forno 7 Deixe esfriar 8 Prove Vantagens: O português é bastante conhecido por nós. Desvantagens Imprecisão; Pouca confiabilidade; Extensão (normalmente escreve-se muito para dizer pouca coisa). 3. Linguagem algorítmica Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português. Ex: num, dobro INTEIRO LEIA num dobro = num * 2 ESCREVA dobro Vantagens: Usa o português como base; Podem-se definir quais e como os dados vão estar estruturados; Passagem quase imediata do algoritmo para uma linguagem de programação qualquer. Desvantagens Exige a definição de uma linguagem não real para o trabalho; Não padronizado. ETERJ/NOVO RIO Lógica Aritmética: 23 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Fases de um Algoritmos Quando temos um problema e vamos utilizar um computador para resolvê-lo inevitavelmente temos que passar pelas seguintes etapas: a) Definir o problema. b) Realizar um estudo da situação atual e verificar quais a(s) forma(s) de resolver o problema. c) Terminada a fase de estudo, utilizar uma linguagem de programação para escrever o programa que deverá a princípio, resolver o problema. d) Analisar junto aos usuários se o problema foi resolvido. Se a solução não foi encontrada, deverá ser retornado para a fase de estudo para descobrir onde está a falha. TIPOS DE DADOS Os dados são representados pelas informações a serem processadas por um computador. Estas informações estão caracterizadas por quatro tipos de dados: inteiros, reais, caracteres e lógicos. Tipo Inteiro Dados numéricos positivos ou negativos, excluindo-se qualquer número fracionário. Ex. 35, 0, -56 Tipo Real Dados numéricos positivos, negativos e números fracionários. Ex. 1.2,-45.897 TipoCaractere São tipos caracteres, as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve ser indicada entre aspas. Sendo também conhecido como: alfanumérico, string, literal ou cadeia. Ex. “PROGRAMAÇÃO”, “Rua Alfa, 52 apto 1”, “7”, “249-4455” Tipo Lógico São tipos lógicos ou booleanos, os dados com valores: verdadeiro e falso, sendo que este tipo poderá representar um dos dois valores. Ex: 4+5<7 = F VARIÁVEL Uma variável pode ser vista como uma caixa com um rótulo ou nome colado a ela, que num dado instante guarda um determinado objeto. O conteúdo desta caixa não é algo fixo, permanente. Na verdade, essa caixa pode ter seu conteúdo alterado diversas vezes. Contudo, o conteúdo deve ser sempre do mesmo tipo. Por exemplo caso tenhamos uma caixa (variável) rotulada com FATOR que contém o valor 5. Como seu tipo é inteiro, em um determinado instante essa caixa poderá conter qualquer valor numérico (inteiro, positivo, negativo ou zero). Entretanto, em um determinado instante, ela conterá um, e somente um valor. ETERJ/NOVO RIO Lógica Aritmética: 24 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Variáveis são palavras que tem um significado bem específico em um algoritmo. Para que o computador possa executar comandos que envolvem variáveis da maneira correta, ele deve conhecer os detalhes das variáveis que pretendemos usar. Esses detalhes são: o identificador desta variável e o tipo de valores que essa variável irá conter. Precisamos assim, de uma maneira de especificar esses detalhes e comunicá-los ao computador. Para isso devemos declarar nossas variáveis logo no início do algoritmo. A identificação ou nomeação de variáveis segue algumas regras: a. nomes de variáveis não podem ser iguais a palavras reservadas; b. nomes de variáveis devem possuir como primeiro caractere uma letra ou sublinhado '_' (os outros caracteres podem ser letras, números e sublinhado); c. nomes de variáveis devem ter no máximo 127 caracteres; d. Nomes de variáveis não podem conter espaços em branco; e. na sintaxe do Português Estruturado, não há diferença entre letras maiúsculas de minúsculas (NOME é o mesmo que noMe). Exemplo: Identificadores válidos: NOME, TELEFONE, IDADE_FILHO, IdadeFilho, NOTA1, Est_Civil Identificadores inválidos: 3Endereco, Estado Civil, PARA, algoritmo, numero/complemento Você deve estar se perguntando por que a palavra “PARA e algoritmo” são identificadores inválidos. Eles são inválidos, pois são palavras reservadas da linguagem, veja outras palavras que você não deve utilizar como identificadores de variáveis. Visualg A Programação de computadores é uma das competências básicas de qualquer profissional que lide com computadores. Surge, portanto a necessidade da aprendizagem de linguagens de programação para o desenvolvimento desta competência. O Visualg é um ambiente de desenvolvimento de algoritmos que visa o desenvolvimento do raciocínio algorítmico através de um ambiente simples e com ferramentas visuais para desenvolvimento e depuração dos algoritmos desenvolvidos. Neste ambiente privilegiamos o desenvolvimento de algoritmos ao invés do desenvolvimento de programas. Utilizamos a linguagem algorítmica, uma pseudo-linguagem de programação que utiliza o português como base das suas instruções. Bons Algoritmos. ETERJ/NOVO RIO Lógica Aritmética: 25 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Forma Geral de um ALGORITMO (Visualg) Vamos conhecer os primeiros elementos que compõem o Português Estruturado e escrever alguns algoritmos. A estrutura geral de um algoritmo é: “ - - - Algoritmo "<nome do algoritmo>" var < declaração de variáveis> inicio < lista de comandos> Fimalgoritmo - - - “ onde as palavras: Algoritmo e Fimalgoritmo fazem parte da sintaxe da linguagem e sempre delimitam o inicio e fim de um algoritmo; Var indica o início da seção de declaração de variáveis. < declaração de variáveis > é a seção ou parte do algoritmo onde descrevemos os tipos de dados que serão usados na lista de comandos. Por exemplo, poderíamos definir que fruta é um tipo de dado que pode assumir apenas os valores maçã, pêra, banana, abacaxi e outras frutas, sobre os quais podemos efetuar as operações comparar, comprar, comer e servir, Precisamos assim, de uma maneira especificar esses detalhes e comunicá-los ao computador. Para isso devemos declarar nossas variáveis logo no início do algoritmo. <identificador 1>, <identificador 2>, ..., <identificador n> : <tipo das variáveis> onde < identificador i > é o nome (identificador) de uma variável e < tipo das variáveis > determina que tipo de valor as variáveis poderão receber. Os identificadores das variáveis são usados para referenciá- las dentro do algoritmo. Tais identificadores devem ser claros e precisos, dando uma idéia do “papel” da variável no algoritmo. PALAVRAS RESERVADAS NO VISUALG aleatorio e ETERJ/NOVO RIO Lógica Aritmética: 26 ETERJ - A melhor técnica para entrar no Mercado de Trabalho grauprad passo abs eco inicio pausa algoritmo enquanto int PI Arccos Então Interrompa pos arcsen escolha leia procedimento arctan escreva literal quad arquivo exp log radpgrau asc faca lógico raizq ate falso logn rand caracter fimalgoritmo maiusc randi caso fimenquanto mensagem repita compr fimescolha minusc se copia ETERJ/NOVO RIO Lógica Aritmética: 27 ETERJ - A melhor técnica para entrar no Mercado de Trabalho fimfuncao não sen cós fimpara numérico senao cotan fimprocedimento numpcarac timer cronometro fimrepita ou tan debug fimse outrocaso verdadeiro declare função para xou < tipo das variáveis > O VisuAlg prevê quatro tipos de dados: inteiro, real, cadeia de caracteres e logico (ou booleano). As palavras-chave que os definem são as seguintes (observe que elas não têm acentuação). Inteiro Representa valores inteiros. Exemplos: 10, 5, -5, -10 Real Representa valores reais (com ponto separador da parte decimal). Exemplos: 10, 15.5, -14.67 Caractere Representa texto (seqüência ou cadeia de caracteres) entre aspas duplas. Exemplo "Esta é uma cadeia de caracteres", “B”, “1234” Logico Representa valores lógicos Exemplos: (VERDADEIRO ou FALSO). OPERADOR DE ATRIBUIÇÃO ETERJ/NOVO RIO Lógica Aritmética: 28 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Para “colocar” um valor em uma variável dentro de um algoritmo, utilizamos o operador de atribuição. O operador de atribuição é representado por uma seta ( <- ) apontando para a esquerda. Exemplo Peso <- 78.7 // Este comando atribui à variável Peso o valor 78.7. Nome <- "João da Silva" // Este comando atribui à variável Nome o valor "João da Silva". Achei <- FALSO // Este comando atribui à variável Achei o valor FALSO. É importante lembrar que só se pode atribuir às variáveis valores do mesmo tipo da variável. Assim, o seguinte comando seria inválido: Exemplo: var salario: real Inicio salario <- "Insuficiente" Deve estar claro, também, que sempre à esquerda do comando de atribuição deve haver um (e somente um) identificador de variável. Assim, são incorretos os seguintes comandos: Exemplos incorretos NumeroAgencia+digitoControle <- 2345 + 0 NomeCliente+sobrenome <- “João” + “Silva” inicio indica o fim das declarações e o início da seção de comandos; < lista de comandos > é apenas uma indicação de que entre as palavras inicio e fimalgoritmo podemos escrever uma lista com uma ou mais instruções ou comandos. É importante salientar que, quando um algoritmo é “executado”, as instruções ou comandosde um algoritmo são sempre executados na ordem em que aparecem no mesmo. As palavras que fazem parte da sintaxe da linguagem são palavras reservadas, ou seja, não podem ser usadas para outro propósito em um algoritmo que não seja aquele previsto nas regras de sintaxe. A palavra algoritmo, por exemplo, é uma palavra reservada Neste texto, as palavras reservadas sempre aparecerão em negrito. LINHAS DE COMENTÁRIO Os comentários são declarações não compiladas que podem conter qualquer informação textual que você queira adicionar ao código-fonte para referência e documentação de seu programa. Uma Linha São representados por duas barras normais ( // ). Todo o texto que você digitar após as duas barras será comentário. ETERJ/NOVO RIO Lógica Aritmética: 29 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Exemplo // Este método calcula o fatorial de n...x <- y; // Inicializa a variável x com o valor de y COMANDOS DE E/S (ENTRADA E SAÍDA) Em geral, um programa que faz seu processamento e não tem como mostrar seus resultados é inútil (imagine, por exemplo, uma calculadora que realiza uma infinidade de operações matemáticas, mas não tem um display para mostrar os resultados!). Portanto, em algum ponto do algoritmo geralmente deve ocorrer à exibição de valores, e todas as linguagens de programação têm comandos para este fim. Em Português Estruturado (Visualg) usamos o comando escreva para isto. A sintaxe desse comando tem a seguinte forma: Escreva (<expressão ou identificador ou constante>, <expressão ou identificador ou constante>, ..., <expressão ou identificador ou constante>) OBS.: No Visualg existem dois comandos escreva com finalidades diferentes quando usado consecutivamente. Escreval (<expressão ou identificador ou constante>) //Mostra o primeiro resultado na mesma linha depois em linhas diferentes. Escreva (<expressão ou identificador ou constante>) //Mostra o resultado na mesma linha, mas em colunas diferentes. Exemplo X <- 3.5 Y <- 4 Escreva ("O valor de X é", X) Escreva (" E o valor de Y é ", Y) Escreval (" A soma de X e Y é", X+Y) Escreval ("O valor de X é", X) Escreval ("E o valor de Y é ", Y) Escreval ("A soma de X e Y é", X+Y) Faria com que aparecesse na tela: O valor de X é 3.5 E o valor de Y é 4 A soma de X e Y é 7.5 O valor de X é 3.5 E o valor de Y é 4 A soma de X e Y é 7.5 ETERJ/NOVO RIO Lógica Aritmética: 30 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Nem todos os dados que um algoritmo manipula são gerados por ele. Um algoritmo (programa) de caixa automático, por exemplo, tem que obter do usuário o número da conta, a senha, a opção de serviço desejada, etc. Assim, deve haver um meio para que sejam digitados (ou fornecidos de outra maneira) dados para o algoritmo. Mais uma vez, todas as linguagens de programação permitem isto, e no nosso Português Estruturado (Visualg) usamos o comando leia. A sintaxe deste comando é: Leia (<identificador>) Exemplo leia (NumeroConta) leia (NumeroAgencia) Você pode mandar uma mensagem antes para o usuário, assim ele sabe qual é o conteúdo que deve ser colocado, ou seja, digitado. Exemplo Escreva ("Digite seu nome: ") Leia (nome) Escreva ("Digite sua agencia: ") Leia (NumeroAgencia) Escreva ("Digite sua conta: ") Leia (NumeroConta) Deve estar claro que sempre à direita do comando leia haverá um identificador de variável. Assim, são incorretos os seguintes comandos: Exemplos incorretos leia (NumeroConta+60) leia (12345) leia (NomeCliente+Sobrenome) Exercícios: 1. Das palavras abaixo, indique quais poderiam ser usadas como nome de Variáveis, e quais não poderiam. a) NOME b) ENDEREÇO c) Nº d) NS3 e) NOME ALUNO f) 4SALA 2. Dê exemplos de declaração de variáveis que permitam armazenar os seguintes valores: a) 45 b) 23.9 c) “Rio de Janeiro” d) F ETERJ/NOVO RIO Lógica Aritmética: 31 ETERJ - A melhor técnica para entrar no Mercado de Trabalho ESTRUTURA SEQUENCIAL SEQUÊNCIA : usada para executar comandos passo a passo, sabendo que todos eles serão executados na ordem de escrita, sem nenhum desvio. Uma sequência pode possuir um ou vários comandos, os quais devem ser delimitados pelos identificadores Início e Fim. Inicio Comando_1 ... Comando_n Fim As instruções do algoritmo são executadas uma após a outra, sem que haja desvio na seqüência das instruções, sendo cada instrução executada uma única vez. Visualg De forma genérica, a construção de um algoritmo se resume às seguintes etapas: a) entendimento do problema; b) elaboração da solução algorítmica; e c) codificação da solução no Português Estruturado (Visualg); Geralmente a etapa “b” é a mais complexa, pois depende da engenhosidade e experiência do “construtor”. Exemplo 1 Enunciado: Faça um programa que leia dois valores numéricos, e calcule e exiba a sua média aritmética. Etapa 1 Simples, hein? Dos tempos de escola lembramos que a média aritmética de dois valores é calculada como a soma dos dois números dividida por dois (a+b)/2, e sendo assim a primeira etapa já está pronta. Etapa 2 Os dados necessários serão os dois valores, que colocaremos em duas variáveis A e B, do tipo numerico (real) , e uma terceira variável, que chamaremos media também do tipo numérico (real), que armazenará a média aritmética calculada. Etapa 3 A obtenção dos dados neste programa é simples e direta. Basta pedir ao usuário que digite os valores. ETERJ/NOVO RIO Lógica Aritmética: 32 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Etapa 4 O processamento aqui é o cálculo da média, usando o método citado acima, na etapa 1. O resultado do cálculo será armazenado na variável media. Etapa 5 Basta exibir o conteúdo da variável media. Solução: 1. Algoritmo "Cálculo de Média Aritmética" 2. VAR 3. A,B,Media : REAL 4. Inicio 5. Escreva ("Programa que calcula a média aritmética de dois valores.") 6. Escreva ("Digite um valor : ") 7. Leia (A) 8. Escreva ("Digite outro valor : ") 9. Leia (B) 10. Media <- (A+B)/2 11. Escreva ("A média dos dois valores é : ", Media) 12. FimAlgoritmo Comentários Você deve ter notado que colocamos na tela instruções para o usuário usando o comando Escreva. Esta é uma boa técnica de programação, mesmo hoje em dia, com o ambiente do Windows, etc. Da mesma forma, ao imprimir o resultado, não mostramos simplesmente a média, mas explicamos ao usuário o que aquele valor significa. Como pode ser analisado no tópico anterior todo programa possui uma estrutura seqüencial determinada por um INÍCIO e FIM. Em um algoritmo, estes limites são definidos com as palavras Algoritmo e FimAlgoritmo. Exemplo 2 Enunciado: Algoritmo que lê o nome de um aluno, as notas de suas três provas e calcule e exibe a média harmônica das provas. Etapa 1: a média harmônica de três provas a, b e c é dada pela fórmula 3/(1/a+1/b+1/c) Etapa 2: os dados necessários serão o nome do aluno e os valores das provas. O algoritmo limita-se basicamente à própria fórmula. 1. Algoritmo "MediaHarmonica" 2. VAR 3. a, b, c, MH: REAL 4. NOME: CARACTER 5. inicio 6. escreva ("Entre com o nome do aluno: ") 7. leia (nome) 8. escreval ("Entre com as notas das três provas") 9. escreva ("Digite a primeira nota: ") 10. leia (a) 11. escreva ("Digite a segunda nota: ") 12. leia (b) ETERJ/NOVO RIO Lógica Aritmética: 33 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 13. escreva ("Digite a terceira nota: ") 14. leia (c) 15. MH <- 3/(1/a + 1/b +1/c) 16. escreval ("A média harmônica do aluno: ", NOME, " é ", MH) 17. FimAlgoritmo Exemplo 3 Enunciado: Um algoritmo que lê o valordo raio e calcule a área do círculo correspondente. Etapa 1: o cálculo da área do círculo é Pi*R2 Etapa 2: o dado necessário é o valor do raio, que será lido (colocado) na variável Raio. 1. algoritmo "Calcula Área Circulo" 2. var 3. Area, Raio: REAL 4. inicio 5. Escreval ("Entre com o raio: ") 6. Leia (Raio) 7. Area <- Pi*Raio^2 8. Escreva ("A área do circulo com o raio ", Raio, " é ", Area) 9. fimalgoritmo Você não precisa declarar o pi, pois já é uma função definida pelo programa Visualg. Exercícios: 1) Escreva um algoritmo que leia o valor da base e altura de um triângulo e apresente o valor da área deste triângulo. 2) Escreva um algoritmo que atribua os valores 4.5, 8 e 7 as variáveis A, B e C e determine o resultado da expressão: D = A + C – B. 3) Escreva um algoritmo que leia o valor dos lados de um retângulo e calcule sua área e seu perímetro. 4) Escreva um algoritmo que leia o valor de quatro números e calcule sua média aritmética. 5) Escreva um algoritmo que leia o valor dos lados de um quadrado, um retângulo e um triângulo e mostre suas áreas. ESTRUTURA CONDICIONA ETERJ/NOVO RIO Lógica Aritmética: 34 ETERJ - A melhor técnica para entrar no Mercado de Trabalho * SELEÇÃO : usada para tomar decisões, ou seja desviar a execução do algoritmo de acordo com uma condição, podendo ser simples ou composta. COMANDO SE Simples Se (Expressão Lógica) entao Sequencia 1 Fimse Composta Se (Expressão Lógica) entao Sequencia 1 Senao Sequencia 2 Fimse Encadeada Se (Expressão Lógica) entao Se (Expressão Lógica) então Sequencia 1 Senao Sequencia 2 Fimse Senao Sequencia 3 Fimse Imagine a seguinte situação : em uma empresa, será solicitado o salário de um determinado funcionário, para se calcular seu novo salário, sendo que, se este tiver um salário superior a R$ 300,00, o reajuste será de 5%, caso contrário o reajuste será de 8%. Observe que teremos que testar o valor do salário, para saber o índice a ser aplicado. Vamos criar então um pseudocódigo com este objetivo: Algoritmo testa_salario Variaveis Real Salario Real Salario_final Inicio Ler salario ETERJ/NOVO RIO Lógica Aritmética: 35 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Se salario <= 300 então Salario_final=(salario*1,08) senão Salario_final=(salario*1,05) Fim_se Escrever “Salario_final” Fim. Observe que, durante a execução do pseudocódigo, após obtermos, através de uma instrução de entrada de dados, o valor do salário do funcionário, efetuamos um teste “Se”, que possui duas condições, uma verdadeira e uma falsa. As instruções que serão executadas no caso de um teste verdadeiro, devem estar abaixo da cláusula “Então”, já as instruções que serão executadas no caso de um teste falso, devem estar abaixo da cláusula “senão”. A instrução “Fim_se”, termina o bloco de testes. Observe a sintaxe de uma estrutura de decisão a seguir: Se <teste> Então Lista de comandos a serem executados caso teste=verdadeiro Senão Lista de comandos a serem executados caso teste=falso. Fim_se Em fluxograma, uma estrutura de decisão é representada pelo símbolo: Os símbolos que estiverem na direção de “True” serão executados caso o teste seja verdadeiro. Já os símbolos que estiverem na direção de “false” serão executados caso o teste tenha um resultado falso. Observe o trecho do pseudocódigo acima, representado no fluxograma: ETERJ/NOVO RIO Lógica Aritmética: 36 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Visualg Na vida real tomamos decisões a todo o momento baseadas em uma situação existente. Em um algoritmo, chamamos esta situação de condição. Associada a uma condição, existirá uma alternativa possível de ações. Exemplo 1 "se tiver R$ 10,00 sobrando então irei ao cinema hoje à noite.” A condição nesta frase é "tiver R$ 10,00 sobrando". Ela é uma expressão lógica, pois a pergunta "Tenho R$ 10,00 sobrando?" Pode (tem que) ser respondida com "Sim" ou "Não". Lembre-se, então: em um algoritmo, toda condição tem que ser uma expressão lógica, algo que possa-se pensar como “ isto é VERDADEIRO” ou “isto é FALSO”. Se a condição for verdadeira, a ação a ser executada é "irei ao cinema", se a resposta à pergunta "Tenho dinheiro suficiente?" for "Sim". Então, em um algoritmo, as ações são um ou mais comandos que serão realizados apenas se a avaliação da condição resulta VERDADEIRO. Vamos colocar agora a frase do exemplo anterior em outra forma, mais parecida com nosso Português Estruturado (Visualg): se "tiver R$ 10,00 sobrando" entao "irei ao cinema" fimse Veja que grifamos três palavras: se, entao e fimse. Elas são muito importantes na estrutura dos comandos de decisão. Como próximo passo, vamos generalizar a estrutura que criamos acima: se <condição> entao <ações (uma ou mais) a serem realizadas se a condição for verdadeira> fimse ETERJ/NOVO RIO Lógica Aritmética: 37 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Para terminar a nossa comparação, devemos lembrar que os comandos de um algoritmo são sempre indispensáveis, e que o computador só lida com quantidades definidas (ou seja, ele não sabe o que é "ter R$ 10,00 sobrando"). Para aproximar mais nossa frase de um algoritmo, poderemos ter a seguinte forma: Exemplo 2 se Dinheiro >= 10 entao Ir_ao_Cinema <- VERDADEIRO Fimse O exemplo acima poderia ser estendido para o caso do sujeito não ter dinheiro sobrando: "se tiver R$ 10,00 sobrando irei ao cinema hoje à noite, mas se não tiver ficarei vendo TV em casa". Neste caso, uma codificação possível para esse algoritmo seria: Exemplo 3 se Dinheiro >= 10 entao Ir_ao_Cinema <- VERDADEIRO Ver_TV <- FALSO Fimse se Dinheiro < 10 entao Ir_ao_Cinema <- FALSO Ver_TV <- VERDADEIRO Fimse É importante frisar que sempre à direita do comando se deverá parecer uma expressão lógica, e uma expressão cujo resultado é VERDADEIRO ou FALSO. Assim, os seguintes comandos são incorretos: Exemplo 4 se A <- B entao // É uma atribuição e não uma expressão ... fimse se A + B entao // É uma expressão aritmética e não uma expressão ... fimse Por outro lado, estão corretos os seguintes comandos: Exemplo 5 se (A > B) e (A > C) e (B <> C) entao ... fimse se nao Achou entao // Correto se Achou foi declarada como logico ... fimse ETERJ/NOVO RIO Lógica Aritmética: 38 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Exemplo 6 Seja o algoritmo abaixo: Faça um Algoritmo para calcular a área de um circulo, fornecido o valor do raio, que deve ser positivo. 1. Algoritmo "Calcula Area do Circulo" 2. VAR 3. Area, Raio: Real 4. inicio 5. Escreval ("Entre com raio do círculo") 6. Leia (Raio) 7. Se Raio > 0 entao 8. Area <- PI*(Raio^2) 9. Escreva ("A área do círculo de raio ", Raio, " é ", Area) 10. fimse 11. Se Raio <= 0 entao 12. Escreva ("Raio não pode ser nulo ou negativo!") 13. fimse 14. fimalgoritmo Observe que se a condição do primeiro é verdadeira, a segunda condição é falsa e vice-versa, e o conjunto de instruções a ser executado se Raio <= 0 (apenas a instrução escreva ("Raio não pode ser nulo ou negativo!")) é uma alternativa para a condição Raio> 0. Para expressar isso mais facilmente (e também por questões de eficiência), a maioria das linguagens de programação permite associar um conjunto de instruções a ser executado se a condição do comando resultar em FALSO. Em Português Estruturado, a sintaxe para tal é a seguinte: se <condição> entao <ações (uma ou mais) a serem realizadas se a condição for verdadeira> senao <ações (umaou mais) a serem realizadas se a condição for falsa> fimse Utilizando o senao, o algoritmo para calcular a área de um circulo, ficaria assim: Exemplo 7 1. Algoritmo "Calcula Area do Circulo" 2. VAR 3. Area, Raio: Real 4. inicio 5. Escreval ("Entre com raio do círculo") 6. Leia (Raio) 7. Se Raio > 0 entao 8. Area <- PI*(Raio^2) 9. Escreva ("A área do círculo de raio ", Raio, " é ", Area) 10. senao 11. Escreva ("Raio não pode ser nulo ou negativo!") ETERJ/NOVO RIO Lógica Aritmética: 39 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 12. fimse 13. fimalgoritmo Exemplo 8 Algoritmo que peça ao usuário a quantia em dinheiro que tem sobrando e sugira, caso ele tenha 10 ou mais reais, que vá ao cinema, e se não tiver, fique em casa vendo TV. 1. Algoritmo "AconselhaPrograma" 2. Var 3. Dinheiro: REAL 4. inicio 5. Escreval ("*** Serviço Informatizado de Sugestões ***") 6. Escreva ("Quanto dinheiro você tem sobrando?") 7. Leia (Dinheiro) 8. Se Dinheiro >= 10 entao 9. Escreval ("Vá ao cinema hoje à noite.") 10. Senao 11. Escreval ("Fique em casa vendo TV.") 12. Fimse 13. Escreva ("Obrigado e volte sempre.") 14. Fimalgoritmo COMANDO CASO Existem casos em que não basta ter apenas as “direções” verdadeiro e falso para tomar uma determinada decisão, e sim, uma série de testes sobre um mesmo bloco. Este tipo de estrutura é chamada de estrutura de decisão do tipo “ESCOLHA”. Esta estrutura é normalmente conhecida como condições múltiplas. Observe a seguir a sintaxe da estrutura de decisão do tipo escolha em pseudocódigo: Faca Caso Caso <condição 1> Lista de instruções caso condição 1 = verdadeira Caso <condição 2> Lista de instruções caso condição 2 = verdadeira Caso <condição 3> Lista de instruções caso condição 3 = verdadeira Outro caso Lista de instruções caso todas condições = falsa Fim_Caso ETERJ/NOVO RIO Lógica Aritmética: 40 ETERJ - A melhor técnica para entrar no Mercado de Trabalho No fluxograma, o símbolo que representa cada uma das condições acima, é o mesmo que o símbolo que representa a estrutura de decisão. Veja a sintaxe da estrutura de decisão de escolha no fluxograma: Vamos imaginar um exemplo parecido, de reajuste de salário, porém teremos as seguintes situações para reajuste: Salários inferiores a R$ 400,00 = reajuste de 9% Salários iguais a R$ 400,00 e inferiores a R$ 800,00 = reajuste de 7% Salários iguais a R$ 800,00 e inferiores a R$ 1000,00 = reajuste de 5% Fora das faixas supra citadas = reajuste de 3% Veja o pseudocódigo do exemplo citado: Algoritmo testa_salario2 Variaveis Real Salário , Salario_final Inicio Ler salario Faca caso Caso salario < 400 Salario_final=(salario*1.09) Caso salario >= 400 .e. salario<800 Salario_final=(salario*1.07) Caso salario>=800 .e. salario<1000 Salario_final=(salario*1.05) Outro caso Salario_final=(salario*1.03) Escrever Salario_final Fim. ETERJ/NOVO RIO Lógica Aritmética: 41 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Observe que, temos aqui uma novidade, ou seja, em uma única condição, estamos na verdade realizando dois testes, isto porque usamos o operador lógico “AND” “.e.”, ou seja, se salário menor ou igual a 400 e salário menor que 800 faça isso... assim sucessivamente. Quando usamos o operador lógico “.e.”, os testes, neste caso dois, que formam o caso, devem ser verdadeiros. O outro operador lógico “.ou.”, retorna verdadeiro caso um dos testes que formam o conjunto satisfaça a uma determinada condição. Como exercício, crie o fluxograma do pseudocódigo visto acima. A seguir iremos estudar as estruturas de repetição e desenvolver mais exemplos sobre o que estudamos neste módulo. Visualg Escolha <variável> Em algumas situações é necessário termos várias soluções ligadas a respostas diferentes, neste caso o comando de alternativa simples ou composta não é uma solução prática, isto porque obrigará o programador a escrever muitas linhas de programa, além de ter que criar vários comandos de alternativas compostas e verificar a validade de suas condições para que o comando execute o caminho correto para uma determinada condição. Temos então o comando de alternativa de múltipla escolha. O funcionamento deste comando obedece a seguinte regra: escolha < expressão-de-seleção > caso < exp 1 > , < exp 2 >, ... , < exp n > < lista-de-comandos-1 > caso < exp 1 > , < exp 2 >, ... , < exp n > < lista-de-comandos-2 > outrocaso < lista-de-comandos-3 > fimescolha Exemplo 1 Um determinado clube de futebol pretende classificar seus atletas em categorias e para isto ele contratou um programador para criar um programa que executasse esta tarefa. Para isso o clube criou uma tabela que continha a faixa etária do atleta e sua categoria. A tabela está demonstrada abaixo: IDADE CATEGORIA De 05 a 10 Infantil De 11 a 15 Juvenil De 16 a 20 Junior De 21 a 25 Profissional Construa um algoritmo que solicite o nome e a idade de um atleta e imprima a sua categoria. 1. Algoritmo "CLASSIFICAÇÃO DE ATLETAS 2. var ETERJ/NOVO RIO Lógica Aritmética: 42 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 3. nome, categoria : caractere 4. idade : inteiro 5. inicio 6. Escreva("Nome do Atleta = ") 7. Leia (nome) 8. Escreva("Idade do Atleta = ") 9. Leia (idade) 10. Escolha idade 11. caso 5,6,7,8,9,10 12. categoria <- "Infantil" 13. caso 11,12,13,14,15 14. categoria <- "Juvenil" 15. caso 16,17,18,19,20 16. categoria <- "Junior" 17. caso 21,22,23,24,25 18. categoria <- "Profissional" 19. outrocaso 20. categoria <- "INVALIDO" 21. Fimescolha 22. Escreva ("Categoria = ",categoria) 23. fimalgoritmo TESTANDO O ALGORITMO Um algoritmo, depois de ser elaborado, pode (e deve) ser testado. Para tal, utilizamos um método conhecido como teste de mesa. O teste de mesa é como uma simulação de todos os passos, ou seja, entradas, comandos e instruções do algoritmo, a fim de saber se ele chega ao resultado a que se propõe e se a lógica está correta. Para tal, preenche-se uma tabela com valores para as variáveis e segue-se o fluxo de execução do algoritmo, simulando a execução de cada instrução, ou seja, refazendo o que o computador faria ao executar cada instrução. A cada comando simulado (executado), o valor das variáveis na tabela deve ser atualizado. Se, para uma instrução executada, uma ou mais variáveis não ficaram com os valores esperados, há um erro na lógica do algoritmo. Exercicios: 1. Construa um algoritmo que leia as notas de um aluno e calcule sua média aritmética. Após o cálculo determine se o aluno foi aprovado. Considerar média 7.0 para aprovação. 2. No algoritmo acima, acrescente a informação que o aluno foi aprovado ou reprovado. 3. A partir do algoritmo do exercício 2, inclua a informação de que o aluno pode estar em recuperação, além de aprovado ou reprovado. Considerar que entre 4.5 e 6.9 o aluno está em recuperação. ETERJ/NOVO RIO Lógica Aritmética: 43 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 4. Construa um algoritmo que pergunte ao utilizador a figura que deseja calcular a área, quadrado, retângulo ou triângulo e após a decisão leia os valores necessários para calcular a área e apresentar o resultado. 5. Construa um algoritmo para ler o número de um mês e escrever o nome do mês por extenso. ESTRUTURA CONDICIONAL Vamos falar um pouco sobre as estruturas de repetição, ou seja, uma parte do código que deverá ser executada x vezes. Em linguagem de programação, as estruturas de repetição são conhecidas como laços (loops). Trabalhamos basicamente com dois tipos de estruturas de repetição: 1. Loops contados:-> quando se tem, de forma prévia, o número de vezes que uma determinada sequência de comandos será executada. 2. Loops condicionais: -> aqueles que não possuem um número pré-determinado de vezes que a estrutura de comandos será executada, porém este número estará vinculado a uma determinada condição. Loops contados Em pseudocódigo, utilizamos a seguinte sintaxe para loops contados: Para <variavel> = <valor inicial> até <valor final> Passo <numero> <seqüência de comandos> Fimpara Onde: A variável é aquela que irá receber a contagem. Os valores iniciais e finais representam onde começa e termina a contagem da repetição. O número de Passo (incremento) estipula a forma da contagem, como por exemplo, incrementos de 1 em 1, 2 em 2 .... e após , a sequência de comandos que será executada durante o loop. No fluxograma, utilizamos a seguinte sintaxe para representar loops contados: ETERJ/NOVO RIO Lógica Aritmética: 44 ETERJ - A melhor técnica para entrar no Mercado de Trabalho A lógica de trabalho do laço contado é apresentada a seguir: 1. No inicio da leitura do código/fluxo, o valor inicial é atribuído à variável; 2. O valor da variável é comparado ao valor final; 3. Se o valor da variável for maior que o valor final, a sequência de comandos que faz parte do laço não é executado e o controle do processo passa para a próxima linha após o final do laço ( PROXIMO ) ou para o símbolo ao lado (no caso de fluxograma); 4. Se o valor da variável for menor ou igual ao do valor final, a sequência de comandos é executada e, ao final do último comando, o valor do incremento é adicionado a variável e retorna-se à comparação entre variável e valor_final, repetindo todo o processo anterior. Vale lembrar que o incremento não é de declaração obrigatória, e, caso não seja declarado, assume automaticamente o valor 1. Loops Condicionais Já os loops condicionais são aqueles cujo conjunto de comandos em seu interior é executado até que uma determinada condição seja satisfeita. O pseudocódigo mais comum utilizado neste sentido é o apresentado a seguir: Enquanto <condição> faca <sequência de comandos> Fimenquanto A sintaxe de execução deste é: 1. No inicio da execução do enquanto, a condição é testada; 2. Se o resultado do teste for verdadeiro, a sequência de comandos é executada e ao término desta, retorna-se ao teste da condição; 3. Sendo a condição falsa, o controle da aplicação passa para a próxima linha após o Fim_enquanto. ETERJ/NOVO RIO Lógica Aritmética: 45 ETERJ - A melhor técnica para entrar no Mercado de Trabalho No fluxograma, poderemos representar este tipo de operação da forma que segue: Em resumo, neste tipo de operação, a execução somente abandonará o laço quando a condição for falsa. Veja um exemplo a seguir, utilizando-se de pseudocódigo, onde iremos apresentar a soma de uma contagem de números de 1 a 5: Algoritmo soma Variaveis Real Soma // Acumulador Inteiro Contador // Contador Inicio Soma = 0 Escrever“A soma dos números de 1 a 10 é igual a” Para contador = 1 até 10 Soma = soma + contador Próximo Escrever soma Fim. No exercício acima, teremos como resultado a expressão: A soma dos números de 1 a 10 é igual a 55 ESTRUTURA REPETITIVA Visualg Nos exemplos e exercícios que vimos até agora sempre foi possível resolver os problemas com uma seqüência de instruções onde todas eram necessariamente executadas uma única vez. Os algoritmos que escrevemos seguiam, portanto, apenas uma seqüência linear de operações. Veja, por exemplo, um algoritmo para ler os nomes e as notas das provas de três alunos e calcular suas médias harmônicas. Uma possível solução seria repetir o trecho de código do algoritmo de cálculo três vezes. ETERJ/NOVO RIO Lógica Aritmética: 46 ETERJ - A melhor técnica para entrar no Mercado de Trabalho Exemplo 1 Algoritmo que lê os nomes dos alunos de uma turma de três alunos e as notas de suas três provas; o algoritmo calcula e exibe as médias harmônicas das provas de cada aluno. 1. Algoritmo "MediaHarmonica" 2. VAR 3. a, b, c, MH: REAL 4. NOME: caractere 5. inicio 6. escreva ("Entre com o nome do aluno: ") 7. leia (nome) 8. escreval ("Entre com as notas das três provas") 9. escreva ("Digite a primeira nota: ") 10. leia (a) 11. escreva ("Digite a segunda nota: ") 12. leia (b) 13. escreva ("Digite a terceira nota: ") 14. leia (c) 15. MH <- 3/(1/a + 1/b +1/c) 16. escreval ("A média harmônica do aluno: ", NOME, " é ", MH) 17. escreva ("Entre com o nome do aluno: ") 18. leia (nome) 19. escreval ("Entre com as notas das três provas") 20. escreva ("Digite a primeira nota: ") 21. leia (a) 22. escreva ("Digite a segunda nota: ") 23. leia (b) 24. escreva ("Digite a terceira nota: ") 25. leia (c) 26. MH <- 3/(1/a + 1/b +1/c) 27. escreval ("A média harmônica do aluno: ", NOME, " é ", MH) 28. escreva ("Entre com o nome do aluno: ") 29. leia (nome) 30. escreval ("Entre com as notas das três provas") 31. escreva ("Digite a primeira nota: ") 32. leia (a) 33. escreva ("Digite a segunda nota: ") 34. leia (b) 35. escreva ("Digite a terceira nota: ") 36. leia (c) ETERJ/NOVO RIO Lógica Aritmética: 47 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 37. MH <- 3/(1/a + 1/b +1/c) 38. escreval ("A média harmônica do aluno: ", NOME, " é ", MH) 39. FimAlgoritmo A solução acima é viável apenas para uma turma de poucos alunos; para uma turma de 40 alunos, a codificação da solução seria por demais trabalhosa. Nesta seção, veremos um conjunto de estruturas sintáticas que permitem que um trecho de um algoritmo (lista de comandos) seja repetido um determinado número de vezes, sem que o código correspondente tenha que ser escrito mais de uma vez. Em Português Estruturado possui três estruturas de repetição: repita...ate, enquanto...faca e para...faca. COMANDO REPITA Repita...Ate Nessa estrutura, todos os comandos da lista são executados e uma expressão lógica é avaliada. Isto se repete até que a avaliação da condição resulte em FALSO, quanto então o próximo comando a ser executado é o comando imediatamente após o ate. Cada repetição da lista de comandos também é chamada de iteração e essa estrutura também é chamada de laço de repetição. Sua forma geral é: repita <lista de comandos> ate <expressão lógica ou relacional> Exemplo 1 Algoritmo que escreve os números de 1 a 10. 1. algoritmo "DemonstraRepeticao" 2. VAR 3. i: INTEIRO 4. inicio 5. i<- 1 6. repita 7. escreva (i) 8. i<- i + 1 9. ate i > 10 10. fimalgoritmo No exemplo acima, a variável i controla o número de repetições do laço. Normalmente, a variável de controle do laço recebe um valor inicial, é incrementada (ou decrementada) de um valor constante no laço e tem seu valor testado no final do laço. Ao chegar a um determinado valor, o laço é interrompido. A inicialização da variável contadora deve acontecer fora do laço, antes do seu início. Exemplo 2 Algoritmo que lê os nomes dos alunos de uma turma de três alunos e as notas de suas três provas; o algoritmo calcula e exibe as médias harmônicas das provas de cada aluno. 1. Algoritmo "MediaHarmonica" ETERJ/NOVO RIO Lógica Aritmética: 48 ETERJ - A melhor técnica para entrar no Mercado de Trabalho 2. var 3. a, b, c, MH, i: real 4. NOME: caractere 5. inicio 6. i <- 1 7. Repita 8. escreva ("Entre com o nome do aluno: ") 9. leia (nome) 10. escreval ("Entre com as notas das três provas") 11. escreva ("Digite a primeira nota: ") 12. leia (a) 13. escreva ("Digite a segunda nota: ") 14. leia (b) 15. escreva ("Digite a terceira nota: ") 16. leia (c) 17. MH <- 3/(1/a + 1/b +1/c) 18. escreval ("A
Compartilhar