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