Prévia do material em texto
Profa. Me. Karhyne Assis UNIDADE I Linguagem e Técnicas de Programação De acordo com Forbellone (1993), um algoritmo é uma sequência finita de instruções ou operações que, quando executadas, solucionam um problema computacional. Não representa, necessariamente, um programa de computador, e sim uma sequência de passos necessários para executar uma tarefa ou solucionar um problema. Introdução aos Algoritmos: Conceitos Básicos Projetar a solução (Algoritmo) Codificar a solução (Programar em Linguagem de Programação) Testar o programa Definição do problema (O que) Desenvolvimento (Como) Um programa de computador é um conjunto de instruções, escrito por meio de uma linguagem de programação (linguagem computacional). Exemplos: C, C++, C#, Java... Programas O Computador não tem senso próprio: deve receber instruções explícitas e precisas (algoritmos). É uma técnica que envolve a organização de ações em uma ordem específica para alcançar um objetivo predefinido. Ela ensina a programar em linguagem natural e de fácil acesso. Exemplo: Rotina diária: levantar da cama, escovar os dentes, dirigir um carro, ligar a luz quando entra em um quarto escuro. Ações que obedecem a uma sequência lógica. Lógica de Programação Objetivo O objetivo principal da Lógica de Programação é demonstrar técnicas para resolução de problemas e, consequentemente, para automatização de tarefas. 1. Cada passo do algoritmo deve ser uma instrução que possa ser realizada. 2. A ordem dos passos deve ser precisamente determinada. 3. O algoritmo deve ter um fim. Lógica de Programação Vantagem: Você não precisa ficar decorando comandos. Na linguagem computacional, temos três tipos de formas de representação de algoritmos mais utilizados. Linguagem narrativa Fluxograma Pseudocódigo (Linguagem estruturada ou Portugol) Representação Lógica Linguagem narrativa Utilização de uma linguagem clara e direta, comum no dia a dia (português), para explicar ou instruir de maneira eficaz. Fluxograma Conjunto de símbolos-padrão que representa visualmente uma tarefa ou resolução de um problema. Pseudocódigo (Linguagem estruturada ou Portugol) Estrutura escrita em português, com regras predefinidas para escrever algoritmos. Serve como passo intermediário antes da codificação efetiva em linguagens de programação. Representação Lógica Exemplo: Uma pessoa está perdida em uma cidade desconhecida e procura a rodoviária; encontra um policial e pede auxílio: Pergunta: Como eu chego à rodoviária? O policial responde (descrição narrativa): Siga em frente e, na quarta esquina, vire à direita; siga em frente e, de lá, você já vai vê-la. Descrição Narrativa Vantagem: Utilização de linguagem natural. Desvantagem: Permite múltiplas interpretações, o que pode levar a ambiguidades. Quais serão as instruções? Descrição Narrativa E se não tiver passando? E se tiver fila? Teste seletivo: Determina qual conjunto de ações deve ser seguido. Assistir a um filme no cinema. Início 1. Ir ao cinema 2. Comprar uma entrada 3. Ver o filme 4. Voltar para casa Fim Com base na sequência abaixo, qual alternativa melhor representa a sequência lógica para executar a atividade de trocar a lâmpada? a) 1-3-2-4. b) 2-1-3-4. c) 4-3-2-1. d) 1-2-3-4. e) 2-1-4-3. Interatividade Trocar a lâmpada queimada 1. Suba e remova a lâmpada, girando-a no sentido anti-horário. 2. Coloque a escada abaixo da lâmpada queimada. 3. Desça da escada. 4. Escolha uma lâmpada nova de mesma potência e instale-a, girando no sentido horário. Com base na sequência abaixo, qual alternativa melhor representa a sequência lógica para executar a atividade de trocar a lâmpada? a) 1-3-2-4. b) 2-1-3-4. c) 4-3-2-1. d) 1-2-3-4. e) 2-1-4-3. Resposta Trocar a lâmpada queimada 1. Suba e remova a lâmpada, girando-a no sentido anti-horário. 2. Coloque a escada abaixo da lâmpada queimada. 3. Desça da escada. 4. Escolha uma lâmpada nova de mesma potência e instale-a, girando no sentido horário. Conjunto de símbolos-padrão contendo os passos necessários à resolução de um problema. É independente da linguagem de programação. Fluxograma Início e fim do algoritmo Entrada de dados Saída de dados (Exibir) Cálculos e atribuições Decisão Direção do processo Vantagem: Fácil entendimento. Desvantagens: Ter conhecimento dos símbolos, modificações e edições difíceis. Na montagem do Fluxograma ou do Pseudocódigo, as palavras reservadas, variáveis e constantes não devem ser acentuadas. Exemplo: Algoritmo para calcular e exibir a média de duas notas de um aluno. Fluxograma Início do algoritmo Entrada de dado Processamento Saída de dado Fim do algoritmo Inicio nota1, nota2 Media (nota1 + nota2)/2 Fim Media Exemplo: Algoritmo para calcular a média de duas notas de um aluno e verificar se ele foi aprovado ou reprovado, sendo 7 a média necessária para aprovação. Fluxograma Inicio nota1, nota2 Media (nota1 + nota2) / 2 Fim Aluno aprovado Aluno reprovado Sim Não Leia e entenda o problema completamente. Identifique as entradas e saídas necessárias. Determine o processo principal para converter entradas em saídas. Verifique o algoritmo para garantir que ele funcione como esperado. Normatização: Revise e ajuste o algoritmo para atender às normas de desenvolvimento. Garanta a objetividade, simplicidade e não ambiguidade. Regras para a Construção de Algoritmos Estrutura escrita em português, muito próxima à linguagem natural, com foco na lógica e não na sintaxe de linguagem. Pseudocódigo ou Portugol Vantagens: uso da língua portuguesa, solução lógica, define a estrutura dos dados, próximo à linguagem de programação. Desvantagens: linguagem não oficial, não padronizado. Exemplo: Algoritmo para calcular a média de duas notas de um aluno e verificar se ele foi aprovado ou reprovado, com a média necessária para aprovação sendo 7. Algoritmo Media_aluno Variáveis nota1, nota2, media: real Inicio Leia (nota1) Leia (nota2) media ← (nota1 + nota2)/2 Se media >= 7 então Escreva (“Aluno aprovado”) Senão Escreva (“Aluno reprovado”) Fim Pseudocódigo ou Portugol Supondo que se deseja trocar o conteúdo entre duas variáveis do tipo numéricas Num1 e Num2, fornecidas pelo usuário. Para a realização dessa operação, considerando o menor uso de variáveis, será necessária a declaração de quantas variáveis? Faça um fluxograma ou pseudocódigo desse algoritmo, para encontrar a melhor solução e identificar a alternativa correta. a) Uma variável. b) Duas variáveis. c) Três variáveis. d) Quatro variáveis. e) Cinco variáveis. Interatividade Supondo que se deseja trocar o conteúdo entre duas variáveis do tipo numéricas Num1 e Num2, fornecidas pelo usuário. Para a realização dessa operação, considerando o menor uso de variáveis, será necessária a declaração de quantas variáveis? Faça um fluxograma ou pseudocódigo desse algoritmo, para encontrar a melhor solução e identificar a alternativa correta. a) Uma variável. b) Duas variáveis. c) Três variáveis. d) Quatro variáveis. e) Cinco variáveis. Resposta Algoritmo TROCA var Num1, Num2, Temp: numero Inicio leia (Num1) leia (Num2) Temp ← Num1 Num1 ← Num2 Num2 ← Temp escreva (Num1) escreva (Num2) Fim Inicio Num1, Num2 Temp Num1 Num1 Num2 Num2 Temp Num1, Num2 Fim FLUXOGRAMA PSEUDOCÓDIGO Regras para a montagem de programas – pseudocódigo. Foco na ideia e não na rigidez das regras formais – sintaxe de linguagem. Descreve o raciocínio que será utilizado para criar um programa. Recursos: Tipos de informação. Entrada de dados. Operações possíveis. Saída de dados. Os algoritmos e as linguagens de programação trabalham com dados bem definidos. Introdução à Programação Entrada Processamento Saída Dados são classificados em tipos: conforme o tipo de dado, o computador trabalha de uma formadiferente no tratamento deste durante o processamento. Tipos primitivos de dados: Inteiros: 1; 2; 44; 100; 0; -15; -99. Reais: 0,14; 3,14159; 0,99; -1,333. Caracteres (char) e cadeias (String): alfanuméricos: numéricos: (‘0’...’9’) e alfabéticos: (‘A’...’Z’; ‘a’...’z’) cadeias: ‘carro’ - ‘c’ é um caractere, e ‘carro’ é uma cadeia. especiais: (‘#’, ‘?’,’ !’, ‘@’) Lógicos: valores booleanos (Verdadeiro (V) ou Falso (F)). Introdução à Programação: Tipos de dados Uma variável é um espaço de memória do computador reservado para guardar informações (dados). Para criar uma variável, é recomendado dar um nome que lembre a informação armazenada, ou seja, nomes significativos. Os nomes das variáveis são atribuídos pelo usuário e obedecem a certas regras: o primeiro caractere deve ser uma letra; os nomes podem ser formados por letras, dígitos e pelo caractere sublinhado (underline). Declaração: Introdução à Programação: Variáveis var nome, codigo: Cadeia idade, altura: inteiro Constantes: Uma constante é uma informação que não varia com o tempo, permanece a mesma do início ao fim do algoritmo. Podem ser de qualquer tipo: números, letras e palavras. Exemplo: const PI = 3,141617 (valor que não muda durante a execução do programa). Introdução à Programação: Constantes O computador é capaz de executar uma vasta gama de operações, incluindo operações matemáticas, como: adição, subtração, multiplicação, divisão... Manipulação de dados. Tabela de operadores Introdução à Programação: Principais Operadores Aritméticos Fonte: livro-texto. Operador Referência do operador + Adição - Subtração * Multiplicação / Divisão DIV Divisão inteira MOD ou % Resto da divisão ** ou ^ Exponenciação Exemplo: 4 * 2 (4 e 2 são operandos, * é o operador de multiplicação). Operador de atribuição: ( ou :=). Introdução à Programação: Principais Operadores Aritméticos Algoritmo Pessoa var nome: Cadeia idade: inteiro Inicio nome “Axyz” idade 20 Fim O algoritmo a seguir mostra o uso da instrução de saída. O programa faz o cálculo do preço de venda de um produto, apresentando na tela o resultado. Qual o valor de saída após a execução do algoritmo abaixo? a) 10.0 b) 15.0 c) 20.0 d) 25.0 e) 30.0 Interatividade Algoritmo PrecoVenda var Preco_Prod, Preco_Total: real Qtde: inteiro inicio Preco_Prod 5.0 Qtde 6 Preco_Total Preco_Prod * Qtde escreva (Preco_Total) fim O algoritmo a seguir mostra o uso da instrução de saída. O programa faz o cálculo do preço de venda de um produto, apresentando na tela o resultado. Qual o valor de saída após a execução do algoritmo abaixo? a) 10.0 b) 15.0 c) 20.0 d) 25.0 e) 30.0 Resposta Algoritmo PrecoVenda var Preco_Prod, Preco_Total: real Qtde: inteiro inicio Preco_Prod 5.0 Qtde 6 Preco_Total Preco_Prod * Qtde escreva (Preco_Total) fim Introdução à Programação: Operadores Relacionais O resultado de uma operação relacional será sempre um valor lógico (V ou F) Fonte: livro-texto. Operador Referência do operador = ou == Igual (comparação) ou ! diferente >= maior ou igual maior 8 Verdadeiro 15 15 Falso 15 15 Falso Atenção: os números são iguais, e a comparação é diferente 15 = 15 Verdadeiro 17 >= 20 Falso Introdução à Programação: Operadores Lógicos Operador E Operador OU Operando 1 Operando 2 Resultado VERDADEIRO E VERDADEIRO → VERDADEIRO VERDADEIRO E FALSO → FALSO FALSO E VERDADEIRO → FALSO FALSO E FALSO → FALSO Operando 1 Operando 2 Resultado VERDADEIRO ou VERDADEIRO → VERDADEIRO VERDADEIRO ou FALSO → VERDADEIRO FALSO ou VERDADEIRO → VERDADEIRO FALSO ou FALSO → FALSO Fonte: adaptado de: livro-texto. Introdução à Programação: Operadores Lógicos Operador XOR (ou exclusivo) O resultado somente será verdadeiro quando os dois operandos forem diferentes. Operador NÃO Fonte: adaptado de: livro-texto. Operando 1 Operando 2 Resultado VERDADEIRO XOR VERDADEIRO → FALSO VERDADEIRO XOR FALSO → VERDADEIRO FALSO XOR VERDADEIRO → VERDADEIRO FALSO XOR FALSO → FALSO Operando Resultado NÃO VERDADEIRO → FALSO NÃO FALSO → VERDADEIRO Exemplo: sabendo que A = 5, B = 4, C = 3 e D = 6, avaliar as expressões a seguir. Introdução à Programação: Operadores Relacionais (A>C) e (C 3 e 3 10 ou (A+B) = (C+D) (5+4) > 10 ou (5+4) = (3+6) F ou V Verdadeiro (A>=C) e não(D>=C) 5 >= 3 e não(6 >= 3) V e não(V) V e F Falso Fonte: adaptado de: livro-texto. Algoritmo Calcula_Dobro var num, dobro: inteiro início leia (num) dobro num * 2 escreva (dobro) fim Exemplo: Permite a interação com o usuário: Comando leia leia () Introdução à Programação: Entrada de Dados Algoritmo Calcula_Dobro var num, dobro: inteiro início leia (num) dobro num * 2 escreval(“O número digitado foi: ”num) escreva(“O dobro de “, num,” = “, dobro)) fim Para podermos ver no monitor, ou em uma impressora (os chamados dispositivos de saída), precisamos ter uma instrução específica. Esta é chamada de instrução primitiva de saída de dados. A sintaxe é: escreval() //escreva na tela e pule uma linha escreva(“Texto”) escreva(“Texto”,, ...) Uma é um conjunto de nomes de variáveis separados por vírgulas: Exemplo: Introdução à Programação: Saída de Dados Algoritmo Calcula_Area var area, base, altura: real início leia (base, altura) area (base * altura) / 2 escreva (area) fim O computador não reconhece as fórmulas matemáticas armadas. Exemplo: Introdução à Programação: Linearização area (base * altura) / 2 PSEUDOCÓDIGO Analise o algoritmo abaixo e verifique os valores para as variáveis média, P1 e P2, tendo como entrada os valores 8 para n1 e 6 para n2. Assinale a alternativa correta: a) média=5,5, p1=0,4 e p2=0,6. b) média=6,8, p1=1,4 e p2=2,6. c) média=5,6, p1=0,2 e p2=1,6. d) média=6,8, p1=3,2 e p2=3,6. e) média=8,5, p1=0,4 e p2=0,6. Interatividade Algoritmo CalculaMedia var n1, n2, p1, p2, media : real inicio escreva(“Digite a nota 1”) leia(n1) escreva(“Digite a nota 2”) leia(n2) p1 n1*0,4 p2 n2*0,6 media p1+p2 escreva(“A média é: ”, media) fim Analise o algoritmo abaixo e verifique os valores para as variáveis média, P1 e P2, tendo como entrada os valores 8 para n1 e 6 para n2. Assinale a alternativa correta: a) média=5,5, p1=0,4 e p2=0,6. b) média=6,8, p1=1,4 e p2=2,6. c) média=5,6, p1=0,2 e p2=1,6. d) média=6,8, p1=3,2 e p2=3,6. e) média=8,5, p1=0,4 e p2=0,6. Resposta Algoritmo CalculaMedia var n1, n2, p1, p2, media : real inicio escreva(“Digite a nota 1”) leia(n1) escreva(“Digite a nota 2”) leia(n2) p1 n1*0,4 p2 n2*0,6 media p1+p2 escreva(“A média é: ”, media) fim p1 p2 média 8*0,4 6*0,6 3,2+3,6 3,2 3,6 6,8 Solução: Podemos montar uma tabela para auxiliar: FORBELLONE, André L. V.; EBERSPÄCHER, Henri F. Lógica de programação - A construção de algoritmos e estruturas de dados. São Paulo: Makron Books, 1993. Referências ATÉ A PRÓXIMA!