Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * Yoshizo Togue * * * * Formalização da ideia de um procedimento através de uma sequência de comandos pré-estabelecidos. Três tipos de pseudolinguagem: Algoritmo Fluxograma Chappin Início Leia n1, n2 Media ← (n1+n2)/2 Se media≥ 6 Então Escreva “Aprovado” Senão Escreva “Reprovado” Fim-se Fim * * Método a ser usado para escrevermos os procedimentos. O procedimento lógico consiste em executar comando a comando na sequência que as mesmas aparecem. Corpo do procedimento Início Declarações de variáveis Sequência de comandos Fim * * Tipos básicos utilizados na construção de algoritmos. Basicamente dividido em quatro tipos. * * Valores fixos, também conhecidos como literais A indicação dos diversos tipos de dados é normalmente a mesma. Veja abaixo alguns exemplos: Numérico: padrão (2, -34 , 218.00), científico (2.3E-3 , 0.322E+12) Caracter: Entre aspas (“João” , “Rua B, Lote 21/101-C”) Lógico: Entre pontos (.Verdade. , .Falso.) * * Definição Espaço na memória alocado (reservado) no computador onde os valores serão armazenados. Composição do nome Elementos válidos para o nome de uma variável: Letras do alfabeto: a, b, c, d, e,f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z Dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Caracteres especiais (depende da métrica): _ % ! $ # (mais comuns) * * * * Declaração Em programas de computador, variáveis são armazenadas em memória. * * Declaração Método de indicação do tipo do valor a ser armazenado na variável como conteúdo O tipo do valor a ser armazenado varia em cada linguagem. Veja alguns tipos básicos nos exemplos abaixo. Forma geral Defina <listavar> <Tipo> Ex: Defina nome caracter Defina n1, n2 real Defina idade inteiro Defina chave lógico * * Variáveis que fazem referência a um conjunto de valores de mesmo tipo de dados através de um índice para cada posição reservada. Forma geral Defina <listavar>(<índice1> [, <índice2>[, ... ] ] ) <Tipo> Ex: Defina nome(10) caracter Defina nota1(10), matriz(4,7) real Defina idade(10) inteiro Defina chave(10) lógico * * Atribuição Uma das formas de popular (preencher, incluir conteúdo a) uma variável Alguns valores são automaticamente convertidos como é o caso de valores numéricos inteiros e numéricos reais Forma geral <variável> <expressão> onde a expressão pode ser uma constante ou uma expressão aritmética Ex: nome “Maria” nota1 7.5 Idade 21 chave .Verdade. media (n1 + n2) / 2 nomecompleto nome + sobrenome * * Prioridade Potência (**) Multiplicação (*) ou divisão (/) Soma (+) ou subtração (-) Execução dos operadores de mesmo nível avaliando a expressão da esquerda para a direita. Alterar prioridade com uso de parênteses. a+b/c+d a+b/(c+d) (a+b)/c+d (a+b)/(c+d) * * Leitura: Usado para atribuir dados externos a área reservada na memória (variável). Outra forma de atribuição de valores. Forma geral Leia <listavar> Ex: Leia nome Leia nota1, nota2 Leia idade, cargo Observação Valores de tipos diferentes podem ser lidos em um mesmo comando * * Escrita: Usado para exibir dados existentes na área reservada da memória (variável) e valores constantes. Forma geral Escreva <listavar / listaconst> Ex: Escreva “Alô mundo!” Escreva 1277 Escreva “Nome: “, nome Escreva idade, cargo Observações Valores de tipos diferentes podem ser escritos em um mesmo comando * * Exemplo de utilização dos comandos visto até agora. Início Defina nome caracter Defina idade inteiro Defina nota1, nota2, media real Leia nome, idade, nota1, nota2 media (nota1 + nota2) / 2 Escreva nome, idade, nota1, nota2, media Fim Sublinhar todas as palavras reservadas (usadas para definir uma ação a ser executada no algoritmo). * * Início Defina nome caracter Defina matricula inteiro Defina salario real Leia nome, matricula, salario Escreva nome, matricula, salario Fim Exercício: Montar um algoritmo para ler o nome, matrícula e salário de um funcionário da empresa Acme e escrevê-los. * * Exercício: Montar um algoritmo para ler o código, preço de custo de um produto, calcular um lucro de 10% e escrevê-los. Início Defina codigo inteiro Defina precocusto, lucro real Leia codigo, precocusto lucro precocusto * 0.1 Escreva codigo, precocusto, lucro Fim * * Condicional: Comando de decisão para desvio de fluxo dentro do procedimento. Três tipos: 1 ramo, 2 ramos, n ramos Forma Geral (condicional de1 ramo) Se <condição> Então [Sequência de comandos Fim-se * * Forma Geral (Condicional de 2 ramos) Se <condição> Então [Sequência de comandos1 Senão [Sequência de comandos2 Fim-se * * Operador lógico Sinais usados para manipulação de dados: **, *, /, +, - Sinais usados para comparação de dados: <, >, ≤, ≥, , ≠ Exemplos: valor<0, (n1+n2)/2≤6, num1>num2, nome ≠”EVA” Conector lógico Palavras usadas para comparação (em ordem de prioridade): .NÃO., .E., .OU. Exemplos: a<0 .e. f=b+1, .não.(f>0.ou. a<b) .e. c≠a/3 Avaliação da expressão sempre da esquerda para a direita. Altere a prioridade usando parênteses. * * Falaremos agora um pouco sobre os três conectores lógicos básicos: Conector OU: Basta que uma das sentenças seja verdadeira e toda a condição será verdadeira. Exemplo: * * Conector E: Basta que uma das sentenças seja falsa e toda a condição será falsa. Exemplo: * * Conector NÃO: A condição será falsa se a sentença por verdadeira e vice-versa. Exemplo: * * Supondo a 1, b 2, c 3, d 0, resolva as seguintes expressões lógicas: 01) a < 1 02) a = 1 03) a ≤ 1 04) a + b ≤ c + d / a 05) a . d + 3 > c – 1 06) a ≤ 0 .ou. b ≠ 2 07) a ≤ (b + d) / 2 .ou. b ≠ 2 08) b < c + d .ou. a ≤ (b + d) / 2 09) b ≠ 2 .ou. b < c + d 10) a ≤ 0 .e. b ≠ 2 * * Supondo a 1, b 2, c 3, d 0, resolva as seguintes expressões lógicas: 11) a ≤ (b + d) / 2 .e. b ≠ 2 12) b < c + d .e. a ≤ (b + d) / 2 13) b ≠ 2 .e. b < c + d 14) a ≤ (b + d) / 2 .ou. b ≠ 2 .e. b < c + d 15) b ≤ 2 .e. b < c + d .ou. a ≤ 0 16) b ≠ 2 .e. b < c + d .ou. a ≤ (b + d) / 2 17) a ≤ (b + d) / 2 .ou. b < c + d .e. a ≤ (b + d) / 2 * * Supondo a 1, b 2, c 3, d 0, resolva as seguintes expressões lógicas: 18) b ≤ 2 .e. (b < c + d .ou. a ≤ (b + d) / 2) 19) b ≤ 2 .e. (b < c + d .ou. a ≤ 0) 20) b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0) 21) .não. b ≤ 2 .e. (b < c + d .ou. a ≤ 0) 22) .não. b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0) * * Supondo a 1, b 2, c 3, d 0, resolva as seguintes expressões lógicas: 23) .não. (b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0)) 24) .não. (b ≤ 2 .e. .não.b < c + d .ou. a ≤ 0) 25) .não. (.não. b ≤ 2 .e. b < c + d .ou. a ≤ 0) 26) .não. (b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0) * * Supondo a 1, b 2, c 3, d 0, resolva as seguintes expressões lógicas: 27) .não. (b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0) 28) b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0 29) b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0 30) b ≤ 2 .e. .não.(b < c + d .ou. .não. a ≤ 0) * * Exemplo de utilização do comando condicional (1 ramo). Início Defina media real Leia media Escreva media Se media < 0 .ou. Media > 10 Então Escreva “Média inválida” Fim-se Fim * * Exemplo de utilização do comando condicional (2 ramos). Início Defina valor real Leia valor Escreva valor Se valor < 0 Então Escreva “valor negativo” Senão Escreva “valor não negativo” Fim-se Fim * * Mas um procedimento pode ser feito de várias formas diferentes. Veja uma outra versão do algoritmo anterior testando todas as possibilidades de valor (negativo, nulo, e positivo): Início Defina valor real Leia valor Escreva valor Se valor < 0 Então Escreva “valor negativo” Fim-se Se valor > 0 Então Escreva “valor positivo” Fim-se Se valor = 0 Então Escreva “valor nulo” Fim-se Fim * * Exemplo de utilização do comando condicional com encadeamento. Início Defina valor real Leia valor Escreva valor Se valor < 0 Então Escreva “valor negativo” Senão Se valor > 0 Então Escreva “valor positivo” Senão Escreva “valor nulo” Fim-se Fim-se Fim * * Veja o fluxo do condicional do exemplo anterior * * Desde que mantido as características corretas. Por exemplo vejamos uma versão ERRADA do algoritmo anterior: Início Defina valor real Leia valor Escreva valor Se valor < 0 Então Escreva “valor negativo” Fim-se Se valor > 0 Então Escreva “valor positivo” Senão Escreva “valor nulo” Fim-se Fim * * Exercício: Montar um algoritmo para ler o nome e 2 notas de 1 aluno e calcular a média aritmética e a situação (abaixo de 5 reprovado, caso contrário aprovado). Escreva os valores lidos e calculados. Início Defina nome, situacao caracter Defina nota1, nota2, media real Leia nome, nota1, nota2 media (nota1 + nota2) / 2 Se media < 5 Então situacao “Reprovado” Senão situacao “Aprovado” Fim-se Escreva nome, nota1, nota2, media, situacao Fim * * Agora criaremos um algoritmo para ler 5 valores reais e escrevê-los apenas com os comandos visto até o momento: Início Defina valor real Leia valor Escreva valor Leia valor Escreva valor Leia valor Escreva valor Leia valor Escreva valor Leia valor Escreva valor Fim Início Defina v1, v2, v3, v4, v5 real Leia v1, v2, v3, v4, v5 Escreva v1, v2, v3, v4, v5 Fim Ou Início Defina cont inteiro Defina valor real cont 1 Se cont ≤ 5 Então Leia valor Escreva valor cont cont + 1 vá para 4 Fim-se 6. Fim * * Repetição incondicional: Comando de decisão para desvio de fluxo dentro do procedimento com repetição controlada dos comandos existentes dentro dele com quantidade. Forma Geral Para <var> de <val1> até <val2> passo <val3> Faça [Sequência de comandos Fim-para * * Repetição incondicional O algoritmo anterior pode ser substituído pelo algoritmo abaixo: * * Repetição condicional: Comando de repetição dos comandos existentes dentro dele até que a condição seja satisfeita. Dois tipos: com teste no início, com teste no final Forma Geral (com teste no início) Enquanto <condição> Faça [Sequência de comandos Fim-enquanto * * Podemos ainda, usando o comando de repetição condicional, reescrever o código anterior: Início Defina cont inteiro Defina valor real cont 1 Enquanto cont ≤ 5 Faça Leia valor Escreva valor cont cont + 1 Fim-Enquanto Fim * * O comando de repetição condicional pode então ser utilizado sempre que houver uma repetição incondicional. A vantagem de se utilizar comando de repetição incondicional é de escrever menos. * * Mas existem ocasiões que apenas o comando de repetição condicional pode ser usado. Normalmente quando não existe um controle interno, e sim um controle externo, ou seja, se um valor lido. Veja o exemplo abaixo: Início Defina nome caracter Leia nome Enquanto nome ≠ “fim” Faça Escreva nome Leia nome Fim-Enquanto Fim * * No entato, se a condição sempre for satisfeita, o comando entra em Loop. Veja o fluxograma ao lado: Se o nome for lido apenas no momento anterior à entrada do comando de repetição, o nome será escrito indefinidamente pois não existe outra leitura dentro do comando que altere o valor que se encontra na memória. * * Exercício: Monte um algoritmo para ler e escrever o nome de pessoas até que o nome lido seja “acabou”. Escreva no final quantos nomes foram escritos. Início Defina nome caracter Defina cont inteiro cont 0 Leia nome Enquanto nome ≠ “acabou” Faça Escreva nome Leia nome cont cont + 1 Fim-Enquanto Escreva cont Fim Solução dos exercícios com os seguintes valores: a 1, b 2, c 3, d 0 01) a < 1 02) a = 1 03) a ≤ 1 (suponha a< 1 . ou. a = 1) .F. .V. .V. .F. .V. .V. 04) a + b ≤ c + d / a 05) a . d + 3 > c – 1 06) a ≤ 0 .ou. b ≠ 2 3 ≤ 3 3 > 2 .F. .F. .V. .V. .F. 07) a ≤ (b + d) / 2 .ou. b ≠ 2 08) b < c + d .ou. a ≤ (b + d) / 2 1 ≤ 1 .ou. 2 ≠ 2 2 < 3 .ou. 1 ≤ 1 .V. .ou. .F. .V. .ou. .V. .V. .V. 09) b ≠ 2 .ou. b < c + d 10) a ≤ 0 .e. b ≠ 2 2 ≠ 2 .ou. 2 < 3 1 ≤ 0 .e. 2 ≠ 2 .F. .ou. .V. .F. .e. .F. .V. .F. * Solução dos exercícios com os seguintes valores: a 1, b 2, c 3, d 0 11) a ≤ (b + d) / 2 .e. b ≠ 2 12) b < c + d .e. a ≤ (b + d) / 2 1 ≤ 1 .e. 2 ≠ 2 2 < 3 .e. 1 ≤ 1 .V. .e. .F. .V. .e. .V. .F. .V. 13) b ≠ 2 .e. b < c + d 14) a ≤ (b + d) / 2 .ou. b ≠ 2 .e. b < c + d 2 ≠ 2 .e. 2 < 3 1 ≤ 1 .ou. 2 ≠ 2 .e. 2 < 3 .F. .e. .V. .V. .ou. .V. .e. .V. .F. .V. .ou. .V. .V. 15) b ≤ 2 .e. b < c + d .ou. a ≤ 0 16) b ≠ 2 .e. b < c + d .ou. a ≤ (b + d) / 2 2 ≤ 2 .e. 2 < 3 .ou. 1 ≤ 0 2 ≠ 2 .e. 2 < 3 .ou. 1 ≤ 1 .V. .e. .V. .ou. .F. .F. .e. .V. .ou. .V. .V. .ou. .F. .F. .ou. .V. .V. .V. 17) a ≤ (b + d) / 2 .ou. b < c + d .e. a ≤ (b + d) / 2 2 ≤ 1 .ou. 2 < 3 .e. 1 ≤ 1 .F. .ou. .V. .e. .V. .F. .ou. .V. .F. * Solução dos exercícios com os seguintes valores: a 1, b 2, c 3, d 0 18) b ≤ 2 .e. (b < c + d .ou. a ≤ (b + d) / 2) 19) b ≤ 2 .e. (b < c + d .ou. a ≤ 0) 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 1) 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 0) .V. .e. ( .V. .ou. .V.) .V. .e. (.V. .ou. .F.) .V. .e. .V. .V. .e. .V. .V. .V. 20) b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0) 21) .não. b ≤ 2 .e. (b < c + d .ou. a ≤ 0) 2 ≤ 2 .e. .não.(2 < 3 .ou. 1 ≤ 0) .não. 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 0) .V. .e. .não.(.V. .ou. .F.) .não. 2 ≤ 2 .e. (2 < 3 .ou. 1 ≤ 0) .V. .e. .não.(.V.) .não. .V. .e. ( .V. .ou. .F.) .V. .e. .F. .não. .V. .e. .V. .F. .F. .e. .V. .F. 22) .não. b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0) .não. 2 ≤ 2 .e. .não.(2 < 3 .ou. 1 ≤ 0) .não. .V. .e. .não.(.V. .ou. .F.) .não. .V. .e. .não. (.V.) .F. .e. .F. .F. * Solução dos exercícios com os seguintes valores: a 1, b 2, c 3, d 0 23) .não. (b ≤ 2 .e. .não.(b < c + d .ou. a ≤ 0)) 24) .não. (b ≤ 2 .e. .não.b < c + d .ou. a ≤ 0) .não. (2 ≤ 2 .e. .não.(2 < 3 .ou. 1 ≤ 0)) .não. (2 ≤ 2 .e. .não. 2 < 3 .ou. 1 ≤ 0) .não. ( .V. .e. .não.( .V. .ou. .F.)) .não. ( .V. .e. .não. .V. .ou. .F.) .não. ( .V. .e. .não.( .V. )) .não. ( .V. .e. .F. .ou. .F.) .não. ( .V. .e. .F.) .não. ( .F. .ou. .F.) .não. ( .F. ) .não. ( .F. ) .V. .V. 25) .não. (.não. b ≤ 2 .e. b < c + d .ou. a ≤ 0) 26) .não. (b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0) .não. (.não. 2 ≤ 2 .e. 2 < 3 .ou. 1 ≤ 0) .não. (2 ≤ 2 .e. .não. 2 < 3 .ou. 1 ≤ 0) .não. (.não. .V. .e. .V. .ou. .F.) .não. (.V. .e. .não. .V. .ou. .F.) .não. ( .F. .e. .V.) .não. (.V. .e. .F. .ou. .F.) .não. ( .F.) .não. ( .F.) .V. .V. * Solução dos exercícios com os seguintes valores: a 1, b 2, c 3, d 0 27) .não. (b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0) 28) b ≤ 2 .e. b < c + d .ou. .não. a ≤ 0 .não. (2 ≤ 2 .e. 2 < 3 .ou. .não. 1 ≤ 0) 2 ≤ 2 .e. 2 < 3 .ou. .não. 1 ≤ 0 .não. (.V. .e. .V. .ou. .não. .F.) .V. .e. .V. .ou. .não. .F. .não. ( .V. .ou. .V.) .V. .ou. .V. .não. ( .V.) .V. .ou. .V. .F. .V. 29) b ≤ 2 .e. .não. b < c + d .ou. a ≤ 0 30) b ≤ 2 .e. .não.(b < c + d .ou. .não. a ≤ 0) 2 ≤ 2 .e. .não. 2 < 3 .ou. 1 ≤ 0 2 ≤ 2 .e. .não.(2 < 3 .ou. .não. 1 ≤ 0) .V. .e. .não. .F. .ou. .F. .V. .e. .não.(.F. .ou. .não. .V.) .V. .e. .V. .ou. .F. .V. .e. .não.(.F. .ou. .F.) .V. .ou. .F. .V. .e. .não.( .V. ) .F. .V. .e. .F. .F. * Note que: Se o valor for igual a zero, ao chegar no primeiro condicional, a sentença é falsa. Chegando ao segundo condicional, a sentença também será falsa. Logo a mensagem “valor nulo” será escrito. Se o valor for maior que zero, ao chegar no primeiro condicional, a sentença é falsa. Chegando ao segundo condicional, a sentença será verdadeira. Logo a mensagem “valor positivo” será escrito. Se o valor for menor que zero, ao chegar no primeiro condicional, a sentença é verdadeira e a mensagem “valor negativo” será escrito.Chegando ao segundo condicional, a sentença também será verdadeira. Logo a mensagem “valor nulo” também será escrito. *
Compartilhar