Introdução a Algoritmos - Revisão

Documentos relacionados
CONCEITOS DE ALGORITMOS

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS

LÓGICA DE PROGRAMAÇÃO. Algoritmos Computacionais. Sérgio Carlos Portari Júnior

Programação Procedimental

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

TECNOLOGIA EM REDES DE COMPUTADORES. computadores. Aula 4

LINGUAGEM ALGORÍTMICA

Programação Estruturada Aula VisualG

Algoritmos e Programação - Engenharia da Computação -

Programação Estruturada

Técnicas de Programação

FACCAT Sistemas de Informação. Estruturas de Dados

BCC Introdu c ao ` a Programa c ao Portugol Guillermo C amara-ch avez UFOP 1/35

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

Noções de algoritmos - Aula 1

Exercícios Repetição

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Algoritmos e Programação

2. Algoritmos. Prof. Renato Tinós. Local: Depto. de Computação e Matemática (FFCLRP/USP) Introdução à Computação I IBM1006

Conceitos Básicos. Professor: Juliano Lucas Gonçalves.

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

9. Comando de repetição com variável de controle (para.. de.. até.. faça)

AULA 02. OBJETIVO: Desenvolvimento e solução de Algoritmos. LÓGICA DE PROGRAMAÇÃO

Estruturas de Repetição

Prof. Jorge Cavalcanti

Algoritmos Computacionais

Introdução a Computação

Introdução a Lógica de Programação

Conceitos Básicos de Algoritmos

Introdução à Lógica de Programação

Algoritmo. Conjunto finito de instruções que permitem a realização de uma tarefa. 2.1: Introdução 2. ALGORITMOS

Lógica para programação II Seção 1 - Histórico e Introdução Primeiros Programas

Introdução a programação Visão geral

Introdução. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e programação Aula 02

Portugol. Tiago Alves de Oliveira

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Aula 4 Introdução ao C

Programação de Computadores

Algoritmos. Introdução à Ciência da Computação I. Prof. Jó Ueyama

Ambiente de desenvolvimento

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Oficina de Python Prof. Me. José Carlos Perini

Introdução à Ciência da Computação

Programação de Computadores

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Algoritmo e Programação. Capítulo 2 Tópicos Preliminares

Linguagem Computacional

Fundamentos de Programação

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

É neste ponto que entra o conceito de lógica de programação.

Algoritmo e Programação Matemática

Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO

CMP Algoritmos Algoritmos Parte I. Professor Vicente Paulo de Camargo

PSEUDO-CÓDIGO. Nickerson Fonseca Ferreira

Variáveis, Expressões Aritméticas e Entrada e Saída de Dados

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Noções de algoritmos - Aula 1

Introdução à Programação de Computadores Fabricação Mecânica

O que é Sintaxe e Semântica? Sintaxe e Semântica. O que é Sintaxe e Semântica? Sintaxe e Semântica. Instruções Primitivas

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Estruturas de repetição. Prof. Alex Camargo

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Estruturas de Repetição. João Medeiros FATERN

Programação para Games I

Curso: Análise e Desenvolvimento de Sistemas. (Conceitos Práticos de Lógica de Programação)

Estrutura de decisão

Introdução aos Algoritmos. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos - 1. Alexandre Diehl. Departamento de Física - UFPel

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo

Unidade 4: Introdução à Lógica de Programação - Parte II

O que é Sintaxe e Semântica?

Desenvolvimento de algoritmos Desenvolvimento de Algoritmos

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Exercício... Para começar... Resolução... Para começar... Para começar...

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II. Prof. Dr. Daniel Caetano

PROGRAMAÇÃO COMPUTACIONAL I

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Unidade 5: Introdução à Programação com Python Prof. Daniel Caetano

LISTA DE ATIVIDADES ...

Introdução a programação Comandos de repetição

Unidade 4: Introdução à Lógica de Programação - Parte II Português Estruturado - Versão Estácio Prof. Daniel Caetano

Material Didático Unificado.

Apêndice A. Pseudo-Linguagem

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II. Prof. Dr. Daniel Caetano

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

ESTRUTURAS DE REPETIÇÃO - PARTE 1

Programação Básica. Estrutura de um algoritmo

Algoritmos I Edézio 1

INF 1005 Programação I

Introdução à Programação

Conceitos básicos de algoritmos

Algoritmos e Programação I

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

PDA - Repetição. Estruturas de repetição. Slides adaptação de Deise Saccol

Transcrição:

Introdução a Algoritmos - Revisão O computador é uma máquina capaz de seguir uma certa espécie de algoritmos, chamados programas Ele possui uma memória, capaz de armazenar dados, e uma unidade aritmética, que é capaz de causar mudanças nos dados armazenados na memória Além disso, o computador é capaz de comunicar-se com o mundo exterior através de operações de entrada e saída Antes de poder escrever um programa, sempre é necessário um processo de raciocínio, que parte de uma análise do problema dado, passando por um algoritmo em termos gerais até um algoritmo detalhado, que consiste em uma sequência de passos simples que podem ser diretamente expressados em termos de comandos, numa linguagem de programação (por exemplo, C, C++, Delphi ou Java) Uma linguagem de programação é uma técnica de notação para programar, com a intenção de servir de veículo para: a) expressão de raciocínio algorítmico; b) execução automática de um algoritmo por um computador Quando se fala em algoritmos, pensa-se, sobretudo, em computadores No entanto, outros métodos para a solução de problemas poderiam ser incluídos, como, por exemplo, os métodos ensinados na escola para multiplicar e dividir números inteiros É ainda possível considerar certas receitas culinárias como algoritmos, desde que não incluam instruções como "Adicione sal a gosto", por não ter como ser mensuradas Informalmente, um algoritmo é qualquer procedimento bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída Portanto, computacionalmente falando, um algoritmo é uma sequencia de passos computacionais que transforma a entrada em saída Um algoritmo é um texto estático Ele existe numa folha de papel Para produzir os resultados desejados, esse algoritmo deve ser executado, para isto, o algoritmo deve ser passado para uma linguagem de programação para ser compilado e executado Algumas sugestões: - Algoritmos devem ser feitos para serem lidos por seres humanos Tenha em mente que seus algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo) de tal modo que possam ser corrigidos, receber manutenção e ser modificados - Escreva os comentários no momento em que estiver escrevendo o algoritmo Um algoritmo não documentado é um dos piores erros que um programador pode cometer Os comentários deverão acrescentar alguma coisa, não apenas para frasear os comandos O conjunto de comandos nos diz o que está sendo feito, os comentários deverão nos dizer por quê - Use comentários antes de iniciar o algoritmo, para explicar o que o algoritmo faz e fornecer instruções para o seu uso Alguns exemplos: (1) uma descrição do que faz o algoritmo; (2) como utilizá-lo; (3) explicação das variáveis mais importantes; (4) estruturas de dados utilizadas; (5) os nomes de quaisquer métodos especiais utilizados, juntamente com as referências nas quais mais informações possam ser encontradas; (6) autor; (7) data da escrita; - Escolha sempre nomes significativos para as variáveis Os nomes identificar, o melhor possível, as quantidades que as representam Por exemplo, P C + L é muito menos claro que PREÇO CUSTO + LUCRO - Um comando por linha é suficiente A utilização de vários comandos por linha é prejudicial por vários motivos, dentre eles, (1) o algoritmo fica mais ilegível e (2) fica mais difícil encontrar erros eou acrescentar algo, caso necessário Exemplo: A 14,2; I 1; enquanto I < 10 faça X X +1; K I*K; I I+1; -enquanto o mesmo exemplo com cada comando em uma linha: A 14,2; I 1; enquanto I < 10 faça X X +1; K I*K; I I+1; -enquanto - Utilize parêntese para aumentar a legibilidade e previnir-se contra erros Exemplo: com poucos parênteses A*B*C/(D*E*F) A*B/C*D/E*F A**B**C A/B/C/D X>Y ou Q A+B<C com parênteses extras (A*B*C)/(D*E*F) ((((A*B)/C)*D)/E)*F (A**B)**C ((A/B)/C)/D (X>Y) ou Q (A+B)<C - Utilize identação para mostrar a estrutura lógica do algoritmo

- Se alguma modificação for realizada no algoritmo, os comentários associados devem ser modificados também, e não apenas os comandos Antes não comentar do que deixar um comentário errado 1 Metodologia de Desenvolvimento de Algoritmos Uma das dificuldades naturais de um iniciante em programação é como começar a desenvolver um algoritmo para resolver um dado problema Os passos seguintes, seguidos, podem auxiliar nesta tarefa: passo1- leia cuidadosamente a especificação do problema até o final (fazer anotações) ENTENDEU falso; vezes 0; passo2- enquanto não ENTENDEU faça se VEZES <= 4 então leia a especificação até o final pergunte ao professor ou a quem especificou o problema até entender ; ENTENDEU verdadeiro; -se; -enquanto; passo3 levantar e analisar todas as saídas exigidas na especificação do problema; (impressões) passo4 levantar e analisar todas as entradas citadas na especificação do problema; (leituras) passo5 verificar se é necessário gerar valores internamente ao algoritmo e levantar as variáveis necessárias e os valores iniciais de cada uma; (comentar) passo6 levantar e analisar todas as transformações necessárias para, dadas as entradas e valores gerados internamente, produzir as saídas especificadas; (comentar) passo7 testar cada passo do algoritmo, verificando se as transformações intermediárias executadas estão conduzindo aos objetivos desejados Utilizar, sempre que possível, valores de teste que permitam prever os resultados a priori; (comentar) passo8 fazer uma reavaliação geral, elaborando o algoritmo através da integração das partes (rever comentários) 2 Realização de algoritmos em PORTUGOL 21 Declaração de variáveis tipos básicos (4): INTEIRO: qualquer número inteiro, negativo, nulo ou positivo Ex: -3, 0, 128 REAL: qualquer número real, negativo, nulo ou positivo Ex: -1, 025, 0, 35 CARACTER: qualquer conjunto de caracteres alfanuméricos Ex: AB, XYZ LÓGICO: conjunto de valores FALSO ou VERDADEIRO em proposições lógicas Definição de variáveis Imagine uma variável como sendo o nome de um local, no qual você pode colocar qualquer valor do conjunto de valores possíveis do tipo básico associado O nome da variável é um identificador tal como definido anteriormente Sintaxe: inteiro: NUMERO; real: RESULT; caracter: FRASE, NOME; lógico: TEM, ACHOU; Declarar uma variável corresponde à criação de local na memória rotulado com o nome da variável e marcado com o tipo de valores que ela pode conter Desse modo, NUMERO é o nome do local de memória que só pode conter valores do tipo inteiro A variável RESULT é um local da memória que só pode conter valores reais, FRASE e NOME são locais na memória que só podem conter conjuntos de caracteres e TEM e ACHOU só podem conter falso ou verdadeiro

As variáveis são elementos que podem assumir vários valores, tal como as entendemos em matemática 22 Comandos Básicos Comando de atribuição Para a atribuição de um valor a uma variável, usa-se o símbolo de atribuição Sintaxe: variável comando ou valor; Exemplo: REAL NUMERO div 2; ACHOU falso; Operadores Aritméticos Operadores binários Operador Símbolo Exemplo Operação multiplicação * x * y multiplica x por y divisão / x / y divide x por y soma + x + y soma x a y subtração - x - y de x subtrai y Operador de atribuição Operador Símbolo Exemplo Operação igual = x = y atribui o valor de y a x Algumas linguagens dispõem ainda de um operador ou função que permite calcular o resto da divisão inteira de dois números, que será representado por mod Um exemplo: 9 mod 5 = 4 Operadores Relacionais Operador Símbolo Exemplo Resultado maior > a > b 1 se a maior que b, 0 menor < a < b 1 se a menor que b, 0 maior ou igual >= a >= b 1 se a maior ou igual a b, 0 menor ou igual <= a <= b 1 se a menor ou igual a b, 0 igual = a = b 1 se igual a b, 0 diferente ~= a ~= b 1 se diferente de b, 0 Nota importante: Para evitar os erros causados pela representação inexata de valores reais, deve-se evitar utilizar as comparações de igualdade com números reais Exemplo: (10 / 30) + (10 / 30) + (10 / 30) = 1 Esta expressão é avaliada como falsa devido ao fato de 10 / 30 ter como resultado um valor que contém número infinito de casas decimais (03333333) O computador é apenas capaz de utilizar um número finito de casas decimais e, a cada ocorrência, é feito um arredondamento do valor de 1/3 Operadores Lógicos

3 Blocos e comandos básicos de controle 31 Bloco Pode ser definido como um conjunto de comandos com uma função bem definida Ele serve, também, para definir os limites onde as variáveis declaradas em seu interior são conhecidas <declaração de variáveis> <comandos> 32 Sequência simples É um conjunto de comandos, separados por ponto e vírgula (;), que serão executados numa sequência linear de cima para baixo: comando 1 ; comando 2 ; comando n ; 33 Estrutura de Seleção Quando a ação a ser executada depender de uma inspeção ou teste, tem-se uma seleção simples ou composta 331 Estrutura de Seleção simples Se a condição for verdadeira será executado o comando A se (condição) então executa comandoa; -se 332 Estrutura de Seleção Composta Se a condição for verdadeira será executado o comando A e se a condição for falsa será executado o comando B se (condição) então executa comandoa; executa comandob; -se Havendo necessidade de executar mais do que uma instrução, deve-se acrescentar as declarações de e para delimitar o grupo de comando a serem executados Exemplo: se (condição) então comando 1 ; comando n ; comando 1 ; comando n ; inteiro: A, B; A 1; B 2; se A > B então A 5;

A 10; -se; Ao seguir este algoritmo, o valor de A passará a ser, no final da execução, igual a 10 333 Expressões Lógicas e Relacionais aplicadas a estruturas de seleção A expressão: é equivalente a: se ( ( a < b ) and ( b < C ) ) comando; se ( a < b ) se ( b < c ) comando Isto é verdade se não for utilizada a declaração No exemplo, a seguir, a interpretação é feita de maneira diferente: não é o mesmo que: Para obter uma declaração equivalente deveríamos ter: se ( ( a < b ) and ( b < C ) ) comando1; se ( a < b ) se ( b < c ) comando1; se ( a < b ) se ( b < c ) comando1; 4 Estruturas de repetição ou iteração Existem três estruturas de repetição ou iteração: para faça; enquanto faça; repita até 41 Estrutura de repetição para faça Esta estrutura permite criar um ciclo de repetição controlado por uma variável, que assumirá todos os valores entre um valor inicial e um valor final, incrementando-se ou decrementando-se a si própria de um valor passo x para variável = valor inicial até valor final com passo x faça comandoa; -para 42 Estrutura de repetição enquanto faça Nesta estrutura, enquanto a condição permanecer verdadeira são executados os comandos A e B Quando a condição for falsa, sai do ciclo (sai do enquanto) e continua o programa Deve-se notar que, se a condição nunca for satisfeita, nunca serão executadas as declarações do ciclo enquanto <condição> faça comandoa; comandob; -enquanto 43 Estrutura de repetição repita até Nesta estrutura, as declarações A e B são executadas até que a condição seja satisfeita Neste caso, ao contrário da estrutura apresentada anteriormente, as declarações serão executadas pelo menos uma vez, devido à condição ser verificada somente no final repita comandoa; comandob; até <condição>; Exemplo: Pretende-se elaborar um programa que permita ler qualquer número a partir do teclado, e apresentar a indicação de que é positivo, negativo ou nulo Compreensão do problema: (dificuldade?)

Estudo dos dados de entrada: Estudo dos resultados de saída: Estudo das relações entre as entradas e saídas: Se Numero = 0, o Numero é nulo Se Numero > 0, o Numero é positivo; o Numero é negativo Como terminar o algoritmo? real num; escreva "Digite o número"; ler num; se num = 0 então escreva "O um número é nulo "; se num > 0 então escreva num, "é um número positivo"; escreva num, "é um número negativo; Exemplo: trecho utilizando enquanto faça e repitaaté I 1; enquanto I <= 18 faça A B +C; imprima (A); I I + 1; -enquanto; I 1; repita A B +C; imprima (A); I I + 1; até I < 18; Exercícios: 1) Dê o resultado para: a) n * 3 / 2, em que n = 5 b) i + n * 3-2, em que n = 32 e i = 25 c) k - 3 % 2 x 2, em que n = 10 d) n / 3 - (x * -2), em que n = 93 e x = 2 e) x / y + m / n, em que x = 25; y = 10; m = 3; n = 4 f) m * 3 / n, em que m = 35 e n = 0 2) Qual é a primeira operação executada em cada um dos comandos abaixo? a) X + Y - Z b) A + B / C ** 2 c) JOAO + JOSÉ/JOEL d) MARIA + JOÃO + BETE * JUNIA e) X + Y + B **2 + R * 3; f) A * B / C * D 3) Utilizando parêntesis, apresente a expressão equivalente a: a) x / y + m / n b) m + n + x + y c) x - y * m + y / n d) x mod y + x div 2 e) n + - 5 * x 1 f) m / n < x 4) Se A=127, B=10, C=5, D = falso e E = verdadeiro Qual é o valor produzido por cada uma das sentenças abaixo? a) não D b) D e E c) (A > B) ou ( B < C) d) não (A < B) e) ( D e E) ou (A = B) f) (D ou E) e ( A < B) g) A + B < C e D ou E e não D h) A + B * C/B = 3 e não ( A ou B) 5) Fazer algoritmos em PORTUGOL para encontrar a área das seguintes figuras geométricas - círculo: A= PI*r^2; - quadrado: A=L*L;

- trapézio: A=((B+b)*h)/2; - losango: A= (D*d)/2 - retângulo: A=b*h; - triangulo qualquer: A=raiz(p*(p-a)*(p-b)*(p-c)), p=soma de todos os lados/2; Identifique as variáveis que poderão ser informadas pelo usuário 6) Dado um conjunto de valores inteiros e positivos, digitados pelo usuário, fazer um algoritmo em PORTUGOL para determinar qual é o maior valor do conjunto O valor -1, quando digitado, indica dos dados e não deve ser considerado 7) Dado um conjunto de valores inteiros e positivos, digitados pelo usuário, fazer um algoritmo em PORTUGOL para determinar qual é o maior valor e o menor valor do conjunto O valor -1, quando digitado, indica dos dados e não deve ser considerado 8) Dados três valores A, B e C, fazer um algoritmo em PORTUGOL para verificar se eles podem ser valores dos lados de um triângulo e, se for, responder se é um triângulo qualquer, um triângulo equilátero ou um triângulo isósceles Condição para ser um triângulo: cada lado deve ser menor que a soma dos outros dois lados Se for triângulo e os três lados forem iguais, o triângulo é equilátero; se dois lados forem iguais o triângulo é isósceles; e se os três lados forem diferentes, será triângulo qualquer 9) Dado o algoritmo, abaixo, responda: lógico: B1, B2, B3; se B1 então comando1; se B2 então se B3 então comando3; comando4; -se; -se; comando5; -se; a) Se B1=verdadeiro, B2=verdadeiro, B3=falso, quais os comandos que serão executados? b) Se B1=falso, B2=verdadeiro, B3=falso, quais os comandos que serão executados? c) Quais os valores de B1, B2 e B3 para que somente o comando5 seja executado? d) Se B1=falso, B2=verdadeiro, B3=verdadeiro, quais os comandos serão executados? 10) Dado o algoritmo, abaixo, responda: início lógico: A, B, C; real: X, Y; inteiro: V, L; A falso; B verdadeiro; C falso; X 1,5; Y 3,2; X X+1; se C ou ((x+y >5) ou (não A e B)) então L 0; L 1; -se; Qual o valor de L após a execução deste algoritmo? 11) Considere as seguintes definições de operadores: a) div fornece o resultado da divisão inteira de duas variáveis inteiras Sendo A e B variáveis inteiras, se A=5, B=2, e C= A div B Qual é o valor de C? b) mod fornece o resto da divisão entre duas variáveis inteiras Sendo A e B variáveis inteiras Se A=16, B=6 e C= A mod B, qual será o valor de C?

12) Determinar os resultados que serão impressos depois de executado o algoritmo abaixo: inteiro: NUMERO, D1, D2, D3, D4; NUMERO 1352; D4 NUMERO mod 10; D3 (NUMERO DIV 10) mod 10; D2 (NUMERO DIV 100) mod 10; D1 (NUMERO DIV 1000) mod 10; imprima (D4, D3, D2, D1); Considerando o resultado impresso, responda: Para que serve este algoritmo? 13) O que está errado no algoritmo abaixo? inteiro: N, PAR, X; leia (N); X N mod 2; se X = 0 então PAR verdadeiro; PAR falso; -se; 14) O que será impresso depois de executado o algoritmo seguinte, se: a) NUM=10 b) NUM=0 c) NUM=-4 caracter QUALE; inteiro NUM; leia (NUM); {um dos valores acima} se NUM >0 então QUALE NUMERO POSITIVO; se NUM < 0 então QUALE NUMERO NEGATIVO QUALE ZERO ; -se -se imprima (QUALE); 15) Construir um algoritmo em PORTUGOL para fazer a soma de vários valores inteiros e positivos, fornecidos, pelo usuário, via teclado O último valor a ser lido será -1 16) Sendo H = 1 + ½ + 1/3 + ¼ + + 1/N, fazer um algoritmo em PORTUGOL para gerar o número H O número N deverá se fornecido, via teclado, pelo usuário 17) O valor aproximado do número π pode ser calculado usando-se a série: S=1-1/3³ + 1/5³ 1/7³ + 1/9³ -, sendo π = (S x 32)^(1/3) Faça um algoritmo em PORTUGOL que calcule e imprima o valor de π, usando os 51 primeiros termos da série dada 18) Fazer um algoritmo em PORTUGOL para calcular o valor de S, dado por: S= 1/N + 2/(N-1) + 3/(N-2) + + (N-1)/2 + N/1 N é fornecido pelo usuário, via teclado 19) A série de Fibonacci é formada pela sequência; 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,, etc Escreva um algoritmo em PORTUGOL que gere e imprima a série de Fibonacci até o vigésimo termo Referência: GUIMARÃES, A M Algoritmos e Estruturas de Dados Rio de Janeiro: LTC, 2008