Lógica de Programação Introdução aos Algoritmos Prof. Me. Claudio Benossi [email protected] Sumário Revisão de algoritmos Linguagem de programação Linguagem estruturada Elaboração de programas Sumário Revisão de algoritmos Linguagem de programação Linguagem estruturada Elaboração de programas Algoritmo – Definição Descrição de um conjunto finito de comandos para a solução de um problema em um tempo finito. Algoritmo – Exemplo :: Trocar o pneu de um carro Algoritmo – Exemplo :: Trocar o pneu de um carro 1. Desparafusar a roda. Algoritmo – Exemplo :: Trocar o pneu de um carro 2. Suspender o carro com um macaco. Algoritmo – Exemplo :: Trocar o pneu de um carro 3. Retirar a roda com o pneu furado. Algoritmo – Exemplo :: Trocar o pneu de um carro 4. Colocar o step. Algoritmo – Exemplo :: Trocar o pneu de um carro 5. Abaixar o carro. Algoritmo – Exemplo :: Trocar o pneu de um carro 6. Parafusar a roda. Algoritmo – Mais Exemplos Pegar um ônibus para o Drummond. Fazer um bolo. Fazer um barco de papel. Algoritmo Uma boa lógica de programação é desenvolvida a partir de um conjunto de elementos, entre eles: Organização Criatividade Perseverança Padronização Otimização Algoritmo 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. Lógica de Programação: raciocínio lógico empregado no desenvolvimento de programas de computador, fazendo uso ordenado dos elementos básicos suportados por um dado estilo de programação. Algoritmo Algoritmo é uma sequência de passos finitos com o objetivo de solucionar um problema. Algoritmo - Exemplo Elabore um algoritmo em linguagem natural para resolver as situações colocadas a seguir: Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele e mais uma de suas três cargas, que são: um cachorro, uma galinha e um saco de milho. O que o homem deve fazer para conseguir atravessar o rio sem perder as suas cargas? Algoritmo - Exemplo Inicio Homem leva a galinha até a margem direita; Homem Volta a margem esquerda; Homem leva o Cachorro até a margem direita; Homem Volta a margem esquerda levando a galinha; Homem leva o Saco de Milho até a margem direita; Homem Volta a margem esquerda; Homem leva a galinha até a margem direita; Fim Algoritmo – Propriedades Possui um estado inicial Possui sequência lógica Contém ações claras e precisas Possui dados de entrada Produz estado final previsível Deve ser eficaz Algoritmo – Fluxo Entrada Sequência Lógica Saída Algoritmo – Fluxo Raio R de uma circunferência P=2**R Perímetro P da circunferência Algoritmo OPERADORES ARITMÉTICOS + Adição - Subtração * Multiplicação / Divisão Algoritmo OPERADORES RELACIONAIS > Maior que < Menor que >= Maior ou Igual <= Menor ou Igual = Igual <> Diferente Algoritmo LINEARIZAÇÃO DE EXPRESSÕES Para a construção de Algoritmos todas as expressões aritméticas devem ser linearizadas, ou seja, colocadas em linhas. É importante também ressalvar o uso dos operadores correspondentes da aritmética tradicional para a computacional. Algoritmo Exemplo: Algoritmo MODULARIZAÇÃO DE EXPRESSÕES A modularização é a divisão da expressão em partes, proporcionando maior compreensão e definindo prioridades para resolução da mesma. Como pode ser observado no exemplo anterior, em expressões computacionais usamos somente parênteses “( )” para modularização. Algoritmo Na informática podemos ter parênteses dentro de parênteses. Exemplos de prioridades: (2+2)/2=2 2+2/2=3 Algoritmo OPERADORES ESPECIAIS (MOD e DIV) MOD Retorna o resto da divisão entre 2 números inteiros. DIV Retorna o valor inteiro que resulta da divisão entre 2 números inteiros. Algoritmo OPERADORES LÓGICOS Atuam sobre expressões retornando sempre valores lógicos como Falso ou Verdadeiro. E OU NÃO RETORNA VERDADEIRO SE AMBAS AS PARTES FOREM VERDADEIRAS. BASTA QUE UMA PARTE SEJA VERDADEIRA PARA RETORNAR VERDADEIRO. INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO E VICE-VERSA. Algoritmo TABELA VERDADE A B AEB A OU B NÃO (A) V V V V F V F F V F F V F V V F F F F V Algoritmo EXPRESSÕES LÓGICAS As expressões compostas de relações sempre retornam um valor lógico. Exemplos: 2+5>4 Verdadeiro 3<>3 Falso Algoritmo De acordo com a necessidade, as expressões podem ser unidas pelos operadores lógicos. Exemplos: Algoritmo VARIÁVEIS Variáveis são endereços de memória destinados a armazenar informações temporariamente. * Todo Algoritmo ou programa deve possuir variável! Algoritmo VARIÁVEIS DE ENTRADA E SAÍDA Variáveis de Entrada armazenam informações fornecidas por um meio externo, normalmente usuários ou discos. Variáveis de Saída armazenam processados como resultados. dados Algoritmo Exemplo: De acordo com a figura acima A e B são Variáveis de Entrada e C é uma Variável de Saída. Algoritmo CONSTANTES Constantes são endereços de memória destinados a armazenar informações fixas, inalteráveis durante a execução do programa. Exemplo: PI = 3.1416 Algoritmo IDENTIFICADORES São os nomes dados a variáveis, constantes e programas. Regras Para construção de Identificadores: Não podem ter nomes de palavras reservadas (comandos da linguagem); Devem possuir como 1º caractere uma letra ou Underscore ( _ ); Algoritmo Ter como demais caracteres letras, números ou Underscore; Ter no máximo 127 caracteres; Não possuir espaços em branco; A escolha de letras maiúsculas ou minúsculas é indiferente. Algoritmo IDENTIFICADORES São os nomes dados a variáveis, constantes e programas. Regras Para construção de Identificadores: Não podem ter nomes de palavras reservadas (comandos da linguagem); Devem possuir como 1º caractere uma letra ou Underscore ( _ ); Ter como demais caracteres letras, números ou Underscore; Algoritmo Exemplo: Algoritmo TIPOS DE DADOS INTEIRO ADMITE SOMENTE GERALMENTE É REPRESENTAR (QUANTIDADE). NÚMEROS INTEIROS. UTILIZADO PARA UMA CONTAGEM Algoritmo TIPOS DE DADOS REAL ADMITE NÚMEROS REAIS (COM OU SEM CASAS DECIMAIS). GERALMENTE É UTILIZADO PARA REPRESENTAR UMA MEDIÇÃO. Algoritmo TIPOS DE DADOS CARACTERE ADMITE CARACTERES ALFANUMÉRICOS. OS NÚMEROS QUANDO DECLARADOS COMO CARACTERES TORNAM SE REPRESENTATIVOS E PERDEM A ATRIBUIÇÃO DE VALOR. Algoritmo TIPOS DE DADOS LÓGICO ADMITE SOMENTE VALORES (VERDADEIRO / FALSO). LÓGICOS Algoritmo COMANDOS DE I/O (INPUT/OUTPUT)Entrada e Saída LER Comando de entrada que permite a leitura de Variáveis de Entrada. ESCREVER Comando de saída que exibe uma informação na tela do monitor. IMPRIMIR Comando de saída que envia uma informação para a impressora. Sumário Revisão de algoritmos Linguagem de programação Linguagem estruturada Elaboração de programas Linguagem de programação Estabelece regras de sintaxe para que o algoritmo possa ser entendido por uma máquina. Algoritmo × Linguagem de Programação Raciocínio Algoritmo int a, b, c; if (a > 2) a = b + c; else a = b – c; return; Programa Programa Programa é a codificação de um algoritmo em uma linguagem de programação. Um computador é uma máquina que, a partir de uma entrada, realiza um número de cálculos matemáticos e lógicos, gerando uma saída. Programa é o elemento que diz ao computador quais cálculos devem ser realizados. Sumário Revisão de algoritmos Linguagem de programação Linguagem estruturada Elaboração de programas O que é linguagem estruturada? É uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: Sequência Decisão Interação Características Sua principal característica é a utilização de blocos para solução de um problema. Permite a utilização combinada de sub-rotinas compiladas separadamente, sem que pertençam ao mesmo programa propriamente dito. Sumário Revisão de algoritmos Linguagem de programação Linguagem estruturada Elaboração de programas Passos para elaboração de um programa 1. Compreender o problema. 2. Esboçar um procedimento para resolver o problema. 3. Formular o algoritmo. 4. Traduzir o algoritmo para uma linguagem de programação (Codificação). Passos para elaboração de um programa :: Exemplo Calcular as raízes reais de: 2 ax + bx + c 1. Compreender o problema Exemplo: Equação de 2o. grau Possibilidades de raízes: 02 raízes complexas; 02 raízes reais idênticas; 02 raízes reais distintas; Condição para haver raízes reais: Δ ≥ 0 2. Esboçar um procedimento para resolver o problema Calcular Δ. Se Δ ≥ 0, calcular raízes reais. Caso contrário, informar que não há raízes reais. 3. Formular o algoritmo ler(a,b,c) delta = b^2 – 4*a*c se (delta ≥ 0) então r1 = – b – (delta)^(–1/2) r2 = – b + (delta)^(–1/2) escrever(r1,r2) senão escrever(“Não há raiz real”) fim do se fim do algoritmo 4. Codificar #include <stdio.h> #include <stdlib.h> #include <math.h> int main(void) { float a, b, c, delta, r1, r2; scanf("%f %f %f", &a, &b, &c); delta = b*b – 4*a*c; if (delta >= 0) { r1 = – b – sqrt(delta); r2 = – b + sqrt(delta); printf("r1 = %f \n r2 = %f", r1, r2); } else printf("Nao ha raiz real\n"); } Gerando um programa executável Passos necessários para gerar um programa executável: A. Codificação B. Geração de Código Objeto C. Linkagem D. Depuração (debug) Gerando um programa executável Codificação Código fonte Depuração Geração de código objeto Código objeto Bibliotecas Linkagem Programa Executável Gerando um programa executável A. Codificação É a escrita de um programa de acordo com uma linguagem de programação. Utiliza Editores de Texto. Resultado: código-fonte. Gerando um programa executável B. Geração de código-objeto Tradução do código-fonte para o código de máquina do processador. Realizado pelos Compiladores. Resultado: código-objeto. Gerando um programa executável C. Linkagem Rearranja o código do programa Incorpora as partes referenciadas no código original (obtidas de uma biblioteca). Realizada pelos Ligadores. Resultado: código executável pelo processador. Gerando um programa executável D. Depuração (debug) Auxilia o programador a eliminar erros dos programas (“bugs”). Permite: execução passo-a-passo. visualização do estado do programa através das variáveis. Para saber mais... SEBESTA, R. W. Conceitos de linguagens de programação. 4ª ed. Bookman, 2000. Dicionário de Linguagens de Programação: http://users.erols.com/ziring/dopl.html Dicionário de algoritmos e estruturas de dados: http://www.nist.gov/dads/ Questões