Lógica de Programação
Apresentação da Disciplina Professor: Eziom Alves de Oliveira Carga horária: 80 aulas. 1ª e 2ª aulas da segunda. Site da disciplina: Página da DIsciplina 2
Ementa da Disciplina Introdução à lógica de programação. Estruturas de programação (sequencial, condicional e de repetição). Linguagem algorítmica. Operadores lógicos, relacionais e aritméticos. Variáveis e constantes. Expressões lógicas e aritméticas. Vetores e matrizes. Manipulação de registros. 3
Objetivos Geral Fornecer aos alunos, através do estudo dos conceitos de algoritmos, os conhecimentos básicos necessários para construção de algoritmos e programas de computador eficientes para a solução de um dado problema. Específicos Introduzir o aluno nos conceitos básicos de algoritmos, tipos de dados, operações primitivas e estruturas de controle; Apresentar os conceitos básicos da linguagem Portugol para construção de algoritmos.. 4
Avaliação Avaliação escrita. Exercício Desafio Trabalho em Equipe Utilizando linguagem de Programação C. 5
Bibliografia TONET, Bruno. KOLIVER, Cristian. Introdução aos algoritmos. Núcleo de Apoio Aprendizagem de Programação. Universidade de Caxias do Sul. 6
Softwares utilizados Visualg Programação em Portugol CodeBlocks Programação em C Obs: Links para download se encontra na página da disciplina. 7
Introdução ao Estudo de Lógica de Programação 8
Algoritmo: Definição Um algoritmo é uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. (Tonet e Koliver). Algoritmo é a especificação da sequência ordenada de passos que deve ser seguida para a solução de um problema ou para a realização de uma tarefa, garantindo a sua repetibilidade (José Romildo, nota de aula, 2011). Algoritmo é um conjunto ordenado de passos executáveis não ambíguos, definindo um processo que tem um término(josé Romildo, nota de aula, 2011). 9
Algoritmo: Definição São exemplos de algoritmos instruções de montagem, receitas, manuais de uso, etc.. um algoritmo é um caminho para a solução de um problema. Em geral, existem muitos (senão infinitos) caminhos que levam a uma solução satisfatória. 10
Algoritmos não computacionais Um algoritmo não computacional é um algoritmo cuja sequência de passos, a princípio, não pode ser executada por um computador. objetivo é usar um telefone público 11
Algoritmos não computacionais Algoritmo para fritar um ovo 1) Colocar um ovo na frigideira 2) Esperar o ovo ficar frito 3) Remover o ovo da frigideira 12
Algoritmos não computacionais Algoritmo para fritar um ovo (Versão mais detalhada) 1. Retirar um ovo da geladeira 2. Colocar a frigideira no fogo 3. Colocar óleo 4. Esperar até o óleo ficar quente 5. Quebrar o ovo separando a casca 6. Colocar o conteúdo do ovo na frigideira 7. Esperar um minuto 8. Retirar o ovo da frigideira 9. Apagar o fogo 13
Algoritmos não computacionais Para que o algoritmo possa ser útil, é necessário ainda que quem faz uso dele conheça os termos utilizados nas instruções. Retirar, Colocar, Esperar, frigideira Língua Portuguesa. É preciso que a linguagem utilizada no algoritmo seja conhecida tanto por quem o escreveu quanto por quem vai executá-lo. 14
Problema com linguagens naturais A velhinha ouviu o barulho da janela. 15
Português Estruturado Para que o algoritmo possa ser executado por uma máquina é importante que as instruções sejam corretas e sem ambiguidades. Dessa forma, utilizaremos um linguagem que é bem mais restrita que o Português om significados bem definidos para todos os termos utilizados nas instruções. Essa linguagem é conhecida como Português Estruturado (às vezes também chamada de Portugol). 16
Dicas para se tornar um bom programador Conhecer bem a linguagem. Aprender os conceitos de lógica de programação. Muita prática. Em lógica de programação o principal foco é aprender as ferramentas para resolver problemas computacionais independente de linguagem. Um problema tem várias formas de ser resolvido. Porém, há métodos mais eficientes que outros. 17
Algoritmos computacionais O computador, a princípio, não executa nada. É necessário que ele execute um programa. Um programa nada mais é do que um algoritmo computacional descrito em uma linguagem de programação. 18
Linearização de Expressões Para a construção de algoritmos que realizam cálculo matemáticos, todas as expressões aritméticas devem ser linearizadas, ou seja, colocadas em linhas, devendo também ser feito o mapeamento dos operadores da aritmética tradicional para os do Português Estruturado. Exemplo: 19
Operadores Aritméticos Operadores Português Estruturado Adição + Subtração - Multiplicação * Divisão / Divisão inteira \ Exponenciação ^ ou Exp(<base>,<espoente>) (retorna um valor real) Módulo (resto da divisão) % Raiz quadrada RaizQ(<base>) 20
Exercícios Escreva as expressões abaixo na forma na sintaxe do Português Estruturado. a + b c 2 x 2 3 x ( x+1) 2 + x+1 x 6 x +2 y 3 9 2 h ( 45 3 x 4h(3 h)) 22 21
Operadores Relacionais Os operadores relacionais realizam a comparação entre dois operandos ou duas expressões e resultam em valores lógicos (VERDADEIRO ou FALSO). Operadores Relacionais Português Estruturado Maior > Menor < Maior ou igual >= Menor ou igual <= igual = diferente <> 22
Operadores Relacionais Os operadores relacionais realizam a comparação entre dois operandos ou duas expressões e resultam em valores lógicos (VERDADEIRO ou FALSO). Exemplo: 5 > 4: verdadeiro 1<>1: falso 3>=3 : verdadeiro 23
Operadores Lógicos Os operadores lógicos atuam sobre expressões e também resultam em valores lógicos VERDADEIRO ou FALSO. Operadores Lógicos Português Estrutural Significado AND OR NOT E OU NAO Resulta VERDADEIRO se ambas as partes forem verdadeiras. Resulta VERDADEIRO se uma das partes é verdadeira. Nega uma afirmação, invertendo o seu valor lógico: se for VERDADEIRO torna-se FALSO, se for FALSO torna-se VERDADEIRO. 24
Operadores Lógicos A tabela abaixo chamada tabela-verdade mostra os resultados das aplicações dos operadores lógicos conforme os valores dos operadores envolvidos. A B A E B A OU B NAO (A) NAO (B) Falso Falso Falso Falso Verdadeiro Verdadeiro Falso Verdadeiro Falso Verdadeiro Verdadeiro Falso Verdadeiro Falso Falso Verdadeiro Falso Verdadeiro Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Falso 25
Operadores Lógicos A tabela abaixo chamada tabela-verdade mostra os resultados das aplicações dos operadores lógicos conforme os valores dos operadores envolvidos. De acordo com a necessidade, as expressões podem ser unidas pelos operadores lógicos. (2+5>4) e (3<>3) resulta FALSO, pois VERDADEIRO e FALSO resulta FALSO. 26
Operadores Prioridade Aritmético Lógico Geral Prioridade Exponenciação E Aritmético 3 (maior) Multiplicação e divisão OU Relacional 2 Soma e subtração NAO Lógico 1 (menor) Exemplos: (2 + 2)/2 resulta 2 e 2 + 2/2 resulta 3 (2>3) ou (3<2) e (2<3) //resultado seria Falso (2>3) e (3<2) ou (2<3) //resultado seria Verdadeiro 27
Forma Geral de um Algorítmo algoritmo nome do algoritmo var <declaração de variáveis> inicio <lista de comandos> fimalgoritmo 28
Palavras Reservadas As palavras que fazem parte da sintaxe da linguagem são palavras reservadas, ou seja, não podem ser usadas para outro propósito em um algoritmo que não seja aquele previsto nas regras de sintaxe. A palavra algoritmo, por exemplo, é uma palavra reservada. Neste texto, as palavras reservadas sempre aparecerão em negrito. Palavras Reservadas do Portugol algoritmo enquanto inicio fimse caso entao escolha fimrepita E se fimpara outrocaso para senao repita timer faca fimenquanto OU passo 29
Variáveis Uma variável pode ser vista como uma caixa com um rótulo ou nome colado a ela, que num dado instante guarda um determinado objeto. O conteúdo desta caixa não é algo fixo, permanente. Na verdade, essa caixa pode ter seu conteúdo alterado diversas vezes. Contudo, o conteúdo deve ser sempre do mesmo tipo. 30
Declaração de variáveis As variáveis são declaradas logo abaixo da expressão var, tendo a seguinte forma:... var <identificador1>,<id2>,<id3> : <tipo de dados>... onde <identificador i> é o nome (identificador) de uma variável e <tipo das variáveis> determina que tipo de valor as variáveis poderão receber. 31
Nome de identificadores Os identificadores das variáveis são usados para referenciá-las dentro do algoritmo. Tais identificadores devem ser claros e precisos, dando uma idéia do papel da variável no algoritmo. A identificação ou nomeação de variáveis segue algumas regras: nomes de variáveis não podem ser iguais a palavras reservadas; nomes de variáveis devem possuir como primeiro caractere uma letra ou sublinhado '_' (os outros caracteres podem ser letras, números e sublinhado); nomes de variáveis devem ter no máximo 127 caracteres; Nomes de variáveis não podem conter espaços em branco; na sintaxe do Português Estruturado, não há diferença entre letras maiúsculas de minúsculas (NOME é o mesmo que nome). 32
Nome de identificadores Os identificadores das variáveis são usados para referenciá-las dentro do algoritmo. Tais identificadores devem ser claros e precisos, dando uma idéia do papel da variável no algoritmo. A identificação ou nomeação de variáveis segue algumas regras: Exemplos: Identificadores válidos: NOME, TELEFONE, IDADE_FILHO, IdadeFilho, NOTA1, Est_civil Identificadores Inválidos: 3Endereco, Estado Civil, PARA, algoritmo, numero/complemento. 33
Tipos de dados Uma variável, como o próprio nome sugere, contém valores que variam de acordo com a execução do programa. Uma variável deve possuir um tipo específico. As variáveis em portugol, são divididas em 4 tipos principais: Inteiro: Qualquer número pertencente ao conjunto dos números inteiros (-11,0,34,1000) Real ou numérico: qualquer número pertencente ao conjunto dos números reais. Exemplos: -10, -1.5, 0, 2.3, 4.8 Literal ou caractere: caracteres alfanuméricos. Exemplo: casa, Win32, 123, alfa* Lógico: valor lógico verdadeiro ou falso. 34
Exercícios 1) Classifique os conteúdo das variáveis abaixo de acordo com seu tipo, assinalando com N os dados numéricos, com L os lógicos, com C os literais. ( ) 0 ( ) abc ( ) Joao ( ) 5.7 ( )1012 ( )Falso ( ) -49 ( )+342 ( ) 659 ( ) Lucas ( ) Verdadeiro ( ) 0.001 ( ) Verdadeiro 2) Assinale com um X os nomes de variáveis válidos. ( ) abc( ) 3abc ( ) a ( ) 123a ( ) a ( ) acd1 ( ) -_ad ( ) A&a ( ) guarda-chuva ( ) A123 ( ) Aa ( ) etc. ( ) guarda_chuva ( ) b316 ( ) enquanto ( ) escreva 35
Operador de atribuição Para colocar um valor em uma variável dentro de um algoritmo, utilizamos o operador de atribuição. O operador de atribuição é representado por uma seta (<-) apontando para a esquerda. Exemplo: Peso <- 78.5 Nome <- João da Silva Achei <- FALSO 36
Operador de atribuição É importante lembrar que só se pode atribuir às variáveis valores do mesmo tipo da variável. Assim, o seguinte comando seria inválido: VAR salario: REAL INICIO salario < "Insuficiente" 37
Operador de atribuição Deve estar claro, também, que sempre à esquerda do comando de atribuição deve haver um (e somente um) identificador de variável. Assim, são incorretos os seguintes comandos: 2060 < NumeroConta NumeroAgencia+digitoControle < 2345 + 0 NomeCliente+sobrenome < João + Silva 38
Linhas de Comentário Os comentários são declarações não compiladas que podem conter qualquer informação textual que você queira adicionar ao código-fonte para referência e documentação de seu programa. Uma linha São representados por duas barras normais ( // ). Todo o texto que você digitar após as duas barras será comentário. // Este método calcula o fatorial de n...x < y; // Inicializa a variável x com o valor de y 39
Comandos de entrada/saida (E/S) Comando de Entrada: escreva() Exibição de informações (texto alfanumérico) para o usuário em algum dispositivo de saída (monitor). Exemplos: escreva( Meu primeiro programa ) escreval( Idade do aluno:, idade); 40
Comandos de entrada/saida (E/S) Comando de saida: leia(<identificador>) Exibição de informações (texto alfanumérico) para o usuário em algum dispositivo de saída (monitor). Exemplos: leia(idade) leia(idade,peso,nome, ); 41
Exercícios 1) Faça um algoritmo que lê dois valores reais do teclado, calcula e mostra na tela: soma, subtração, multiplicação e divisão. 2)Faça um algoritmo que determine o volume de uma caixa dágua cilíndrica, sendo que o raio e a altura devem ser fornecidos (lidos pelo teclado). V = PI * Raio^2 * Altura. 3)Escrever um algoritmo que lê o nome de um funcionário, o número de horas trabalhadas, o valor que recebe por hora e o número de filhos. Com estas informações, calcular o salário deste funcionário, sabendo que para cada filho, o funcionário recebe 3% a mais, calculado sobre o salário bruto. 4)Escrever um algoritmo que lê o nome de um vendedor, o seu salário fixo, o total de vendas por ele efetuadas e o percentual que ganha sobre o total de vendas. Calcular o salário total do vendedor. Escrever o número do vendedor e seu salário total. 42
Estrutura sequencial De forma genérica, a construção de um algoritmo se resume às seguintes etapas: a)entendimento do problema b)elaboração da solução algorítmica; e c)codificação da solução no Português estruturado. Geralmente a etapa 2 é a mais complexa, pois depende da engenhosidade e experiência do construtor. 43
Estrutura sequencial - Exemplo Solução 1.Algoritmo "Cálculo de Média Aritmética" 2.var 3. A,B,Media : REAL 4. 5. inicio 6. Escreva ("Programa que calcula a média aritmética de dois valores.") 7. Escreva ("Digite um valor : ") 8. Leia (A) 9. Escreva ("Digite outro valor : ") 10. Leia (B) 11. Media < (A+B)/2 12. Escreva ("A média dos dois valores é : ", Media) 13.fimalgoritmo 44
Exercícios 1) Faça um programa que lê o nome de um aluno, as notas de suas três provas e, em seguida, exiba os dados do aluno com a seguinte formatação: Nome do aluno: XXXXX XXXXX XXXX Nota da prova 1: xx.xx Nota da prova 2: xx.xx Nota da prova 3: xx.xx Média da Disciplina: xx.xx 2) Faça um algoritmo que lê o valor do raio e calcule a área do círculo correspondente. (A = πr²) 45
Estrutura Condicional "se tiver R$ 10,00 sobrando então irei ao cinema hoje à noite. Condição: tiver R$ 10,00 sobrando Condição deve ser algo que tenha como resposta SIM ou NÃO, Verdadeiro ou FALSO. Ação: ir ao cinema. 46
Estrutura Condicional se "tiver R$ 10,00 sobrando" entao "irei ao cinema" fimse 47
Estrutura Condicional dinheiro < 10 se dinheiro >= 10 entao escreval("irei ao cinema") fimse 48
Comando de condição SE se <condição> entao fimse <ações (uma ou mais) a serem realizadas se a condição for verdadeira> 49
Comando de condição SE Agora vamos modificar o algoritmo para que ele exiba a mensagem ficar em casa caso não tiver R$ 10,00 sobrando. Solução: se dinheiro >= 10 entao fimse escreval( vou ao cinema ) se dinheiro < 10 entao fimse escreval( vou ficar em casa ) 50
Comando de condição SE Agora vamos modificar o algoritmo para que ele exiba a mensagem ficar em casa caso não tiver R$ 10,00 sobrando. Solução: se dinheiro >= 10 entao fimse escreval( vou ao cinema ) se dinheiro < 10 entao fimse Realizando o mesmo teste escreval( vou ficar em casa ) 51
Comando de condição SE Agora vamos modificar o algoritmo para que ele exiba a mensagem ficar em casa caso não tiver R$ 10,00 sobrando. Solução (melhorada): se dinheiro >= 10 entao senao fimse escreval( vou ao cinema ) escreval( vou ficar em casa ) 52
Comando de condição SE-SENAO Exemplo: Determinar se um número digitado pelo usuário é negativo ou positivo Algoritmo Positivo Negativo VAR numero : inteiro inicio escreval( Digite um número inteiro: ) leia(numero) se numero >= 0 entao escreval( O número digitado é positivo ) senao escreval( O número digitado é negativo ) fimse fimalgoritmo 53
Exercícios 1)Escreva um algoritmo que lê o salário em uma pessoa e determina se ela é baixa renda ou não. Pessoas de baixa renda são aquelas que ganham menos de 1 salário mínimo por mês (R$ 880,00). 2)Escreva um algoritmo que determina se um número digitado pelo usuário está entre 10 e 20. 3)Escreva um programa que leia um número inteiro. Se o número lido for positivo, escreva uma mensagem indicando se ele é par ou ímpar. Se o número for negativo, escreva a seguinte mensagem Este número não é positivo. 4)Faça um algoritmo que receba o valor do salário de uma pessoa e o valor de um financiamento pretendido. Caso o financiamento seja menor ou igual a 5 vezes o salário da pessoa, o algoritmo deverá escrever "Financiamento Concedido"; senão, ele deverá escrever "Financiamento Negado". Independente de conceder ou não o financiamento, o algoritmo escreverá depois a frase "Obrigado por nos consultar." 54