APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo...
Transcript of APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo...
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 1
U.E PROF EDGAR TITO - NOITE PROF. RANILDO LOPES DISCIPLINA: Lógica de Programação
APOSTILA 02
LÓGICA DE PROGRAMAÇÃO
Visite nosso sítio
http://ueedgartito.wordpress.com
“Nele estão os resumos e trabalho
de sala de aula”
Obrigado pela preferência de nossa ESCOLA!
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 2
Sumário I - CONCEITOS INICIAIS .......................................................................................................................................... 3
Lógica de programação......................................................................................................................................... 3 Algoritmo ............................................................................................................................................................... 3 Instrução................................................................................................................................................................ 4 EXERCÍCIOS ........................................................................................................................................................ 4 Programa de Computador..................................................................................................................................... 4 Fases..................................................................................................................................................................... 4 Diagrama de Blocos .............................................................................................................................................. 5 EXERCÍCIOS ........................................................................................................................................................ 5
II - VARIÁVEIS........................................................................................................................................................... 5 Tipos de Variáveis ................................................................................................................................................. 6
Numéricas ......................................................................................................................................................... 6 Cadeia ou String ou Alfanuméricas .................................................................................................................. 6 Caractere .......................................................................................................................................................... 6 Lógico................................................................................................................................................................ 7
Constantes ............................................................................................................................................................ 7 III - EXPRESSÕES .................................................................................................................................................... 7
Operadores Aritméticos......................................................................................................................................... 7 Operadores Relacionais........................................................................................................................................ 7 Operadores Lógicos .............................................................................................................................................. 8 EXERCÍCIOS ........................................................................................................................................................ 9
IV – COMANDOS BÁSICOS ................................................................................................................................... 10 Comando de Atribuição....................................................................................................................................... 10 Comando de Entrada .......................................................................................................................................... 10 Comando de Saída.............................................................................................................................................. 10 Primeiro Exemplo – Português Estruturado e Pascal ......................................................................................... 10 EXERCÍCIOS - Estrutura Seqüencial.................................................................................................................. 12
V – ESTRUTURAS DE SELEÇÃO.......................................................................................................................... 13 Conceitos............................................................................................................................................................. 13 Seleção Simples.................................................................................................................................................. 13
Seleção Composta .............................................................................................................................................. 13 Exemplo............................................................................................................................................................... 13 EXERCÍCIOS – Estrutura de Seleção................................................................................................................. 14 Alternativa de Múltiplas Escolhas........................................................................................................................ 15 EXERCÍCIOS – Alternativa de Múltiplas Escolhas ............................................................................................. 17
VI – ESTRUTURAS DE REPETIÇÃO ..................................................................................................................... 17 Comando Enquanto (While - Do) ........................................................................................................................ 17 Comando Repita (Repeat - Until) ........................................................................................................................ 18 EXERCÍCIOS – Comando Enquanto (WHILE) ................................................................................................... 18 Comando Para (For)............................................................................................................................................ 20 EXERCÍCIOS – Comando Para (For) ................................................................................................................. 21
ANEXO I – Questões de Raciocínio Lógico .............................................................................................................. 2 ANEXO II - Transferência de Comandos: Português Estruturado para Pascal ........................................................ 3
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 3
I - CONCEITOS INICIAIS Lógica de programação É a técnica de encadear pensamentos para atingir determinado objetivo. O aprendizado desta técnica é necessário, para quem quer trabalhar com desenvolvimento de sistemas e programas. Algoritmo É uma seqüência de passos finitos com o objetivo de solucionar um problema. O estudo da lógica é o estudo dos métodos e princípios usados para distinguir o raciocínio correto do incorreto. Naturalmente, essa definição não pretende afirmar que só é possível argumentar corretamente com uma pessoa que já tenha estudado lógica. Afirmá-lo seria tão errôneo quanto pretender que só é possível correr bem, se estudou física e fisiologia, necessárias para a descrição dessa atividade. Alguns excelentes atletas ignoram completamente os processos complexos que se desenrolam dentro deles próprios quando praticam o esporte. Assim também acontece no nosso dia-a-dia. Quantas vezes já vimos um algoritmo e não sabíamos que aquela seqüência de passos chamava-se algoritmo. Um exemplo bem freqüente é quando queremos falar em algum telefone público. Exemplo de algoritmo para falar em um telefone público 1 – Retirar o telefone do gancho; 2 – Esperar o sinal; 3 – Colocar o cartão; 4 – Discar o número; 5 – Falar no telefone; 6 – Colocar o telefone no gancho. O algoritmo é exatamente esse conjunto de passos que resolveu o problema de uma pessoa falar no telefone. É como se fôssemos ensinar uma máquina a fazer alguma tarefa específica. Outro exemplo clássico é um algoritmo para resolver o problema de fritar um ovo que poderia estar escrito em forma de uma receita. A receita é um algoritmo, pois é formada de ações que devem ser tomadas para fritar um ovo. Exemplo de algoritmo para fritar um ovo 1 – pegar frigideira, ovo, óleo e sal; 2 – colocar óleo na frigideira; 3 – acender o fogo; 4 – colocar a frigideira no fogo; 5 – esperar o óleo esquentar; 6 – colocar o ovo; 7 – colocar o sal; 8 – retirar quando estiver pronto. Cada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 4
Assim como fritar um ovo, nos algoritmos computacionais não podemos trocar ou omitir certas instruções, caso contrário não obteremos o resultado esperado. Por exemplo, se omitirmos a instrução acender o fogo, não teremos ao final do algoritmo um ovo frito. Instrução Indica a um computador uma ação elementar a ser executada. Até as coisas mais simples podem ser descritas por um algoritmo. Por exemplo: Algoritmo para o fim de semana 1 – vejo a previsão do tempo; 2 – se fizer sol vou à praia; senão vou estudar; 3 – almoçar; 4 – ver televisão; 5 – dormir.
EXERCÍCIOS 1 – Fazer um algoritmo para tomar banho: 2 – Crie um algoritmo para fazer uma prova: 3 – Faça um algoritmo para somar dois números: Programa de Computador Nada mais é do que um algoritmo escrito numa linguagem de computador (C, Pascal, Fortran, Delphi, Cobol, Java e outras). É a tradução para o inglês do algoritmo feito em português. O mais importante de um programa é a sua lógica, o raciocínio utilizado para resolver o problema, que é exatamente o algoritmo. A forma de escrever um algoritmo em pseudocódigo (algoritmo que não usa nenhuma linguagem de programação) vai variar de autor para autor, pois, um traduz ao pé da letra a linguagem C, outro, o Pascal, outro, mistura as duas linguagens e assim por diante. É importante lembrar que estas variações vão sempre ocorrer, podemos dizer que é uma variação de autores adotados. Fases A principal finalidade de um computador é realizar a tarefa de processamento de dados, isto é, receber dados através de dispositivos de entrada que podem ser, por exemplo, teclado, mouse, scanner, entre outros; realizar operações com estes dados e gerar uma resposta que será expressa em um dispositivo de saída que pode ser, por exemplo, uma impressora, um monitor de vídeo, entre outros. Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais: ENTRADA: São os dados de entrada do algoritmo. PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final.
ENTRADA DE
DADOS
PROCESSAMENTO
DE DADOS
SAÍDA DE DADOS
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 5
SAÍDA: São os dados já processados, os resultados, mostrados na tela do computador (monitor de vídeo) ou impressora. Diagrama de Blocos É uma forma padronizada para representar os passos lógicos de um determinado processamento. Com o diagrama, também conhecido como fluxograma, podemos definir uma seqüência de símbolos, com significado bem definido, portanto, sua principal função é a de facilitar a visualização dos passos de um processamento.
Simbologia do Diagrama de Bloco Existem diversos símbolos em um diagrama de bloco. Veja no quadro abaixo alguns dos símbolos que iremos utilizar:
Símbolo Função TERMINAL
Indica o início ou fim de um processamento Exemplo: Início do algoritmo
PROCESSAMENTO
Processamento em geral Exemplo: x<- 2+3
ENTRADA MANUAL DE DADO
Indica entrada de dados pelo usuário via teclado Exemplo: Digite a nota da prova 1
EXIBIR
Mostra informações ou resultados Exemplo: Mostre o resultado do cálculo
EXERCÍCIOS 1. Construir um diagrama de blocos que:
- leia quatro números - calcule a média - mostre o resultado.
2. Construa fluxograma que: - leia o salário de um empregado - calcule o novo salário sabendo que lê teve um aumento de 15% - mostre o resultado na tela
3. Agora faça um algoritmo para o exercício 2.
II - VARIÁVEIS É um local na memória principal, isto é, um endereço que armazena um conteúdo. O conteúdo de uma variável pode ser de vários tipos: inteiro, real, caractere (literal), String (cadeia), lógico, entre outros. Uma vez definidos o nome e o tipo de uma variável, não podemos alterá-los no decorrer de um algoritmo. Por outro lado, o conteúdo da variável pode ser modificado no decorrer do programa, de acordo com a necessidade. Em algoritmos, as variáveis são definidas no início por meio do comando definido:
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 6
Nome da variável: tipo da variável; Exemplos: A: inteiro; X: real; Nome: string (ou cadeia); Regras para formação do nome de uma variável: 1 – O primeiro caractere é uma letra; 2 – Se houver mais de um caractere, poderemos usar letras ou dígitos;
3 – Nomes de variáveis escritas com letras maiúsculas serão diferentes de letras minúsculas em muitas linguagens de programação. Lembre-se: peso é diferente de PESO;
4 – Nenhuma palavra reservada poderá ser nome de uma variável.
Nomes Válidos Nomes Não-Válidos Nome, profissao,n, n1,PESO, A 2X -> Começa por algarismo
peso do aluno -> espaço não é permitido
Tipos de Variáveis Numéricas
São aquelas que armazenam dados numéricos, podendo ser divididos em duas classes: Inteiro: são aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos ou negativos. Normalmente uma variável do tipo inteira poderá ocupar 1, 2 ou 4 bytes na MP. Exemplos:
10 número inteiro positivo -10 número inteiro negativo Real: são aqueles que podem possuir componentes decimais ou fracionários, podendo também ser positivos ou negativos. Normalmente uma variável do tipo real poderá ocupar 4 ou 8 bytes na MP. Exemplos: 25.03 número real positivo com duas casas decimais
235. número real positivo com zero casas decimais -10.5 número real negativo com uma casa decimal
Cadeia ou String ou Alfanuméricas São aquelas que possuem letras e/ou números. Pode em determinados momentos conter somente dados numéricos ou somente letras. Se usado somente para armazenamento de números, não poderá ser utilizado para operações matemáticas. O número de bytes possíveis para armazenamento de uma variável desse tipo dependerá da quantidade de caracteres. Exemplos: “Maria” String de comprimento 5 “123” String de comprimento 3 “A” String de comprimento 1
Caractere É aquele que armazena apenas uma letra ou dígito, é uma string de comprimento 1. Se usado para armazenar número não poderá ser utilizado para operações matemáticas.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 7
Normalmente uma variável do tipo caractere ocupará 1 byte na MP. Exemplos: “A” caractere que armazena uma letra “5” caractere que armazena um número
Lógico Também conhecido como booleano. É representado no algoritmo pelos dois únicos valores lógicos possíveis: verdadeiro ou falso. Porém é comum encontrar em outras referências outros pares de valores lógicos como: sim/não, 1/0, true/false, verdadeiro/falso. Constantes Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme seu tipo, a constante é classificada como sendo numérica, lógica ou literal. As declarações das constantes em um algoritmo são feitas antes das declarações das variáveis: Sintaxe: Nome da constante = valor da constante;
III - EXPRESSÕES O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis e constantes numéricas relaciona-se por meio de operadores compondo uma fórmula que, uma vez avaliada, resulta num valor. Operadores Aritméticos Os operadores matemáticos são:
Operador Função + Somar - Subtrair * Multiplicar / Dividir
Div Quociente inteiro Mod Resto da divisão
Os operadores Div e Mod só podem ser aplicados com operandos inteiros. O operador / sempre conduz a um resultado real. Com os operadores +, - e * , se pelo menos um dos operandos for real, então o resultado será real. Exemplos de expressões aritméticas: 3 * 3 = 9 9 / 2 = 4.5 9 DIV 2 = 4 9 MOD 2 = 1 2 / 9 = 0.22 2 + 4.6 = 6.6 Operadores Relacionais Uma expressão relacional é uma comparação realizada entre dois valores de mesmo tipo, tendo como resposta sempre um valor booleano (verdadeiro ou falso). Estes valores são representados na relação através de constantes, variáveis ou expressões aritméticas.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 8
Os operadores relacionais são:
Símbolo Descrição = Igual
< > Diferente
< = Menor ou igual
> = Maior ou igual
> Maior que
< Menor que Exemplo de relações: X = 1 y = 2 z = 5 X * X + Y > Z 1 * 1 + 2 > 5 1 + 2 > 5 3 > 5 Resultado desta expressão: FALSO Operadores Lógicos Uma expressão lógica serve para combinar resultados de expressões aritméticas e/ou relacionais, variáveis e/ou constantes, retornando verdadeiro ou falso. Exemplo de operadores lógicos, matematicamente conhecidos:
E And Ou Or Não Not
E / AND Uma expressão AND (E) é verdadeira se todas as condições forem verdadeiras. OR / OU Uma expressão OR (OU) é verdadeira se pelo menos uma condição for verdadeira. NOT / NÃO Uma expressão NOT (NÃO) inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa.
Tabela E (AND) Tabela OU (OR) Tabela NÃO (NOT) V e V = V V ou V = V Não V = F V e F = F V ou F = V Não F = V F e V = F F ou V = V F e F = F F ou F = F
As prioridades entre os operadores são: 1º - ( ) 2º - funções 3º - Não 4º - *, / , Div, Mod, E
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 9
5º - +, -, Ou 6º - =, < >, <, <=, >, >=. Observação: em caso de empate entre as prioridades, resolver da esquerda para a direita.
EXERCÍCIOS 1. Identifique o tipo dos dados:
(a) inteiro; (b) real; (c) lógico; (d) cadeia ou literal
( ) verdadeiro ( ) ‘c*d’ ( ) falso ( ) ’1 2 3 4’ ( ) ‘aula’ ( ) 897 ( ) ‘345’ ( ) -18.589 ( ) -0.342 ( ) 35.23 ( ) -23 ( ) ‘Maria’
2. Indique os identificadores como válidos ou inválidos: (a) identificador válido (b) identificador inválido
( ) ano ( ) ai! ( ) 3/1 ( ) media_salario ( ) A15B34 ( ) nome-aluno ( ) média ( ) ‘aula’ ( ) 5ª
3. Faça a declaração de 2 variáveis do tipo inteira, 2 do tipo real, 2 de um único caractere e 2 do tipo cadeia de caracteres.
4. Indique qual o resultado das expressões aritméticas abaixo:
Sendo: x = 6.0 y = 2 z = 4.0 a = 8 b = 7.5 c = 7.7 d = 12 p = 4 q = 3 r = 10 s = 2.5
a) x + y – z * a = f) ((z / a) + b * a) – d = b) d div y = g) 100 * (q div p) + r = c) d mod y = h) p * (r mod q) –q/2 d) y div d = i) raiz (r – (q * q ) ) = e) y mod d = j) (a + r) * r =
5. Dadas as informações abaixo, informe qual o valor das relações (verdadeiro ou falso):
a) a = 2.0, b = 9.0, nome = ‘ana’, profissao = ‘advogado’ a + 1 > = raiz (b) ( ) nome < > ‘ana’ ( ) profissao = ‘médico’ ( ) b) a = 6.0, b = 121.0, nome = ‘pedro’, profissao = ‘médico’ a + 1 > = raiz (b) ( ) nome < > ‘ana’ ( ) profissao = ‘médico’ ( ) c) x = 3, y = 4, z = 16, nome = ‘maria’, resultado = verdadeiro ( x + y > z ) and (nome = ‘maria’) ( )
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 10
(resultado) or ( y > = x ) ( ) (not resultado) and ( z div y + 1 = x ) ( ) (nome = ‘josé’) and ( x + y + z < ( y * y )) ( )
IV – COMANDOS BÁSICOS
Comando de Atribuição Este comando é utilizado para atribuir valores a variáveis e, em portugol (português estruturado), é representado por <- (seta da direita para esquerda). Exemplos de comandos de atribuição: Cor <- ‘verde’; Teste <- falso; Media <- (n1 + n2) / 2; X <- raiz (16);
Comando de Entrada O comando de entrada LEIA é utilizado para receber dados do teclado. É o comando que permite que o usuário digite dados, possibilitando um “diálogo com o computador”. O dado digitado é armazenado na variável indicada no comando. Lembre-se de que o nome de uma variável representa uma posição de memória. Sintaxe: Leia (nome de uma variável); Exemplo: Leia (n); Comando de Saída É o comando responsável por enviar um resultado, uma informação ao usuário. O valor de cada variável é buscado na memória e mostrado em um dispositivo de saída. Através desse comando o computador pode emitir os resultados e outras mensagens para o usuário através da tela do computador (monitor) ou uma impressora. Sintaxe: Escreva (expressão ou variável ou constantes); Exemplos: Escreva (‘ Aprender lógica com esta apostila ficou bem mais fácil!’); Escreva (‘ Digite o seu nome: ‘); Escreva ( A + B ); Escreva (‘A média das notas é = ‘, media); Primeiro Exemplo – Português Estruturado e Pascal Algoritmo que lê um nome digitado pelo usuário e mostra uma mensagem. Português Estruturado Programa exemplo1; Var nome: literal; Início Escreva (‘Digite um nome: ‘); Leia (nome); Escreva(nome, ‘ é um nome muito bonito! ‘);
Fim. Pascal Program exemplo1; Var nome: string; Begin Write (‘Digite um nome: ‘); Read (nome);
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 11
Write (nome, ‘ é um nome muito bonito! ‘);
End.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 12
EXERCÍCIOS - Estrutura Sequencial
1. Faça um algoritmo que leia dois números, calcule e imprima a soma desses dois números. 2. Faça um programa que receba dois números reais, calcule e mostre a subtração do primeiro número pelo segundo. 3. Faça um programa que receba dois números inteiros, calcule e imprima a divisão do primeiro número pelo segundo. 4. Faça um programa que leia um número e informe a metade e o dobro desse número. 5. Escreva um programa que receba um número via teclado e informe em seguida a metade e o quadrado desse número. 6. Escrever um programa que permita receber o nome e a idade de uma pessoa e em seguida, informar o nome digitado e a idade da pessoa daqui a 30 anos. 7. Faça um programa que leia três notas de um aluno, calcule e imprima a média aritmética entre essas notas. 8. Faça um programa que receba dois números inteiros, calcule e imprima: - soma do dois números; - subtração do primeiro pelo segundo; - subtração do segundo pelo primeiro; - produto dos dois números; - divisão do primeiro pelo segundo; - quociente inteiro da divisão do primeiro pelo segundo; - resto da divisão do primeiro pelo segundo. 9. Faça um programa que receba quatro números inteiros, calcule e mostre a soma desses números. 10. Faça um programa que receba três notas e seus respectivos pesos. Calcule e mostre a média ponderada dessas notas. 11. Faça um programa que receba o valor do salário de um funcionário. Calcule e mostre o novo salário, sabendo-se que este sofreu aumento de 25%. 12. Faça um programa que receba o valor do salário de um funcionário e o percentual de aumento, calcule e mostre o valor do aumento e o novo salário. 13. Faça um programa que receba o valor do salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que este funcionário tem gratificação de 5% sobre o salário-base e paga imposto de 7% sobre o salário-base. 14. Faça um programa que receba o valor do salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que este funcionário tem gratificação de R$ 1.000,00 e paga imposto de 10% sobre o salário-base.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 13
V – ESTRUTURAS DE SELEÇÃO Conceitos Os algoritmos até agora seguiram um mesmo padrão: entrava-se com dados, estes eram processados e alguma informação era mostrada na tela. Dessa forma, o computador mais parecia uma máquina de calcular. O aprendizado de novos conceitos, como a estrutura de seleção, nos dará uma visão maior da complexidade de tarefas que ele poderá executar. Um exemplo do nosso dia-a-dia: imagine-se diante de um caixa eletrônico e suponha que sua senha seja 1234: Na tela aparece a mensagem: - Digite sua senha : E o cursor ( ou | ) fica piscando: Você digita os algarismos da sua senha. Neste momento, a Unidade Lógica e Aritmética (um dos componentes da CPU) verifica se os números que você digitou são iguais a 1234. Caso tenha sido, a transação bancária continua; mas, se você digitou algo diferente, aparece na tela a mensagem: SENHA INVÁLIDA. Sintaxes: Seleção Simples Se condição então Início Comando (s); Fim;
Seleção Composta Se condição então Início Comando (s); Fim Senão Início Comando (s); Fim;
Podemos constatar que esta estrutura faz parte do nosso cotidiano: - Se eu não tiver prova, vou ao clube; senão vou estudar. - Se eu tiver aumento, troco de carro; senão espero o 13° salário. - Se minha média for maior ou igual a sete, passo direto; senão faço exame final. A única coisa diferente é a forma como iremos escrevê-la, vamos adaptar os algoritmos para uma linguagem específica de um modo formal, obedecendo as regras da linguagem. Exemplo Algoritmo que lê um número e mostra uma mensagem dizendo se o número digitado é ou não múltiplo de 5. Português Estruturado: Programa ExemploSe; Var num, resto: inteiro; Início Escreva (‘Digite um número: ‘); Leia (num); resto <- num mod 5; Se resto = 0 então Escreva (num, ‘ é múltiplo de 5’) Senão Escreva (num, ‘ não é múltiplo de 5’); Fim.
Pascal: Program ExemploSe; Var num, resto: integer; Begin Write (‘Digite um número: ‘); Read (num); resto := num mod 5; If resto = 0 then Write (num, ‘ é múltiplo de 5’) Else Write (num, ‘ não é múltiplo de 5’); End.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 14
Observações: - Antes de Else não se usa ponto e vírgula; - O Begin e o End são obrigatórios somente quando se tem mais de um comando dentro do If e do Else.
EXERCÍCIOS – Estrutura de Seleção 1. Faça um programa que leia um número e informe se o dobro do número é maior que 35. 2. Faça um programa que leia um número e informe se a metade do número é menor que 12. 3. Faça um programa que leia dois números e informe apenas se o primeiro é maior que o segundo. 4. Faça um programa que leia dois números e informa se o primeiro é igual ao segundo. 5. Faça um programa que leia dois números e informe se o primeiro é maior, menor ou igual ao segundo. 6. Faça um programa que leia três números e informe qual dos três é o maior. 7. Fazer um programa que receba um número e mostre se ele é positivo, negativo ou nulo (0) . 8. Elabore um algoritmo que leia um número e mostre o número com a mensagem ‘é par’ ou ‘é ímpar’. 9. Faça um programa que leia a altura e o sexo de uma pessoa, calcule e imprima seu peso ideal, utilizando as seguintes fórmulas: Para homens: (72.7 * h) – 58 Para mulheres: (62.1 * h) – 44.7 (h = altura) 10. Faça um programa que receba quatro notas de um aluno, calcule e imprima a média aritmética das notas e a mensagem de aprovado para média superior ou igual a 7.0 ou a mensagem de reprovado para média inferior a 7.0. 11. Faça um programa que calcule e imprima o salário reajustado de um funcionário de acordo com a seguinte regra: - salários até R$ 300,00, reajuste de 50% - salários maiores que R$ 300,00, reajuste de 30% 12. A prefeitura do Rio de Janeiro abriu uma linha de crédito para os funcionários municipais. O valor máximo da prestação não poderá ultrapassar 30% do salário bruto. Fazer um algoritmo que permita entrar com o salário bruto e o valor da prestação e informar se o empréstimo pode ou não ser concedido. 13. Ler um número qualquer e exibir na tela uma mensagem indicando se ele é positivo, negativo ou nulo (zero). Se ele for positivo, exibir também a raiz quadrada deste número. Se ele for negativo você deve escrever uma mensagem dizendo ‘Não é possível calcular a raiz deste número’.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 15
14. Ler um número inteiro e exibir na tela a mensagem ‘Par’ se ele for um número par, ou ‘Ímpar’ se ele for um número ímpar. 15. Faça um programa que receba três notas de um aluno, calcule e mostre a média aritmética e as mensagens de acordo com a tabela abaixo. Para os alunos de exame, calcule e mostre a nota que deverá ser tirada no exame para aprovação, considerando que a média no exame é de 6,0.
MÉDIA MENSAGEM [ 0,0 a ] 3,0 Reprovado [ 3,0 a ] 7,0 Exame [ 7,0 a 10,0 ] Aprovado
16. Faça um programa que receba três números e os mostre em ordem crescente. 17. Dados três valores X, Y e Z, verificar se eles podem ser os lados de um triângulo e, se forem, verificar se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não formarem um triângulo informar ao usuário tal situação. Considerar que: Condição para ser triângulo: O comprimento de cada lado de um triângulo é menor que a soma dos outros dois lados. Chama-se triângulo eqüilátero o triângulo que tem os três lados iguais; Chama-se triângulo isósceles o que tem o comprimento de dois lados iguais; Chama-se triângulo escaleno o triângulo que têm os três lados diferentes. 18. Faça um programa que receba o código de origem de um produto e informe a sua procedência. A procedência obedece a seguinte tabela: Código de origem Procedência 1 Sul 2 Norte 3 Leste 4 Oeste 5 ou 6 Nordeste 7, 8 ou 9 Sudeste 10 até 20 Centro-oeste 21 até 30 Noroeste
Alternativa de Múltiplas Escolhas É uma alternativa para quando o algoritmo tiver muitos SEs, deixando o programa com uma estrutura melhor. Sintaxe: Português Estruturado Caso <nome da variável> seja Alvo 1: comando 1;
Alvo 2: comando 2; Alvo n: comando n; Fim;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 16
Ou Caso <nome da variável> seja Alvo 1: comando 1; Alvo 2: comando 2;
Alvo 3: comando 4; Senão comando 5; Fim;
Pascal Case <nome da variável> of Alvo 1: comando 1; Alvo 2: comando 2; Alvo n: comando n; End;
Ou Case <nome da variável> of Alvo 1: comando 1; Alvo 2: comando 2; Alvo 3: comando 4; Else comando 5; End;
Observações: - No Case também pode fazer uso do Else; - Antes do Else se usa ; (ponto e vírgula); - O Case não tem Begin, mas, tem End; - A variável que fará a verificação deverá ser declarada do tipo Integer, Char ou Boolean. Exemplo: Este programa lê a idade de um nadador e informa a sua categoria seguindo as seguintes regras: Infantil A (5 - 7 anos), Infantil B (8 – 10 anos), Juvenil A (11 – 13 anos), Juvenil B (14 – 17 anos), Sênior (maiores de 18 anos). Português Estruturado Programa Exemplo; var idade: integer; Início Escreva('Idade do nadador: '); Leia (idade); Caso idade seja 5..7: Escreva ('Categoria Infantil A'); 8..10:Escreva ('Categoria Infantil B'); 11..13:Escreva('Categoria JuvenilA'); 14..17:Escreva('Categoria JuvenilB'); 18..99:Escreva('Categoria Sênior'); Senão Escreva('Idade inválida!'); Fim; //Fim do Caso Fim. Pascal
Program Exemplo; var idade: integer; Begin Write ('Digite a idade do nadador: '); Read(idade); Case idade of 5..7: Write ('Categoria Infantil A'); 8..10:Write ('Categoria Infantil B'); 11..13:Write('Categoria Juvenil A'); 14..17:Write ('Categoria Juvenil B'); 18..99:Write ('Categoria Sênior'); Else Write('Idade inválida!'); End; //End do Case End.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 17
EXERCÍCIOS – Alternativa de Múltiplas Escolhas 1. Faça um programa que receba o código de origem de um produto e informe a sua procedência. (Obs.: este é o exercício 14 da estrutura de seleção se, mas, agora ele será feito utilizando o escolha caso.) A procedência obedece a seguinte tabela: Código de origem Procedência 1 Sul 2 Norte 3 Leste 4 Oeste 5 ou 6 Nordeste 7, 8 ou 9 Sudeste 10 até 20 Centro-oeste 21 até 30 Noroeste 2. Faça um programa que leia um número digitado pelo usuário e o escreva por extenso se ele estiver entre 1 e 5 inclusive, caso contrário mostrar uma mensagem: ‘Opção de número inválida!’ 3. Escrever um algoritmo que leia um peso na Terra e o número de um planeta e imprima o valor do seu peso neste planeta. A relação de planetas é dada a seguir juntamente com o valor das gravidade relativas à Terra: N° gravidade relativa Planeta 1 0.37 Mercúrio 2 0.88 Vênus 3 0.38 Marte 4 2.64 Júpiter 5 1.15 Saturno 6 1.17 Urano Para calcular o peso no planeta escolhido use a seguinte fórmula: Peso no Planeta = Peso / 10 * gravidade.
VI – ESTRUTURAS DE REPETIÇÃO
Vamos supor que nossos algoritmos precisarão ser executados mais de uma vez e, para que não tenhamos que reescrever trechos idênticos que aumentariam consideravelmente o tamanho do programa, utilizaremos as estruturas de repetição.
Comando Enquanto (While - Do) Esta estrutura é recomenda quando o número de repetições for desconhecido. Para que funcione corretamente é necessário observar: - É necessário um teste (uma condição) para interromper a repetição, esta estrutura testa a condição e só executa o que está dentro dela se for verdadeira. - A variável que testa a condição deverá ter seu valor atribuído no início do programa através de um comando de leitura ou de atribuição, antes da estrutura do enquanto e dentro da estrutura, como último comando. - O Enquanto começa com Início (Begin) e termina com Fim (End;) - Pode-se usar outras estruturas dentro do Enquanto (While), como: If, Case, etc.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 18
Sintaxe: Português Estruturado: ENQUANTO condição FAÇA INÍCIO Comando 1; Comando 2; Comando n; FIM;
Pascal: WHILE condição DO BEGIN Comando 1; Comando 2; Comando n; END;
Exemplo: Faça um programa que leia vários números e imprima a metade de cada número, o programa termina quando o 0 (zero) for digitado: PORTUGUÊS ESTRUTURADO: PROGRAMA Enquanto1; VAR num: INTEIRO; metade:REAL; INÍCIO ESCREVA (‘Digite um número inteiro ‘); LEIA (num); ENQUANTO num <> 0 FAÇA INÍCIO metade <- num/2; ESCREVA (‘A metade de ‘, num, ‘ é ‘, metade); ESCREVA (‘Digite outro número ou zero para sair do programa: ‘); LEIA (num); FIM; FIM.
PASCAL: PROGRAM Enquanto1; VAR num: INTEGER; metade:REAL; BEGIN WRITE ('Digite um número inteiro '); READ(num); WHILE num <> 0 DO BEGIN metade := num/2; WRITELN ('A metade de ', num, ' é ', metade:0:1); WRITELN ('Digite outro número ou zero para sair do programa: '); READ(num); END; END.
Comando Repita (Repeat - Until) Estrutura recomendada quando o número de repetições for desconhecido, sendo necessária uma chave (um teste) para interromper a repetição. Sua diferença em relação ao enquanto é que ela testa a condição ao final, significando que ela executa o trecho pelo menos uma vez. Muitas pessoas não entendem por que existe esta estrutura se a estrutura Enquanto (While) pode fazer o que ela faz. Na verdade tem muito programador que não faz uso dela. Sintaxe: Português Estruturado: Repita comandos; Até condição;
Pascal Repeat comandos; Until condição;
EXERCÍCIOS – Comando Enquanto (WHILE) 1. Entrar com vários números e imprimir quantos números foram digitados. 2. O IBGE fez uma pesquisa, ele quer saber quantos dentistas foram entrevistados. Fazer um programa que pergunte aos entrevistados qual a sua profissão e ao final diga quantas pessoas foram entrevistadas e quantas são dentistas (considerar dentista, Dentista e DENTISTA).
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 19
3. Dado um país A, com 5.000.000 de habitantes e uma taxa de natalidade de 3% ao ano, e um país B com 7.000.000 de habitantes e uma taxa de natalidade de 2% ao ano, calcular e imprimir o tempo necessário para que a população do país A ultrapasse a população do país B. 4. Uma pousada estipulou o preço da diária em R$ 40,00 e mais uma taxa de serviços diários de: - R$ 15,00, se o número de dias for menor que 10; - R$ 8,00, se o número de dias for maior ou igual a 10. Criar um algoritmo que imprima o nome, o valor da conta de cada cliente e ao final o total arrecadado pela pousada. 5. Criar um algoritmo que entre com vários números inteiros e positivos e informe a quantidade de números múltiplos de 3 (três). O programa será encerrado quando o usuário digitar 0 (zero) ou menos. 6. Criar um algoritmo que entre com vários números inteiros e positivos e informe a média dos números múltiplos de 3 (três). O programa será encerrado quando o usuário digitar 0 (zero) ou menos. 7. Uma fábrica produz e vende vários produtos e para cada um deles tem-se o nome, quantidade produzida e quantidade vendida. Criar um algoritmo que mostre: - Para cada produto, nome, quantidade no estoque e uma mensagem se o produto tiver menos de 50 itens no estoque. 8. Faça um programa que leia a idade e a altura de várias pessoas. Calcule e informe a média das alturas das pessoas com mais de 50 anos. Para encerrar o programa digite zero para idade. 9. Faça um programa que leia vários números, quando o zero for digitado o programa será finalizado. Mostre no final desse programa a soma dos números positivos, a soma dos negativos e a soma total dos positivos e negativos juntos. 10. O GDF realizou uma pesquisa entre vários habitantes do DF, coletando dados sobre o rendimento familiar e o número de filhos de cada família. O GDF quer saber: - A média dos rendimentos da população; - Média do número de filhos. 11. Uma empresa decidiu fazer um levantamento em relação aos candidatos que se apresentarem para preenchimento de vagas no seu quadro de funcionários. Suponha que você seja o programador dessa empresa, criar um programa que leia para cada candidato a idade, o sexo e se tem experiência no serviço (S ou N). Para encerrar o programa, digite zero para idade. Calcule e escreva: - O número de candidatos do sexo feminino; - O número de candidatos do sexo masculino; - A idade média dos homens que já tem experiência no serviço. 12. Uma empresa classifica seus funcionários em três níveis de acordo com um índice de produtividade. São eles (1) Excelente, (2) Bom e (3) Regular. Cada nível acrescenta um abono ao salário base do funcionário, de acordo com a seguinte tabela: - Excelente 80% do salário base; - Bom 50% do salário base;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 20
- Regular 30% do salário base. O programa deve ler a matrícula do funcionário, seu salário base e seu nível de abono. Calcular e imprimir o salário a ser pago (salário a ser pago é = salário base + abono). O programa será encerrado quando for digitado 0 para matrícula. 13. Faça um programa que receba vários números positivos ou negativos, terminada por zero. O programa deve fornecer como saída, a soma dos números positivos e a soma dos números negativos. 14. Faça um programa que leia os dados de vários alunos, contendo o número da matrícula, as três notas e a freqüência. Calcule e mostre: para cada aluno o número de matricula, a nota final e a mensagem (aprovado ou reprovado); a maior e a menor nota da turma; o total de alunos reprovados; 15. Faça um programa que receba a idade, a altura e o peso de várias pessoas. Calcule e mostre: • A quantidade de pessoas com idade superior a 50 anos; • A média das alturas das pessoas com idade entre 10 e 20 anos; • A percentagem de pessoas com peso inferior a 40 quilos entre todas as pessoas analisadas. 16. Uma empresa deseja aumentar seus preços em 20%. Faça um programa que leia o código, o preço de custo de vários produtos e que calcule o novo preço de cada um deles. Calcule também a média de preços com e sem aumento. Mostre o código e o novo preço de cada produto e, no final, as médias. A entrada de dados deve terminar quando for recebido um código de produto menor ou igual a zero. 17. Faça um programa que apresente um menu de opções para cálculo das seguintes operações entre dois números: adição, subtração, multiplicação e divisão. O programa deve permitir a escolha da operação desejada, a entrada dos números, a exibição do resultado e a volta ao menu de opções. O programa só termina quando for escolhida a opção de saída.
Comando Para (For)
Esta estrutura de repetição é utilizada quando se sabe o número de vezes em que um trecho do programa deve ser repetido. Sintaxe: Português Estruturado PARA a<-valor inicial ATÉ valor final FAÇA INÍCIO Comando 1; Comando 2; FIM;
PASCAL FOR a := valor inicial ATÉ valor final DO INÍCIO Comando 1; Comando 2; END;
Observações:
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 21
1. O identificador (a variável “a” no exemplo anterior) tem que ser declarada do tipo inteiro (Integer). 2. A variável que controla a repetição poderá ser impressa se precisarmos dela para numerar uma lista, posicionar, etc. 3. A variável que controla a repetição jamais aparecerá num comando de leitura dentro do bloco de repetição. Exemplo: Algoritmo para escrever os números de 1 até 10: Português Estruturado Programa para1; Var I : Inteiro; Início Para i <- 1 até 10 faça Início Escreva (‘ - ‘, i); fim; Fim.
PASCAL Program para1; Var I : Integer; Begin For i := 1 to 10 do Begin Write (‘ - ‘, i); End; End.
EXERCÍCIOS – Comando Para (For)
1. Imprimir todos os números de 100 até 1. 2. Criar um algoritmo que imprima todos os números pares no intervalo de 1 a 100. 3. Criar um algoritmo que entre com cinco números e imprima o quadrado de cada número. 4. Entrar com 10 números e imprimir a metade de cada número. 5. Criar um algoritmo que imprima todos os números de 1 até 100 e a soma deles. 6. Escreva um programa que receba a idade de 10 pessoas, calcule e imprima a quantidade de pessoas maiores de idade (idade >= 18 anos). 7. Entrar com nome, idade e sexo de 10 pessoas. Imprimir o nome se a pessoa for do sexo masculino e tiver mais de 21 anos. 8. Em uma eleição presidencial, existem três candidatos. Os votos são informados através de código. Os códigos utilizados são: 1, 2, 3 votos para os respectivos candidatos; 0 votos em branco outros códigos votos nulos Escreva um programa que calcule e imprima: - total de votos para cada candidato; - total de votos nulos; - total de votos em branco. 9. Criar um algoritmo que entre com quatro notas de cada aluno de uma turma de 20 alunos e mostre: - A média de cada aluno; - A média da turma; - Quantos alunos foram aprovados (média 7.0) 10. Imprimir as tabuadas de multiplicar de 1 até 10. 11. Criar um algoritmo que deixe escolher qual a tabuada de multiplicar que se deseja imprimir
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
12. Um empresa está fazendo a estatística de seus funcionários, ela precisa saber quantas funcionárias têm com mais de 40 anos para encaminhá-las para exames de mamografia. Fazer um programa que leia o nome, a idade e o sexo de seus 10 funcionários e imprima o nome se for do sexo feminino e tiver mais de 40 anos. 13. Faça um programa que receba a idade de 10 pessoas. O programa deve calcular e mostrar a quantidade de pessoas com idade maior que 18 anos. 14. Faça um programa que mostre a tabuada de multiplicação (de 1 a 10) para os 6 primeiros números primos. Ao mudar de uma base para outra o programa deve mostrar uma mensagem ao usuário e aguardar que alguma tecla seja pressionada para então montar a tabuada para a próxima base. 15. Faça um programa que receba a idade de 15 pessoas, calcule e mostre a quantidade de pessoas em cada faixa etária.
Faixa etária Idade 1 Até 15 anos 2 De 16 a 30 anos 3 De 31 a 45 anos 4 De 46 a 60 anos 5 Acima de 61 anos
16. Faça um programa que leia uma série de números positivos inteiros. Calcule e mostre o maior número digitado. A entrada de dados deve terminar quando um número negativo foi digitado. 17. Faça um programa que receba um número, calcule e mostre o fatorial desse número. Sabe-se que: n! = 1*2*3*...*(n-1)*n; 0! = 1, por definição.
ANEXO I – Questões de Raciocínio Lógico 1. Preencha o quadro a seguir de tal maneira que a soma dos números que ficam sobre uma linha, ou sobre uma coluna, ou sobre uma diagonal, dê sempre 15 e todos os números tê de ser diferentes:
2. Entram num restaurante para jantar três mulheres, cada uma com duas filhas. Só existiam 7 lugares. Nenhuma ficou de pé. Como isso é possível?
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
3. Tenho 3 camisas: A, B e C. Uma é VERDE, uma é BRANCA e outra é AZUL, não necessariamente nesta ordem. Sabe-se somanete que a a camisa A é VERDE, B não É VERDE e C Não é AZUL. Quais as cores de A, B, e C, nessa ordem? 4. Dentro de uma caixa fechada, há uma bola branca e uma bola preta. Numa segunda caixa fechada, há duas bolas brancas e, numa terceira caixa fechada, há duas bolas pretas. Cada caixa possui uma etiqueta indicando o conteúdo das caixas, mas alguém misturou as três etiquetas de modo que todas as etiquetas estão erradas. Você seria capaz de escolher apenas uma das seis bolas de modo tal que, olhando a sua cor, você possa dizer o conteúdo de cada uma das caixas? ANEXO II - Transferência de Comandos: Português Estruturado para Pascal
Veja como seria a transferência de alguns comandos de Português Estruturado para Pascal: OBS: Os dados da tabela estão em ordem alfabética. Português Estruturado Pascal
(atribuição) := Algoritmo ou Programa Program Cadeia (de caracteres) ou Literal String Caracter Char E And Enquanto n <> 0 faça While n <> 0 do Escreva (‘.....’) Write (‘.....’); Fim End Início Begin Inteiro Integer Leia (nome da variável); Read (nome da variável); Nome:arranjo [1..10] de cadeia (ou string); Nome: array [1..10] of string; Ou Or Para i 1 até 10 faça For i:= 1 to 10 do Se x > 10 então If x > 10 then Senão Else Var ou Variáveis Var
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
U.E PROF EDGAR TITO - NOITE PROF. RANILDO LOPES DISCIPLINA: Lógica de Programação
APOSTILA 03
LÓGICA DE PROGRAMAÇÃO
Visite nosso sítio
http://ueedgartito.wordpress.com
“Nele estão os resumos e trabalho
de sala de aula”
Obrigado pela preferência de nossa ESCOLA!
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Variáveis x Dados Variável é o local de memória onde serão armazenados os dados de forma temporária. Em
nossos algoritmos não nos preocuparemos com o endereço real dessas variáveis, pois a maioria
das linguagens de programação tornam estes endereços transparentes ao programador.
Para exemplificarmos a diferença entre dados (constantes) e variáveis, bem como entender
melhor o endereçamento de variáveis, podemos citar o exemplo de uma estante de prateleiras,
onde estão guardados livros ou quaisquer outros objetos (veja figura).
Os livros e objetos podem ser chamados de dados, conteúdo das variáveis. Para nos
referenciarmos à variável é necessário darmos um nome à mesma, pois não trabalharemos com
endereço de memória propriamente dito, e sim com identificadores.
É aconselhável que o nome da variável expresse o que vai ser armazenado dentro dela, p.e.
nomeAluno, quantidade_alunos.
As variáveis podem ainda ser simples ou compostas. As variáveis simples são aquelas que
recebem um único dado por vez, enquanto que as compostas podem armazenar vários dados de
uma só vez, porém, esta última não é objeto de nossa apostila.
Quando declaramos uma variável, temos que associar a ela algumas características:
• NOME ou IDENTIFICADOR
• TIPO do dado
Como dissemos anteriormente, o endereço físico da variável não precisa ser declarado, a menos
que estejamos programando em alguma linguagem de baixo nível, como o ASSEMBLER. As
linguagens de alto nível procuram espaços livres na memória do computador para associarem
bytes à variável declarada.
Uso das Variáveis no Algoritmo
O nome a ser associado à variável (ex.: X, Y, KTI34), não é importante para o computador, pois
este servirá apenas como uma mera referência. Entretanto para outros programadores que
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
possam vir a analisar os seus programas, ou até para você mesmo após algum tempo, é
necessário que esses nomes sejam expressivos, simples e objetivos.
Vejamos agora alguns exemplos de identificadores:
SALARIO Um bom nome para variável que irá armazenar um valor salarial;
CONT Um bom nome para variável que irá registrar uma contagem;
TOTAL Um bom nome para variáveis acumuladoras de somas;
DATANASC Um bom nome para variáveis usadas para armazenar uma data de nascimento.
Devemos evitar nomes do tipo: X, K, C1, ABC, etc... a menos que eles expressem algo real.
Nomes de variável, na maioria das linguagens, NÃO devem:
Iniciar por números: 1C2, 9ANOS, 100, 4CANTOS, etc...
Ser descontínuos: DATA NASC, FONE COMERC, etc...
Outros requisitos podem aparecer dependendo de cada linguagem. O COBOL por exemplo
permite nomes longos para variáveis, já o CLIPPER, com apenas 10 bytes. O COBOL permite
separadores como hífens, barras, entre outros. Linguagens derivadas do DBASE permitem
apenas o UnderLine (Nome_Aluno) como caracter separador. A maioria das linguagens apresenta
certas restrições à livre escolha dos nomes das variáveis. A mais evidente é a impossibilidade da
utilização de palavras reservadas da própria linguagem. Por exemplo, a palavra MOVE
representa um comando para o COBOL. Não é possível utilizarmos este nome como identificador
de qualquer variável nesta linguagem. Já para o CLIPPER, o MOVE pode ser um identificador.
Outras vezes, a linguagem traz consigo algumas variáveis reservadas. Tratam-se de algumas
variáveis que são automaticamente declaradas pela linguagem. Normalmente elas registram a
data e a hora do sistema operacional, ou algumas informações internas como códigos de
periféricos, endereços de memória para buffers, etc.
Escolhendo o TIPO do Identificador da Variável
O segundo argumento presente na declaração de uma variável é o seu tipo. O tipo de uma
variável define que tipos de dados poderão ser armazenados nela. A declaração (definição das
variáveis) será feita no início do algoritmo.
Tipo inteiro Sinaliza que o conteúdo será de números e que não terá a parte decimal em sua composição.
Ex.: 1200; -12; 0; etc
Tipo real Sinaliza que o conteúdo será de números e que é permitida a digitação da parte decimal.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Ex.: 1200,00; -12,88; 0; etc
Tipo Literal Sinaliza que o conteúdo aqui armazenado será toda a rede de caracteres alfanuméricos e os ditos caracteres especiais. Os conteúdos destas variáveis SEMPRE serão demonstrados entre aspas (simples ou dupla, dependendo da linguagem);
“São variáveis que aceitam conteúdos de qualquer natureza, portanto: números, letras e símbolos
em geral, não podendo estes números ser utilizados para operações aritméticas”.
Ex.: "MARIA JOSE"; "Recife"; "123"; "NOMES"
Observações: a) Não confundir os valores numéricos com os literais ou entre os literais. Vejamos os casos a seguir. Caso 1.
42 (inteiro) é diferente de “42” (literal) – Os tipos são diferentes, logo, seus valores em memórias são diferentes; Caso 2. “01”(literal) é diferente de “1” (literal) – Os tipos são iguais, mas a representação em memória é diferente.
Tipo Lógico Este tipo de variável não permite o registro de dados numéricos ou literais. Uma variável lógica só
armazena um entre dois valores: VERDADEIRO ou FALSO.
Em nossa disciplina, não nos ateremos ao como exatamente, o computador registra esta
informação na memória. Pode ser por bytes zerados e não zerados, pelas letras V ou F, ou por
um outro mecanismo qualquer. O que nos interessa de fato é que este tipo de variável não
registra outro tipo de informação exceto Verdadeiro ou Falso.
Para efeito de representação, diremos que o conteúdo de uma variável lógica será representado
pelas letras V e F, representando respectivamente, Verdadeiro e Falso:
Tamanho das Variáveis
Quando declaramos uma variável não precisamos delimitar o byte inicial e final que esta irá
ocupar na memória do computador, entretanto é imprescindível entendermos que elas ocupam um
espaço na memória e que os tipos de dados trazem definições sobre as variáveis, inclusive o que
pode armazenar e os seus limites.
Outros tipos de variáveis também são tratados por novas linguagens, tais como: HORA,
MEMORANDO, OBJETO. Entretanto aqui só trataremos os tipos mencionados anteriormente, ou
seja: Literal, Inteiro, Real e Lógico..
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Declaração de Variáveis
TODAS as variáveis que o programa vier a utilizar têm que existir antes de serem referenciadas.
Por esse motivo, necessitamos declarar estas. Como fazer isso? Através do comando DECLARE.
Comando DECLARE DECLARE <Nome da variável>[,<Nome da variável>]: <tipo>; <Nome da variável> Nome ou identificador da variável <Tipo> Tipo da variável definida: Literal, Inteiro, Real e Lógico. Exemplos: DECLARE NOME : Literal; DECLARE IDADE : Inteiro; DECLARE ALTURA: Real; DECLARE DEPENDENTE: LOGICO;
Podemos declarar diversas variáveis utilizando apenas um comando DECLARE.
Exemplos: DECLARE NOME : Literal; IDADE : Inteiro; ALTURA: Real; DEPENDENTE, LOGICO;
Ou ainda, em uma mesma linha, desde que sejam do mesmo tipo de dados.
Exemplo: DECLARE IDADE, CONTADOR:inteiro; (obs.: tipo e tamanho iguais} Observação: As vezes substituímos o comando Declare por Var ou Defina, dependendo da linguagem que estamos
querendo nos aproximar. Outros comandos poderão sofrer variações. Cabendo ao professor da disciplina fazer os ajustes baseados no direcionamento que queira dar à disciplina.
Operadores
Podemos atribuir a uma variável o resultado de uma expressão numérica. Atribui é uma ação que
as linguagens possuem e que representa o ato de preencher o espaço da variável com um
conteúdo, conforme o tipo de dado (veremos mais detalhadamente em tópico específico).
Entendemos por expressão numérica um conjunto de operações aritméticas combinadas entre
operandos e operadores. Mas além das expressões numéricas, existem expressões que exigem
tratamentos particulares, como veremos a seguir.
Operadores Numéricos São elementos (símbolos) utilizados para representar uma operação de cunho aritmético.
+ indica SOMA - indica SUBTRAÇÃO * indica MULTIPLICAÇÃO / indica DIVISÃO
Relembrando um pouco a matemática elementar, a ordem de execução de uma expressão
aritmética segundo as prioridades de operações é:
Parêntesis: ( ) Multiplicação e Divisão: * , / Soma e Subtração: + , -
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Obs.: Caso existam numa mesma sentença operadores de mesma ordem de prioridade, a execução será feita da esquerda para direita.
Operadores Relacionais São elementos (símbolos) utilizados para realizarmos operações de
comparações, recebendo como resposta o valor verdadeiro ou falso.
=
igual a
Exemplos: Dados A = 3, B = 2, C = ‘Jose’ , D = ‘Jose’, NOME = ‘JOSE’ A > B Retorna V C = D Retorna V NOME = "JOSE" Retorna V (Está sendo comparado o conteúdo da variável NOME com a string “JOSE”. NOME = D Retorna F (estão sendo comparados os conteúdos das variáveis NOME e D).
Os operadores relacionais incidem sobre dados e variáveis numéricas e caracteres. Assim sendo,
podemos comparar não apenas números, mas também palavras. Neste sentido, a comparação
respeitará a ordem alfabética das iniciais de cada uma.
Exemplos: "MARIA" > "ANA" Retorna V "MARIA" < "MARIO" Retorna V observação: as comparações só podem ser feitas com elementos dos mesmos tipos.
Operadores Lógicos Estes elementos são necessários quando você deseja realizar comparações entre resultados lógicos obtendo como resposta outro valor lógico. Estranho, não? Mas é exatamente isso que ocorre. Por exemplo: se você ler um anuncio sobre emprego que tenham as seguintes solicitações: Precisa-se de pessoas do sexo feminino e com idade máxima 40 anos. O que você consegue extrair deste anuncio? A resposta seria: duas exigências, a saber, o SEXO da pessoa deve ser igual a feminino (“F”) e a IDADE deve ser menor ou igual a 40 anos. Logo, estamos diante de duas sentenças, que, dependendo do que seja colocado como dados na comparação, poderemos ter a possibilidade do resultado ser falso ou verdadeiro. Se o SEXO for igual a “M” (masculino), a primeira sentença será falsa. Para você poder ocupar a vaga oferecida, necessário que sejas do sexo feminino e sua idade esteja na faixa etária solicitada. Para o programa, o raciocínio é exatamente igual. Para que gerenciarmos esta etapa da lógica, utilizaremos os operadores a seguir:
Operador Detalhamento Prioridade de execução
OU (Opcionalidade)
A sentença que contiver este operador será verdadeira se pelo menos uma das expressões nela contida retornar valor verdadeiro.
3º
E (Simultaneidade)
A sentença que contiver este operador será verdadeira se as expressões nela contida resultarem valores verdadeiros.
2º
NÃO (Negação)
Quando queremos inverter (negar) o resultado de uma condição ou expressão lógica.
1º
Observação: caso sejam colocados os parênteses na sentença, a prioridade de execução será alterada iniciando-se pelos elementos contidos dentro destes. Caso exista mais de uma sentença nesta condição, observar-se-á, além do exposto acima, a execução dos comandos da esquerda para a direita da expressão.
Vejamos a “TABELA VERDADE” a seguir para entendermos melhor. E OU
> maior que < menor que = igual a
>= maior ou igual a <= menor ou igual a <> diferente
A := 2 * 6 / 3 12
4
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
V V V V V V
F V F F V V
V F F V F V
F F F F F F
Exemplos: X = 90 E Z = 100 A >= 67 OU A <= 200 NOME <> "ANA" E NAO (NOME = "MARIA") (NOME <> "ANA") E (NAO (NOME="MARIA") OU (NOME="PEDRO"))
Entendendo Representações de Sintaxes Agora que você já aprendeu o primeiro comando de nossa linguagem algorítmica, é importante
aprender a forma sintética de se representar um comando. Note que, ao enunciarmos o comando
DECLARE, nós utilizamos algumas nomenclaturas e simbologias que você, certamente,
encontrará em qualquer livro sobre quaisquer linguagens.
Assim, vamos elucidar algumas delas:
Repetindo o comando, DECLARE <Nome da variável>[,<Nome da variável>]: <tipo>;
< > Delimita o espaço reservado para inserirmos um parâmetro do comando. A maioria dos comandos das linguagens possui parâmetros.
[ ] Delimita o espaço reservado para inserirmos um parâmetro opcional do comando, ou seja, tudo o que vier entre colchetes nem sempre precisará ser especificado no comando.
Ex: DECLARE SOMA : Inteiro; DECLARE SOMA, QUANTIDADE_ALUNOS:inteiro;
Observe ainda que os colchetes [ ] e os delimitadores maior/menor < > podem acumular-se
entre si, ou seja, dentro de um grupo de parâmetros opcionais [ ], poderemos ter outros [ [..] ],
dependendo apenas da característica do comando.
Atribuição de Valores a Variáveis
Até agora, vimos conceitos e exemplos de variáveis. Agora vamos aprender a utilizá-las em
algoritmos.
Representaremos o comando de atribuição pela combinação de dois símbolos do teclado, que
são dois pontos e o sinal de igual, sem espaços entre eles(:=). Este símbolo representará a
atribuição de um dado a uma variável.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
<variável> := <dado a ser armazenado> Exemplos: NOME := "JOÃO"; Dados Literal têm que vir entre aspas IDADE := 25; Dados Inteiros não precisam de aspas ALTURA := 1,67; Dados tipo Real, possuem uma vírgula como delimitador entre a parte decimal e a parte inteira
(linguagens comerciais adotam o ponto). DEPENDE := F; Dados LOGICO devem vir entre pontos
Também podemos atribuir, a uma variável, o valor de outra:
Exemplo: ALTURA := IDADE; a variável ALTURA recebe o valor de IDADE
Também podemos atribuir o resultado de uma expressão numérica, ou de outro tipo, a uma
variável:
SOMA := QUOEF * (VALOR + 10) / DIVISOR;
Estruturação do Algoritmo Existem alguns formatos para organizar um algoritmo, porém adotaremos o mais global,
facilitando assim o aprendizado. Vejamos a seguir: Algoritmo <nome do programa>; Declare {Local para declaração das variáveis} Início {Local para inicialização das variáveis / mensagens montando a tela} {Local para receber dados, processar dados e dar saída nos dados / mensagens} Fim
Entrada e Saída de Dados
Até aqui nós vimos como atribuir um valor a uma variável dentro de um programa. Mas este valor
foi atribuído pelo próprio programa, não é?
Mas como fazer com que um programa, em um dado momento, receba um valor digitado pelo
usuário?
Como receber este dado através do teclado?
Como exibir o resultado de uma operação qualquer no monitor?
Existem nas linguagens de programação, comandos de entrada e saída de dados. No caso do
algoritmo, estes comandos são os seguintes: Leia (entrada), Escreva (saída - tela).
Comando LEIA Leia <variável>; Ou Leia (<variável>);
<variável> - Variável que receberá os dados digitados pelo usuário. Algoritmo Declare wnome:literal; Widade:Inteiro; Inicio
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Leia wnome; Leia widade; <seqüência de comandos>; Fim
A execução do comando LEIA provoca uma pausa na execução do programa. O programa fica
em estado de espera, aguardando a digitação de algo que deva ser atribuído às variáveis
especificadas na sintaxe do comando. É bom deixar claro que o LEIA, permite um preenchimento por vez. Se você desejar digitar várias informações referente a mesma variável, terá que utilizar uma estrutura de repetição (veremos mais adiante) e fazer com que o fluxo do programa passe pelo mesmo local onde o LEIA está posicionado
No exemplo acima, veja que o computador aguarda que o usuário digite dois valores distintos
através do teclado. Estes dois valores irão ocupar, respectivamente, as variáveis NOME e IDADE.
Comando ESCREVA (lista informações no vídeo) Escreva <string>[, <variável>][, <operação>]; Ou Escreva (<string>[, <variável>][, <operação>] ); Importante! Pelo menos um dos parâmetros deve ser informado quando da utilização deste comando. <string> - Texto que está sendo encaminhado para tela. <variável> - Qualquer variável utilizada no programa. <operação> - Algum cálculo executado durante a exibição. Neste caso o processador realiza a operação de cálculo e
depois libera o resultado para a exibição na tela. Por dentro dos termos: string = conjunto de caracteres dentro de uma mesma variável. Exemplo: Algoritmo exemplo; Declare wnome:Literal; INICIO ESCREVA “ NOME ..:”; LEIA wnome; ESCREVA "Seu nome é ", NOME; FIM;
Quando estudamos lógica algorítmica não nos preocupamos em que coordenada ou posição a
informação será exibida, mas sim com o fato de que deve ser dado o comando de saída dos
dados.
No exemplo acima, teremos o conteúdo da variável NOME exibido no vídeo logo após a
mensagem “Seu nome é ”, como mostra a ilustração abaixo.
NOME ..: Karla Silva
Seu nome é Karla Silva
Manipulaçao de valores 1) Dados 2 números digitados via teclado, faça um algoritmo capaz de exibir a soma deles no vídeo.
Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Leia y; SOMA := X + Y; Escreva SOMA; Fim
Comentário Na solução acima, declaramos 3 variáveis de memória. X e Y foram criadas para armazenar os dois números que seriam digitados pelo usuário, e SOMA serviu para armazenar o resultado final da operação com essas duas variáveis.
Mas quase sempre existe mais de uma maneira de solucionarmos um problema, não é? Com
algoritmos não é diferente. Tente repensar o algoritmo acima utilizando apenas 2 variáveis, em
vez de 3 ! Como você pode observar, existem no mínimo duas soluções para este problema:
Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X; Leia y; X := X + Y; Escreva X; Fim
Ou ainda:
Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X; Leia y; Y := X + Y; Escreva Y; Fim
Qual a solução mais eficiente das duas?
Somente o fato de economizar uma variável torna qualquer uma dessas soluções bem mais
eficiente que a primeira. O mesmo caso, sem precisar utilizar as variáveis para guardar o
resultado, agiliza ainda mais o processamento. Mas este caso deve ser utilizado só quando você
não precisar do valor resultante da operação.
Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X; Leia y; Escreva (X+Y); Fim
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Conceitos Fundamentais Contador x Acumulador
Estes nomes são dados a expressões que realizam adição de dados, porém, no primeiro caso,
CONTADOR, é a expressão de adição que contabiliza valores fixos e predeterminados. No
segundo caso, ACUMULADOR, é a expressão de adição que contabiliza valores variáveis.
Exemplo de Contador: QtdFem := QtdFem + 1 (note que o valor adicionado a quantidade de femininos será sempre 1) Exemplo de Acumulador: SomaIdade := SomaIdade + Idade (note que o valor adicionado a soma das idades será variável) Observação: na maioria das vezes, estes elementos são iniciados com o 0 (zero). Percentuais
Encontramos algumas dificuldades quando tratamos estes temas. Aqui daremos algumas regras
básica para que você se sinta a vontade no momento do cálculo. Encontrando um valor percentual: Veja esta continha simples
50 bolas 100 % (50 = Todo) 25 bolas x % (25 = Parte do Todo) Chegaremos a conclusão:
X % = 25 x 100 / 50 Estas informações nos levam a fórmula:
<perc> := < Parte do Todo> * 100 / < Todo> Encontrando um valor final após aplicação do percentual: <Novo valor> := <valor anterior> * 1,<valor do percentual>; Ex.: adicionar 5 % sobre o salário e informar o valor do novo salário.
Nsal := Salario * 1,05; Encontrando um valor adicionado percentualmente a uma variável: <Novo valor> := <valor anterior> * 0,<valor do percentual>; Ex.: adicionar 5 % sobre o salário e informar o valor acrescido ao salário.
Reajuste := Salario * 0,05; Observação: quando você não sabe o valor a ser aplicado pois vem dentro de uma variável, não podemos fazer a aplicação literal do que explicamos neste tópico, mas precisamos
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
traduzir em termos de programa este processo. Vamos fazer os mesmos exemplos anteriores, mas imaginando que o percentual virá em variáveis.
a) Nsal := Salario * (1 + perc / 100); b) Nsal := Salario * (perc / 100);
Maior Valor
Existirão momentos em que você sentirá necessidade de identificar o maior elemento dentro de
um conjunto de dados processados. Só existe uma forma de sabermos qual o maior valor:
comparando as grandezas do conjunto. Para descobrirmos qual será o maior elemento,
inicializaremos uma variável, que armazenará o maior valor do conjunto, com um valor bem pequeno para a situação, e, cada dado existente no conjunto iremos comparar com esta dita
variável. Caso o valor encontrado seja superior, este será colocado como conteúdo da variável
maior, já que este novo dado representa a maior grandeza neste momento do processamento. Encontrando o maior valor dentro de um conjunto: Obs.: para entender melhor esse exemplo, é bom estar familiarizado com a estrutura de repetição
comentada mais adiante. Algoritmo maior; Declare MAIOR_ID:Inteiro; Idade:Inteiro; Cont:Inteiro; Inicio MAIOR_ID := 0; Para cont := 1 até 10 Faça Inicio Leia Idade; Se Idade > MAIOR_ID então Inicio MAIOR_ID := Idade; Fim Fim Escreva “A maior idade é “, MAIOR_ID; Fim
Menor Valor
De igual forma iremos trabalhar para encontrar o elemento que possui o menor valor. Para tanto,
iremos inicializar uma variável, que armazenará o menor valor do conjunto, com um valor bem alto adequado para a situação, e, cada dado existente no conjunto iremos comparar com esta dita
variável. Caso o valor encontrado seja inferior, este será colocado como conteúdo da variável
menor, já que este novo dado representa a menor grandeza neste momento do processamento. Encontrando o menor valor dentro de um conjunto:
Algoritmo Menor; Declare menor_ID:Inteiro; Idade:Inteiro; Cont:Inteiro; Inicio
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
menor_ID := 999; Para cont := 1 até 10 Faça Inicio Leia Idade; Se Idade < Menor_ID então Inicio menor_ID := Idade; Fim Fim Escreva “A menor idade é “, Menor_ID; Fim
Estruturas Condicionais Sabemos que as linhas de um programa estruturado são executadas de cima para baixo de forma
seqüencial (na orientação ao objeto, apenas os métodos seguem este conceito). Mas
freqüentemente precisamos mudar este curso natural de acordo com decisões a serem tomadas.
Por exemplo, imagine se dentro de um conjunto de alunos você desejasse verificar a quantidade
de homens. Só existiria uma forma para sabermos o resultado: fazendo uma pergunta sobre se os
dados processados continham na variável SEXO o conteúdo igual a “M”.
O comando que realiza esta “pergunta” é o SE, que possui três situações bem definidas dentro da
programação: Estrutura Condicional Simples, Composta ou Encadeadas(Ninhos de SE’s).
Estrutura Condicional SE (Símples) Se <condição> então inicio <sequência de comandos>; Fim
<condição> - Expressão lógica qualquer. <sequência de comandos> São comandos que serão executados caso o resultado da expressão lógica seja verdadeira.
Esses comandos devem ser escritos entre as delimitações da gerência do comando, ou seja, entre as palavras Início e fim.
Em tempo de execução, se a expressão lógica retornar verdadeiro então a seqüência de
comandos será executada.
Para fixar esta idéia, tente depurar o seguinte algoritmo: Algoritmo exemploSE1; DECLARE Idade, Numérico, 3 Nome, Caracter , 35 Sexo, Caracter , 1 Inicio Leia Nome; Leia Sexo; Leia Idade; Se Sexo = “M” então Inicio Escreva "A idade de ", Nome, “ é “, Idade; Fim Escreva "Fim da transacao"; Fim
Estrutura Condicional SE (Composta) Se <condição> então Inicio <sequência de comandos 1>;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Fim senão inicio <sequência de comandos 2>; Fim Onde:
<condição> - Expressão lógica qualquer. <sequência de comandos 1> São comandos quaisquer que serão executados caso o resultado da expressão lógica seja
verdadeira (V). <sequência de comandos 2> São comandos quaisquer que serão executados caso o resultado da expressão lógica seja
falsa (F) Senão - Variação do comando, para atender o tratamento de informação que não foi contemplada na <condição>, por ser
falso o resultado. Só deve ser utilizado para otimizar ou se precisar tratar a negativa da <condição>.
Para fixar esta idéia, tente depurar o seguinte algoritmo: Algoritmo exemploSE2; DECLARE Idade: Inteiro; Nome : Literal; Sexo : Literal; Inicio Leia Nome; Leia Sexo; Leia Idade; Se Sexo = “M” então Inicio ESCREVA "A idade de ", Nome, “ é “, Idade, “Sexo Masculino”; Fim senão Inicio SE Sexo = “F” ENTAO Inicio ESCREVA "A idade de ", Nome, “ é “, Idade, “Sexo Feminino”; Fim Fim Escreva "Fim da transacao"; Fim
Estrutura Condicional SE (Encadeada)
Aqui vale comentar que esta estrutura não é algo preestabelecido, mas sim, uma estrutura
formada de várias condições, separando informações e dando os tratamentos de acordo com a necessidade da questão. Abaixo segue um modelo hipotético de uma estrutura SE
(Encadeada).
Se <condição 1> então Inicio <sequência de comandos 1>; Se <condição 2> então Inicio <sequência de comandos 2> ; Fim Fim Senão Inicio Se <condição 3> então Inicio <sequência de comandos 3> ; Fim Senão Inicio <sequência de comandos 4> ; Fim <sequência de comandos 5>;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Fim Fim
Para exemplificarmos melhor, vejamos o exemplo:
1) Receber dois números (Num1 e Num2).
2) Realize a soma dos dois valores.
2.1) Caso a soma seja maior que zero, mostrar na tela o valor da soma e a mensagem: “valor
positivo”;
2.2) Caso contrário, verifique:
2.2.1) se o valor calculado é igual a zero. Se for, informar "valor igual a zero", senão;
2.2.2) informar, "valor negativo". (De qualquer maneira, em 2.2, exibir os dois números envolvidos
na soma). Algoritmo PositivoNegativo; Declare Num1:Inteiro; Num2:Inteiro; SOMA:Inteiro; Inicio Leia Num1, Num2; SOMA:= Num1 + Num2; Se SOMA > 0 ENTAO Inicio Escreva SOMA, “Valor Positivo”; Fim Senão Inicio Escreva num1, num2; SE SOMA = 0 então Inicio Escreva "Valor Igual a Zero"; Fim Senão Inicio Escreva "Valor Negativo"; Fim Fim Fim
Sobre esta solução, é importante salientar o seguinte:
• Note que a estética, apesar de não influenciar no resultado da execução do programa, é de extrema importância para o bom entendimento do mesmo. Perceba que todos os comandos subordinados ao primeiro SE ficam descolados na mesma margem. Apenas a cláusula SENAO fica na mesma margem do SE. O mesmo ocorre com o segundo SE e com todos os que vierem. A isto damos o nome de EDENTAÇÃO.
• Veja que o comando Escreva num1, num2 é executado independente da condição do segundo SE. É por isto que eles foram escritos após o SENÃO do primeiro SE.
Exercícios de Aprendizagem
1) Dados 2 números digitados via teclado, faça um algoritmo capaz de exibir no vídeo o maior deles. Algoritmo maior; Declare X:Inteiro; Y:Inteiro; Inicio Leia X; Leia Y; Se X > Y Então
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Inicio Escreva X; Fim Senão Inicio Escreva Y; Fim Fim
2) Dados 3 números distintos, digitados via teclado, faça um algoritmo capaz de exibir no vídeo o maior deles.
Algoritmo maior; Declare X:Inteiro; Y:Inteiro; Z:Inteiro; Inicio Leia X; Leia Y; Leia Z; Se (X > Y) E (X > Z) Então Inicio Escreva X; Fim Senão Inicio Se (Y > Z) E (Y > X) Então Inicio Escreva Y; Fim Senão Inicio Escreva Z; Fim Fim Fim
Comentário: Note que, para descobrirmos qual o maior entre três números, precisamos codificar 2 comandos SE encadeados. Se fossem 4 variáveis, seriam 3 SE´s.
3) Dados 2 números distintos digitados via teclado, faça um algoritmo capaz de exibi-los em ordem crescente. Algoritmo Ordenacao; Declare A:Inteiro; B:Inteiro; Inicio Leia A; Leia B; SE A > B Então Inicio Escreva B, A; Fim Senão Inicio Escreva A, B; Fim Fim
Como você solucionaria este problema se tivéssemos de utilizar apenas um comando ESCREVA
?
A primeira imagem que nos vem à mente é que seria impossível, tendo em vista que uma
informação ao ser colocada em uma variável simples irá “ocupar” o lugar da informação já
existente na outra variável. Mas em informática podemos utilizar todas as técnicas disponíveis
para solucionarmos um problema, evitando soluções extensas ou complicadas.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
O recurso que vamos dispor nesse momento é a utilização de uma variável auxiliar. Variável
auxiliar é aquela que nós utilizamos como apoio. Veja que para realizar a troca de dados exposta
a seguir, só com esse recurso.
Algoritmo troca; Declare A:Inteiro; B:Inteiro; X:Inteiro; Inicio Leia A; Leia B; Se A > B Então Inicio X := A; A := B; B := X; Fim Escreva A , B; Fim
Comentário: Para economizarmos comandos ESCREVA, observe que invertemos os valores de A e B toda vez que a variável A fosse maior que B. Assim, independente dos valores de A e B, sempre exibiremos A e B nesta ordem. Para propiciar esta inversão utilizamos uma variável auxiliar X.
Se você não entendeu muito bem o porque da variável X ter sido utilizada no algoritmo acima,
preste bastante atenção agora:
Deseja-se trocar os valores de duas variáveis: A e B, por exemplo.
A B
10 15
Se fizermos simplesmente A := B, apagaremos o valor original de A colocando o conteúdo de B
em seu lugar. Assim, as variáveis ficariam com o valor 15. Para viabilizar o processo da troca,
temos que recorrer a uma variável auxiliar que conterá provisoriamente o valor de uma das
variáveis a fim de devolvê-lo para a outra.
X
10 15
10 1º passo
2º passo
3º passo X:=A
A:=B
B:=X
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Estruturas de Repetição Algumas vezes, sentimos necessidade de escrevermos repetidamente o mesmo comando. Em
alguns casos, a quantidade de vezes que temos de escrever é indeterminada ou depende de uma
condição.
Existem algumas formas de definir as estruturas de repetições. Algumas lembram até esta ou
aquela linguagem. Em nosso curso iremos no ater a duas estruturas, as quais podemos
representar tranqüilamente em qualquer ambiente de programação.
As estruturas são: Enquanto e Para. Cada uma delas possui uma característica que lhe é peculiar.
É normal ouvir a pergunta: “quando iremos utilizar esta ou aquela estrutura?”. A resposta é
simples, pois depende da habilidade de cada um. Existem momentos que podemos resolver a
mesma questão com todas as duas formas, mas existem momentos que não é possível. Por isso
o segredo encontra-se no exercitar.
Bem, vamos desmistificar estas estruturas.
Comando ENQUANTO
O comando ENQUANTO prende um trecho do programa a um laço (looping), ou seja, podemos
determinar que um certo bloco de comandos seja executado repetidamente enquanto uma
condição for verdadeira.
. Enquanto <condição> Faça { se<condição> for verdadeira} Inicio { serão executados os comando deste bloco} < comandos >; Fim
Esta estrutura possui duas formas de aplicação dentro de uma lógica: a) Testando sempre uma condição de saída no próprio comando, ou; b) Deixando este controle de saída da estrutura por conta de uma condição executada internamente.
1o. Caso Só entra no laço de repetição, se e somente se, a condição for verdadeira. Para sair da repetição, a condição tem que ser satisfeita. Enquanto <condição> Faça início < comandos > ; Fim
2o. Caso Entra no laço independente da condição, mas para sair, a condição 2 tem que ser verdadeira. Caso a condição não seja satisfeita, dizemos que o programa “entrou em loop”. Enquanto <condição> Faça início Se < condição 2 > Então Início sair
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Fim < comandos > ; Fim;
Comando PARA
O comando PARA executa um bloco de comandos, gerenciando esta execução em cima de uma
contagem. Enquanto ela não for satisfeita, ou seja, o valor final não for ultrapassado, os
comandos do bloco serão repetidos a cada nova verificação da condição e obtenção de resultado
falso;
Para <var> := <valor_inicial> até <Valor_final> incr[+/- <valor>] Faça Inicio < comandos > ; Fim
Se você utilizar este comando, irá poupar a inicialização da variável, pois esta assumirá como
valor inicial o declarado como <valor_inicial>; não precisará contar a quantidade de vezes que o laço foi executado, pois esta estrutura tem como uma de suas características, o adicionar um
determinado valor a variável <var> baseado no valor utilizado como incremento (+) ou decremento
(-) utilizado no parâmetro incr[...] estabelecendo uma contagem até que o valor declarado como
<valor_final> seja alcançado e realizando a última execução dos comandos existentes entre o
Inicio e o Fim. Se o parâmetro Incr [ +/- valor] for omitido, o programa assumirá por Default
sempre o incremento de + 1.
Vamos utilizar um exemplo para esclarecer cada uma dessas instruções dentro de suas
respectivas estruturas de repetições. Digamos que temos de fazer o computador escrever o
somatório de 5 idades informadas na tela. Usaremos os comandos aprendidos até agora.
♦ Com a estrutura ENQUANTO Algoritmo Declare widade:Inteiro; Wcont:Inteiro; Wsomaid:Inteiro; Inicio Wcont := 0; Wsomaid := 0; Leia widade; Enquanto wcont < 5 Faça Inicio Wcont := wcont + 1; Wsomaid := wsomaid + widade; Leia widade; Fim Escreva “O total das idades é “, wsomaid;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Fim
♦ Com a estrutura PARA Algoritmo Declare widade:Inteiro; Wcont:Inteiro; Wsomaid:Inteiro; Inicio Wsomaid := 0; Para wcont := 1 até 5 Faça Inicio Leia widade; Wsomaid := wsomaid + widade; Fim Escreva “O total das idades é “, wsomaid; Fim
Exercícios de Aprendizagem 1) Elabore um algoritmo capaz de exibir todos os números inteiros, desde o 1 até o 10.
Algoritmo exemplo1; Declare NUMERO:Inteiro; Inicio NUMERO := 1; Enquanto NUMERO <= 10 Faça Inicio Escreva NUMERO; NUMERO := NUMERO + 1; Fim Fim
Comentário: Note que, utilizamos uma variável numérica chamada NUMERO que recebeu, inicialmente, o valor 1, e daí em diante foi ciclicamente incrementada de 1 (NUMERO:=NUMERO+1) até que a condição imposta pelo ENQUANTO tornasse falsa.
2) Elabore um algoritmo capaz de receber um número e, em seguida, listar todos os números de 1 até ele. Algoritmo exemplo2; Declare NUMERO:Inteiro; LIMITE:Inteiro; Inicio Leia LIMITE; NUMERO:=1 ENQUANTO NUMERO <= LIMITE FAÇA Inicio Escreva NUMERO; NUMERO := NUMERO + 1; Fim Fim
Comentário: Este programa é similar ao anterior. A única sofisticação implementada foi a flexibilização do limite. Isto tornou o algoritmo mais genérico, servindo para listar a seqüência de qualquer número, e não apenas a do 10. Para alcançar esta sofisticação, foi necessário o uso da variável LIMITE que de fato limitou o laço do Enquanto ao seu conteúdo, conteúdo este que fora recebido logo no início da execução do programa, com o comando Leia LIMITE.
3) Sofisticando ainda mais o programa da 3ª questão, vamos fazer com que, além de listar todos os números de 1 até um determinado número digitado via teclado, ele mostre a soma de todos esses números no final da listagem.
Algoritmo exemplo2; Declare NUMERO :Inteiro; LIMITE :Inteiro; SOMA :Inteiro; Inicio Leia LIMITE; NUMERO := 1; SOMA := 0; Enquanto NUMERO <= LIMITE Faça Inicio Escreva NUMERO;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
SOMA := SOMA + NUMERO; NUMERO := NUMERO + 1; Fim Escreva SOMA; Fim
Comentário: Perceba que, para acumular os valores parciais assumidos pela variável NUMERO, precisamos lançar mão de uma outra variável, a qual chamamos de SOMA. Assim, a cada ciclo do Enquanto acrescentamos ao valor de SOMA o novo valor de NUMERO (SOMA :=SOMA+NUMERO).
Observe também que ao declaramos SOMA, na prática das linguagens, temos que tomar o
cuidado dela ter capacidade de absorver o resultado da expressão. É fácil entender por que!
Como SOMA será um “Acumulador” dos valores de NUMERO, ela sempre terá valores maiores
que NUMERO, podendo seu montante, exceder a capacidade definida em NUMERO.
Técnicas de Algoritmização Como dissemos anteriormente, não há qualquer receita de bolo para resolvermos um determinado
problema através da algoritmização. Cada caso é um caso bem particular. Entretanto, alguns
procedimentos sistemáticos podem auxiliar a elucidação de alguns problemas.
Dicas sobre Resolução de Algoritmos
Nunca dê um algoritmo por encerrado antes de testar todas as possibilidades condicionais. Só o
teste garante a eficácia do programa. Teste sempre as situações extremas. Em algoritmos utilize
diversas condições; teste ao menos uma situação que se enquadre em cada condição prevista
pelo algoritmo.
Não tente decorar algoritmos. Cada caso é um caso, por mais que se assemelhem.
Há sempre uma forma melhor de fazer a mesma coisa. Após o ZERO ERRO, examine se o seu
algoritmo é eficiente, isto é, se ele não usa variáveis demais, se ele é facilmente compreendido
por uma terceira pessoa, se os nomes de variáveis são auto-expressivos, se o usuário não terá
dificuldade em utilizá-lo, e se o computador não passará muito tempo para processá-lo
(performance).
Não tente arquitetar, ainda que mentalmente, a solução de um problema sem antes entender
perfeitamente o que pede no enunciado.
Não inicie a algoritmização sem ter claramente a solução arquitetada na sua cabeça.
Não deixe a curiosidade afetar a sua criatividade. Durante o desenvolvimento do seu algoritmo,
não pesas orientação sobre o como fazer, sem antes ter chegado a algum resultado, ainda que
errado.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Nunca desista de uma solução. Concluí-a. Chegue até o fim. Teste-a, e somente quando os testes
sinalizarem a sua ineficácia, tente modificá-la ou refazê-la.
Técnica para extrair os dados de um enunciado
Quando nos deparamos com um enunciado pequeno, nos sentimos a vontade para resolve-lo pois
os dados existentes neste são poucos. Porém, quando nos deparamos com um enunciado mais
complexo, existe a tendência natural de pensarmos que é algo muito difícil de resolver. Mas, por
incrível que pareça, o maior problema encontra-se em nosso lidar com o desafio e o encarar
“friamente”. Justamente para melhor lhe capacitar a interpretar um texto é que estamos te dando
esta dica.
Todos os programas possuem 3 fases bem definidas e nestas, os seus dados necessários.
Quando você tiver domínio sobre estas três fases, o algoritmo fluirá naturalmente.
Procure identificar a 1ª fase que é a da identificação dos dados de entrada; a 2ª fase e a que
verifica os dados relativos ao processamento (condições de encerramento, cálculos, mensagens,
etc; a 3ª fase é aquela aonde você descobre quais os dados de saída, ou seja, após o
processamento, aonde irão ser colocado estes dados?
Vamos exemplificar.
Elaborar um algoritmo que receba a matrícula, o nome e o salário de 50 funcionários, imprimindo ao final, o somatório dos salários e a média salarial. Vamos por em prática nosso aprendizado.
1ª fase (Dados de Entrada) Será lido na tela a MATRICULA, NOME E SALÁRIO;
Leia Matricula;
Leia Nome;
Leia Salário;
2ª fase (Processamentos) Serão processados dados de 50 funcionários. (isto implica dizer que
precisaremos de uma variável para contabilizar e gerenciar este processo); O
melhor comando para gerenciar um valor predefinido é o PARA.
Cada elemento que for processado, será acumulado o valor do salário (somatório
dos salários).
AcumSal := AcumSal + Salário;
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Observe que para cálculo da média salarial é necessário sabermos o somatório
dos salários e dividir o mesmo pela quantidade de pessoas que os possuem.
Como sabemos que existirão 50 pessoas, para encontrar a média é super
simples.
Calcular a média dos salários.
Media := AcumSal / 50; 3ª fase (Dados de Saída)
Dar saída no valor da média calculada.
Escreva “A média salarial é “, Media;
Montando o Algoritmo
Algoritmo exemplo; Declare AcumSal:Real; Cont :Inteiro; Salário: Real; Media :Real; Nome :Literal; Inicio AcumSal := 0 Para cont := 1 até 50 faça Inicio Leia Matricula; Leia Nome; Leia Salário; AcumSal := AcumSal + Salário; Fim Media := AcumSal / 50; Escreva “A média Salarial é “, Media; Fim
Facílimo, não!
Com estas competências adquiridas nesse módulo, você deve exercitar e chegar num estágio de
habilidade que lhe permitirá obter sucesso nas demais competências que serão ministradas a
você em sala de aula.
Lembre-se: Os exercícios que estão na apostila dedicada só para este fim, devem ser praticados e
esgotados, pois isto o fará crescer em situações as mais adversas dentro do mundo da
programação.
Sucesso a todos!
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Desafios Resolvidos
Como fazer para descobrir a quantidade de elementos iguais ao maior do conjunto? Simples. Primeiro, você deverá encontrar o maior; Em segundo lugar, verificar quais os elementos são iguais a este maior
encontrado. Aqui damos uma dica. Ao encontrar um elemento cujo valor seja superior
àquele que representa o maior, temos duas tarefas a fazer. Uma é atribuir o valor do elemento para ser o maior e em seguida inicializar a quantidade com o numeral 1 (um). Mas porque 1 (um)? Pelo fato de que acabamos de encontrar um número maior e com certeza, nesse momento ele é único. Como fazer para contabilizar todos os iguais? A própria pergunta já é a resposta: cada vez que você encontrar algum valor igual ao maior, contabilizaremos mais um.
Vamos ao Exemplo? “Elaborar um algoritmo que receba idade de 50 pessoas e informe ao final,
a maior delas e quantas pessoas a possuem.” Algoritmo resolvidos1; Declare Ma_idade:Inteiro; Qt_maid :Inteiro; Cont :Inteiro; Widade :Inteiro; Inicio Ma_idade := 0; Qt_maid := 0; Para cont := 1 até 50 faça Inicio Leia widade; Se widade > Ma_idade então Inicio Ma_idade := widade; Qt_maid := 1; Fim Senão Inicio Se widade = Ma_idade então Inicio Qt_maid := Qt_maid + 1; Fim Fim Fim Escreva “A maior idade é ..........................: “, Ma_idade; Escreva “Quantidade de pessoas com a maior idade...: “, Qt_maid; Fim
Como fazer para descobrir a quantidade de elementos iguais aos dois maiores
elementos do conjunto? Agora ficou mais fácil. Precisamos atentar para um pequeno detalhe:
quando encontrarmos um elemento que é superior ao primeiro, este último passa a ser o segundo maior. Para não perdermos o conteúdo original do maior, passaremos seus conteúdos para as respectivas variáveis e depois procederemos naturalmente colocando o elemento maior no seu referido lugar. Vejamos parte do código a seguir.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Ma_idade2 := Ma_idade1; Qt_maid2 := Qt_maid1; Ma_idade1 := widade; Qt_maid1 := 1;
Percebeu como é simples? Isso fazemos em todos os momentos em que queremos verificar o maior e o segundo maior. No demais é tomar cuidado com o segundo maior, pois apesar do valor as vezes, ser inferior ao primeiro, nada garante que ele o seja em relação ao segundo. Desta forma, precisamos fazer a comparação para termos certeza.
Vamos ao Exemplo? “Elaborar um algoritmo que receba idade de 50 pessoas e informe ao final,
as duas maiores idades e quantas pessoas as possuem.”
Algoritmo Declare Ma_idade1:Inteiro; Ma_idade2:Inteiro; Qt_maid1 :Inteiro; Qt_maid2 :Inteiro; Cont :Inteiro; Widade :Inteiro; Inicio Ma_idade1 := 0; Ma_idade2 := 0; Qt_maid1 := 0; Qt_maid2 := 0; Para cont := 1 até 50 faça Inicio Leia widade; Se widade > Ma_idade1 então Inicio Ma_idade2 := Ma_idade1; Qt_maid2 := Qt_maid1; Ma_idade := widade; Qt_maid := 1; Fim Senão Inicio Se widade = Ma_idade1 então Inicio Qt_maid1 := Qt_maid1 + 1; Fim Senão Inicio Se widade > Ma_idade2 então Inicio Ma_idade2 := widade; Qt_maid2 := 1; Fim Senão Inicio Se widade = Ma_idade2 então Inicio Qt_maid2 := Qt_maid2 + 1; Fim Fim Fim Fim Fim Escreva “A maior idade é ..........................: “, Ma_idade1; Escreva “Quant. de pessoas com a maior idade.......: “, Qt_maid1; Escreva “A segunda maior idade é ..................: “, Ma_idade2; Escreva “Quant. de pessoas com Seg. maior idade....: “, Qt_maid2; Fim
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
U.E PROF EDGAR TITO - NOITE PROF. RANILDO LOPES DISCIPLINA: Lógica de Programação
APOSTILA 05
LÓGICA DE PROGRAMAÇÃO
Visite nosso sítio
http://ueedgartito.wordpress.com
“Nele estão os resumos e trabalho
de sala de aula”
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
Obrigado pela preferência de nossa ESCOLA!
INTRODUÇÃO A automatização de tarefas é um aspecto marcante da sociedade moderna. O aperfeiçoamento tecnológico alcançado,
com respeito a isto, tem como elementos fundamentais a 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.
Em ciência da computação há 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 desse curso é 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 Se buscarmos na literatura, veremos que iremos encontrar um grande quantidade de conceitos relacionados à definição
de ALGORITMO. A seguir são listadas várias dessas definições.
• "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."
• O algoritmo pode ter vários níveis de abstrações de acordo com a necessidade de representar ou encapsular detalhes inerentes às linguagens de programação. Ex: Certamente um algoritmo feito com o objetivo de servir como modelo para uma linguagem de 3ª geração é diferente daquele para uma linguagem de IV geração. Mas isso não impede que a ferramenta em si possa ser usada em ambos o caso.
• Como qualquer modelo, um algoritmo é uma abstração da realidade. A abstração é o processo de identificar as propriedades relevantes do fenômeno que esta sendo modelado. Usando o modelo abstrato, podemos nos centrar unicamente nas propriedades relevantes para nós, dependendo da finalidade da abstração, e ignorar as irrelevantes.
• É a forma pela qual descrevemos soluções de problemas do nosso mundo, afim de, serem implementadas utilizando os recursos do mundo computacional. Como este possuí severas limitações em relação ao nosso mundo, exige que, sejam impostas algumas regras básicas na forma de solucionar os problemas, para que, possamos utilizar os recursos de HARDWARE e SOFTWARE disponíveis. Pois, os algoritmos, apesar de servirem para representar a solução de qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras básicas de programação para que sejam compatíveis com as LINGUAGENS DE PROGRAMAÇÃO.
Segundo Wirth, “programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados”
De forma bem simples, um algoritmo pode ser definido como “um conjunto de passos lógicos, bem definidos, que descreve a solução de um problema”.
Ao pensarmos na solução de um problema, encontramos ações imperativas que são expressas por comandos. Os algoritmos não são aplicados apenas ao mundo da Informática; pelo contrário, usamos – até sem perceber – algoritmos em todos os momentos de nossa vida. Uma receita de cozinha é claramente um algoritmo.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
EXEMPLO 1 : Faça um algoritmo para “Ir de casa para o trabalho de ônibus” Solução 1 Algoritmo Trajeto_Casa início
1) Andar até o ponto de ônibus 2) Aguardar o ônibus 3) Ao avistar o ônibus correto, fazer sinal 4) Entrar no ônibus pela porta traseira 5) Pagar passagem 6) Escolher um assento e sentar 7) Quando chegar próximo do local a saltar, dar o sinal para descida 8) No ponto, descer do ônibus, pela porta dianteira 9) Andar até o trabalho
fim Observa‐se que esse algoritmo foi resolvido em 9 passos. No entanto, é fato que se n pessoas buscarem soluções
para o mesmo problema, provavelmente, teremos n respostas diferentes. Isto decorre normalmente, da abstração do problema, da visão do problema sob ângulos diferentes, com maior ou menor riqueza de detalhes.
Por outro lado, devemos percebe‐se que o algoritmo descrito revela uma situação perfeita, sem condicionais, sem
exceções. Assim como na nossa rotina, é improvável termos situações perfeitas, essas exceções também ocorrem nos programas de computador.
Vamos refazer este algoritmo de forma a introduzir algumas condições. Solução 2 Algoritmo Trajeto_Casa início
1) Andar até o ponto de ônibus 2) Aguardar o ônibus 3) Quando avistar o ônibus correto, fazer sinal
se o ônibus não parar, então Em pensamento, xingar o motorista Reclamar para si que vai chegar atrasado se estiver muito atrasado então Pegar uma Van Senao Voltar para o Passo 2 fimse
senao se Pessoa >= 65 anos então
Entrar pela porta dianteira senao Entrar pela porta traseira Pagar passagem se houver troco então
Aguardar troco fim‐se fim‐se se houver lugar disponível então Sentar
senão Escolher o melhor lugar em pé e ali permanecer
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
fim‐se fim‐se
4) Quando chegar próximo do local a saltar, dar o sinal para descida 5) No ponto, descer do ônibus, pela porta dianteira 6) Andar até o trabalho
fim
Com certeza, a brincadeira que fiz da condição “Se o ônibus não parar” deve ter levado vocês a pensarem em inúmeras novas condições, como por exemplo: qual seria a sua reação, se num dia de chuva, o ônibus passasse por sobre uma poça e lhe sujasse toda a roupa ?
Veja quão complexo pode se tornar um “simples” algoritmo. Devemos lembrar que detalhes são essenciais na confecção de um algoritmo, todavia, eles devem estar de acordo com o contexto. Além disso, é importante que venhamos a relatar apenas os detalhes relevantes.
Por exemplo, a solução 2 está apropriada para ensinarmos uma pessoa que não está acostumada a andar de ônibus. Todavia, este algoritmo causaria problemas se estivéssemos programando um robô. Considerando esta situação, deveríamos ser mais precisos no passo “Quando chegar próximo do local a saltar, dar o sinal de descida”. Nesse caso, deveríamos dizer “A x metros do local a saltar, dar o sinal de descida” ou “Na altura x da Rua y ...”.
Assim, lembrem‐se de usar o BOM SENSO! Podemos pensar também num algoritmo como um “mecanismo” de transformação de entradas em
saídas. Assim, um algoritmo ao ser “executado”, receberá algumas entradas, que serão processadas e nos devolverá algumas saídas.
FLUXO DE CONTROLE EM ALGORITMOS
Um algoritmo é um texto estático, onde temos vários passos que são lidos e interpretados de cima para baixo. Para que venhamos a obter o(s) resultado(s) deste algoritmo, necessitamos “executá‐lo”, o que resulta em um processo dinâmico.
No fluxo de controle identificamos em cada passo da execução qual é o próximo comando a ser executado. A compreensão da lógica de programação de um algoritmo está diretamente ligada a
compreensão de seu fluxo de controle. A partir de uma compreensão correta, podemos traçar as diversas execuções possíveis de um algoritmo. Se testarmos todas essas possibilidades, e obtivermos resultados corretos, podemos ter certeza de estar entregando um produto final confiável.
Os iniciantes no mundo da programação encontram alguma dificuldade em diminuir a distância conceitual que separa a representação estática de um algoritmo do(s) processo(s) dinâmico(s) de sua execução.
É importante frisar que quando nos propomos a entender um algoritmo, lidamos fisicamente com um texto, mas mentalmente temos
processos.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
CRIANDO ALGORITMOS Toda linguagem é composta de sintaxe e semântica, onde a sintaxe corresponde à forma e a semântica
corresponde ao conteúdo. É importante que se aprenda a sintaxe dos comandos, mas a principal preocupação deve ser de “como usar esses
comandos”.
Regras para criação de bons algoritmos 1. Use comentários com freqüência. Isto torna o algoritmo mais legível e facilita o entendimento da lógica
empregada. Seus algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo) de tal forma que possam ser corrigidos e receber manutenção. Obs: Não se esqueça de atualizar os comentários, em caso de manutenção. Pior do que um programa sem comentários, é um programa com comentários errados.
2. Use comentários, também, no cabeçalho do algoritmo, incluindo, principalmente:
- descrição do que faz o algoritmo - autor - data de criação
3. Escolha nomes de variáveis significativos, todavia evite nomes muito longos.
Ex: Prefira SalBruto ou SalarioBruto ao invés de SB ou VAR1 Prefira TotAlunosAprovDireta ao invés de
TotalAlunosAprovacaoDireta 4. Destaque as palavras‐chave das estruturas de controle e comandos com sublinhado.
Ex: se media >= 7 então ... senao ... fim‐se
5. Utilize espaços e linhas em branco para melhorar a legibilidade. 6. Coloque apenas um comando por linha. Vários comandos em uma linha causam ilegibilidade e dificulta a
depuração. 7. Utilize parênteses para aumentar a legibilidade e prevenir‐se de erros. 8. Use identação nos comandos de acordo com o nível que estejam, ou seja, alinhe comandos de mesmo nível e
desloque comandos de nível inferior. Ex.:
início comando 1; se condicao1 então comando2; comando3; senao comando4; comando5; fimse comando6; fim
Método para desenvolvimento de algoritmos 1. Faça uma leitura de todo o problema até o final, a fim de formar a primeira impressão. A seguir, releia o
problema e faça anotações sobre os pontos principais.
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes
2. Verifique se o problema foi bem entendido. Questione, se preciso, ao autor da especificação sobre suas dúvidas. Releia o problema quantas vezes for preciso para tentar entendê‐lo.
3. Extraia do problema todas as suas saídas. 4. Extraia do problema todas as suas entradas. 5. Identifique qual é o processamento principal. 6. Verifique se será necessário algum valor intermediário que auxilie a transformação das entradas em saídas.
Esta etapa pode parecer obscura no início, mas com certeza no desenrolar do algoritmo, estes valores aparecerão naturalmente.
7. Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o processamento está gerando os resultados esperados. Crie valores de teste para submeter ao algoritmo.
8. Reveja o algoritmo, checando as boas normas de criação.