Algoritmo e Programação Curso de Engenharia Informá9ca -‐ Nocturno
1º Ano / 1º Semestre Prof. Lufialuiso Sampaio Velho
Ano Lec9vo 2013
Objec&vos A disciplina de Algoritmo e Programação consiste em: • Permi9r o desenvolvimento do raciocínio lógico • Aprender as técnicas de resolução de problemas por meio de algoritmos • Criar e manipular estruturas de dados • Introduzir a u9lização de linguagens de alto nível • U9lizar os conhecimentos adquiridos durante as aulas para desenvolver programas de computadores.
Avaliação Os estudantes serão avaliados nas componentes prá9cas e teóricas: • Avaliações conTnuas • Prova parcelares • Exame final escrito • Projecto em grupo de duas (2) pessoas
Metodologia
• As aulas são ministradas de forma Teórica / Prá9ca
• Assuntos de interesse geral deverão ser tratados na sala de aula.
• Em questão de dúvidas, poderão u9lizar o endereço eletrônico:
Programa da Disciplina
1. Conceitos sobre a informá9ca • Definição e surgimento da Informá9ca • Computador: definição, funcionamento, gerações de computadores,
esquema de um computador, arquitectura, classificação dos computadores 2. Algoritmo • Conceito de Algoritmo • Técnicas de Resolução de problemas • Formas de representação dos Algoritmos • Tipos de Dados • Variáveis 3. Expressões • Operadores Aritmé9cos • Expressões Aritmé9cas • Precedências gerais dos operadores aritmé9cos
Programa da Disciplina
3. Expressões (cont) • Operadores Lógicos • Expressões Lógicas • Operadores Relacionais • Estrutura Condicional 4. Estruturas de Repe9ção • Definição e 9pos existentes • Importância das Estruturas de Repe9ção na construção de um Algoritmo 5. Estrutura de Dados • Variáveis compostas homogêneas Unidimensional e Mul9dimensional(Definição,
declaração e manipulação)
6. Projecto Final da Disciplina
Nota: Cada capítulo será acompanhado por um conjunto de Exercícios a serem resolvidos na sala de aula e/ou Tarefa para Casa
Bibliografia
Barbosa, LisbeteMadsen. Ensino de Algoritmos em cursos de Computação. Educ. 2001
Boente, Alfredo. Construindo Algoritmos Computacionais: Lógica de Programação. Rio de Janeiro: Basport, 2003
CORMEN, Thomas H (et al.). Algoritmos: Teoria e Prá9ca. Rio de Janeiro: Ed. Campus, 2002
FARBELLONE, André Luiz Villar,; ERBERSPACHER, Henri Freederico. Lógica de Programação: A construção de Algoritmo e Estrutura de Dados. São Paulo, Editora Pearson Fren9ce Hall, 2005
SOUZA, Marco António Furlan de. Algoritmos e Lógica de Programação. São Paulo: Thomson, 2005
CAP. I: Conceitos sobre a Informá&ca
• O Termo informá9ca foi criado pelo cien9sta francês Philips Dreyfus em 1962, com sendo resultado dos termos: Informação + Automá9ca
• Informá9ca é definida como a ciência que estuda
o tratamento automá9co da Informação tendo
como suporte o computador.
• Informação: define o conjunto de dados bem
estruturados que geram o conhecimento de um
determinado assunto ou temá9ca.
Ex: Conjunto de dados do B.I de um indivíduo
Automá9ca: define a forma de como a informação
é manipulada.
CAP. I: Conceitos sobre a Informá&ca
Dados consiste em factos ob9dos a par9r de uma observação, levantamento ou ocorrência.
Caracterís9cas da Informação • Intangibilidade (não possui existência psica) • U&lidade (deve corresponder aos objec9vos a a9ngir) • Codificação (Para receber a informação, o receptor deve conhecer o código em que foi transmi9da)
• Tempo (a informação pode variar dependendo do tempo)
CAP. I: Conceitos sobre a Informá&ca
Computador: é designado ao conjunto de disposi9vos electrônicos capazes de receber dados, processá-‐los de forma automá9ca e fornecer resultados.
COMPUTADOR = HARDWARE + SOFTWARE
Hardware: define a parte psica de um computador. Ex: Monitor, teclado, mouse, etc.
Sotware: Define a parte lógica de um computador. Ex: Sistema opera9vo, programas aplica9vos, etc.
Funções principais:
• Receber dados • Processar dados • Armazenar dados
• Mostrar resultado
CAP. I: Conceitos sobre a Informá&ca
Os sotwares são dis9nguidos em Sotware de Sistema e Sotware de Aplicação.
Sotware de Sistema: é o elo de ligação entre o homem e o computador. Isto é, todo o programa que permite dar vida ao computador. Ex: Sistema Opera9vo. Sotware de Aplicação: é todo o programa que facilita a realização das nossas tarefas. Ex: Office, programas de jogos, Autocad, windows media player, etc.
Para podermos u9lizar os sotwares de aplicação, é necessário a existência de um sistema opera9vo instalado no computador. Caso contrário, consis9rá em uma simples máquina que não sa9sfaz as nossas necessidades. Sistema Opera9vo: é todo o programa que efectua a gestão de todas as tarefas a serem executadas no computador bem como a gestão de recursos (drive de CD, Impressora, etc). São exemplos de sistemas opera9vos: Windows Vista, Windows 8, Mac OS x , Linux (Ubuntu, Xubuntu, Fedora), etc.
CAP. I: Conceitos sobre a Informá&ca Arquitectura do Computador
Define a estrutura de um computador, bem como a interação entre os elementos que o cons9tuem para obter o resultado desejado.
A Arquitectura a ser estudada é denominada Arquitectura de Von Neumann. É representada pelos periféricos de Entrada, Saída, Memórias e a Unidade Central de Processamento.
Ver a figura abaixo:
Fig.1 – Arquitectura de Von Neumann
CAP. I: Conceitos sobre a Informá&ca Arquitectura do Computador
Periférico de Entrada: é todo o disposi9vo que permite a inserção de dados no computador. Ex: Teclado, leitor de código de barras, rato, Scanner, etc.
Periférico de Saída: é todo o disposi9vo que permite a visualização da informação após o seu processamento.
Periférico de E/S: permitem a comunicação entre o homem e o computador ou vice-‐versa. Ex: Pendrives, disco rígido, drive de CD, drive de disquete, etc.
CPU (Unidade Central de Processamento): É considerado como o cérebro do computador, pois é nela em que os dados são manipulados e os cálculos são feitos. É cons9tuída por dois (2) componentes principais: Unidade de Controlo (UC) e a Unidade Aritmé9ca e Lógica (ULA). A unidade de Controlo, carrega as instruções na Memória principal, interpreta e executa e a ULA é responsável pela execução de cálculos aritmé9cos e Lógicos. Memória: são disposi9vos capazes de armazenar dados e/ou instruções.
CAP. I: Conceitos sobre a Informá&ca
Funcionamento
Primeiramente quando ligamos o computador, é carregado o sotware de inicialização (Boot), que verifica o estado de cada hardware e se está pronto para ser usado. A seguir, é carregado o sistema opera9vo junto com outros os programas que entram em execução logo que o computador é ligado. É necessário ter em conta que toda a informação que circula no computador não é passada com a nossa linguagem (natural), mas sim um conjunto de códigos binários denominados bits (menor unidade de representação da informação no computador). Quando digitamos uma letra apar9r do teclado, na verdade esta letra passa por uma conversão e só assim é que ela é manipulada. Após o envio de um comando (qualquer acção feita pelo disposi9vo de entrada), o processador interpreta este comando (responsabilidade da U.C), e carrega as instruções con9das na memória primária para a sua execução. Caso seja necessário efectuar algum cálculo lógico ou aritmé9co, a U.C trata de encaminhar para a ULA para serem executados. Só após toda a operação de processamento dos dados e execução de instruções é que são a9vados os sinais de saída para podemos obter o resultado desejado.
CAP. I: Conceitos sobre a Informá&ca Gerações de Computadores
Tudo começou com a necessidade do ser humano efectuar cálculos, sendo que a contagem com os dedos, pedras e paus tornaram-‐se insuficiente para a9ngir os melhores êxitos nas suas ac9vidades. Foi a par9r desta fase que surgiu o Ábaco inventado pelos Chineses a aproximadamente 1.000 a.c (placa de madeira com arames e pequenas pedrinhas que podiam ser movidas) para auxiliar nas operações aritmé9cas. Já em 1612, foi desenvolvida a primeira calculadora portá9l por John Napierque se chamou Ossos de Napier que eram cons9tuidos por um conjunto de bastões para realizar as mul9plicações por meio de adições.
Fig.2 – Ábaco
Fig.3 – Ossos de Napier
CAP. I: Conceitos sobre a Informá&ca Gerações de Computadores
Em 1642, o matemá9co Blaise Pascal criou uma máquina calculadora mecânica que efectuava as operações de adição e subtração denominada Pascaline, com o intuito de ajudar nos negócios do seu pai. Para o caso das mul9plicações e divisões, efectuava somas e subtrações sucessivas.
Em 1801 na França, Joseph Jacquard criou uma máquina de tear que usava cartões perfurados onde con9nha a configuração dos modelos de tecidos a serem produzidos, com intuito de subs9tuir o trabalho humano.
Fig.1.4 – Somador Pascaline
Fig. 1.5 – Tear de Jacquard
CAP. I: Conceitos sobre a Informá&ca Gerações de Computadores
Já em 1822, Charles Babbage começa a projectar uma máquina a vapor programável denominada máquina de diferenças que efectuava apenas adições; após 10 anos, Babbage pensou em criar uma máquina que pudesse realizar qualquer 9po de cálculo tendo como principio básico a programação, foi denominada como máquina analí9ca.
Esta máquina seria alimentada por cartões, usando o conceito de cartões perfurados de Jacquard mas para armazenar instruções e dados. Ela não foi concluída por descrédito dos seus financiadores, mas a sua colaboradora Ada King (Ada Lovelace) propôs programas e ainda técnicas de programação para a referida máquina. Ada Lovelacetornou-‐se a primeira programadora do mundo e Charles Babbage como o pai da Computação. Fig. 1.6 – Máquina de diferenças de Babbage
CAP. I: Conceitos sobre a Informá&ca
Gerações de Computadores
Em 1890, o norte americano Hermann Hollerith projectou um tabulador electromecânico, que processava automa9camente os cartões perfurados que era um instrumento essencial para entrada de dados; originando assim o nome de processamento de dados.
Cartões perfurados: cartão de papel perfurado em código BCD (BinaryCoded Decimal), era usado para recolha de dados no censo de 1890 nos EUA.
Fig. 1.7 – Tabulador de Hollerith
Fig. 1.8 – Cartões perfurados de Hollerith
CAP. I: Conceitos sobre a Informá&ca
1ª Geração de Computadores
Z1 de Konrad Zuseprojectado em 1936 a par9r de relés, executavam os cálculos e dados lidos em fitas perfuradas. Tornou-‐se assim no primeiro computador electro-‐mecânico. Em 1944 Howard Aikenconcebeu o computador eletromecânico Harvard Mark 1, que funcionava sem o conceito de programa armazenado ou seja para que o programa fosse executado, era necessário carregá-‐lo a par9r de uma fita perfurada e as instruções eram executadas durante a leitura da fita.
Em 1946 é apresentado o ENIAC (ElectronicNumericIntegratorandCalculator ) cujo o desenvolvimento foi liderado por John Mauchly e J. PresperEckert, era cons9tuído por 18 mil válvulas, pesava 30 toneladas, possuía uma memória pequena e os programas eram configurados por cabos. John Von Neumann juntou-‐se a equipa do ENIAC após ter proposto o conceito de programa armazenado, ou seja as instruções e os dados deviam ser armazenados segundo uma única representação este conceito foi denominado por Arquitectura de Von Neumann e implementado no computador EDVAC (ElectronicDiscreteVariableComputer)
CAP. I: Conceitos sobre a Informá&ca
COMPUTADORES DA 1ª GERAÇÃO (1940 -‐ 1955)
Construídos a base de Válvulas electrônicas Aplicações nos campos cienTfico e militar Linguagem Máquina Uso restrito Cartões perfurados e fitas de papel como memória Grande consumo de energia Elevado peso e processamento na ordem dos milissegundos Grandes problemas de aquecimento Necessidade de reprogramação para cada tarefa a executar
Fig. 1.9 – ENIAC
Fig. 1.8 – MARK 1
Fig. 1.10 – Válvula electrônica
CAP. I: Conceitos sobre a Informá&ca
2ª Geração de Computadores
Com o surgimento do transistor em 1947, reduziu significa9vamente as dificuldades apresentadas pelas válvulas electrônicas. A velocidade de processamento passou a ser medida em microssegundos, e surgiram as linguagens de programação de alto nível como a FORTRAN e o COBOL. Primeiro computador transistorizado foi o TX-‐0, construido no Massachuse�s Ins9tuteofTecnology em 1957. Posteriormente a IBM criou o primeiro modelo comercial denominado IBM 1401, mais barato e bastante rápido. Em 1964 a CDC (Control Data Corpora9ion) criou um Supercomputador denominado CDC – 6600 que permi9a descarregar o processamento da CPU pelo uso de pequenos computadores auxiliares que tratavam da entrada e saída de dados, bem como o gerenciamento de tarefas de forma paralela.
CAP. I: Conceitos sobre a Informá&ca
COMPUTADORES DA 2ª GERAÇÃO (1955 -‐ 1963)
Subs9tuição de válvulas pelo transistor
Ocupavam menos espaço e consome menos energia
Construção de computadores mais baratos, mais potentes e mais fiáveis
Uso do conceito sobre memória auxiliar (fitas magné9cas e discos magné9cos)
Uso das linguagens de programação de Alto nível (Cobol e Fortran)
Velocidade de processamento na ordem dos Microssegundos
Fig. 1.10 – TRANSISTOR
CAP. I: Conceitos sobre a Informá&ca
3ª Geração de Computadores
A principal caracterís9ca desta geração é o uso dos Circuitos Integrados criado em 1958 por Robert Noyce. O Circuito Integrado é cons9tuído por dezenas de Transistores, que executam desde funções lógicas simples até as funções mais complexas. Reduziu bastante o espaço, baixou o consumo de energia, e reduziu a velocidade de processamento para nanossegundos. • IBM 360 é um exemplo de computadores desta geração.
COMPUTADORES DA 3ª GERAÇÃO (1963 -‐ 1970)
Subs9tuição dos transistores por Circuitos integrados
Velocidade de Processamento em nanossegundos
Generalização das linguagens de alto-‐nível
Sistemas opera9vos mul9-‐u9lizadores
Invenção do Mouse (rato em 1963 por Douglas Engelbart)
Fig. 1.10 – CIRCUITO INTEGRADO
CAP. I: Conceitos sobre a Informá&ca
COMPUTADORES DA 4ª GERAÇÃO (1971 -‐ 1990)
Esta geração é marcada pelos microprocessadores. Um Microprocessador consiste em um disposi9vo electrônico encapsulado em um chip que possui internamente uma Unidade de controlo, uma unidade lógico-‐aritmé9ca e uma memória interna.
Primeiro Microprocessador que surgiu foi o Intel 4004 desenvolvido para uma empresa de calculadoras. Já em 1981, a IBM decidiu inves9r em microprocessadores lançando assim o IBM –PC baseado no processador Intel 8088 com 16 KB de memória RAM.
CARACTERÍSTICAS
Computadores com Chips VLSI (Aperfeiçoamento dos Circuitos Integrados)
Miniaturização de componentes
Velocidade de Processamento em picossegundos
Baixa de preços
CAP. I: Conceitos sobre a Informá&ca
COMPUTADORES DA 5ª GERAÇÃO (1991 – até hoje)
A 5ª Geração de Computadores é marcada pela u9lização dos Circuitos Integrados em grande escala de Integração. Isto implica a integração de elevados circuitos electrónicos na ordem dos 100.000 à 1.000.000 de transistores. Os computadores que u9lizamos hoje ainda podemos enquadrá-‐los na 5ª geração.
CARACTERÍSTICAS
Aumento da capacidade de processamento de dados, armazenamento e transferência
Miniaturização de componentes
Processamento paralelo (várias operações a serem executadas ao mesmo tempo)
Baixa de preços
CAP. I: Conceitos sobre a Informá&ca
CLASSIFICAÇÃO DOS COMPUTADORES
Os computadores podem ser classificados quanto a sua função que exercem ou pelas suas dimensões (porte). Quanto as suas funções: Servidores: são computadores que servem as redes de computadores. Disponibilizam inúmeros serviços, como por exemplo: internet, base de dados, ficheiros, impressoras, etc. Consola de vídeo games: prove ao u9lizador um ambiente de entretenimento (jogos). Sistemas Embarcados: são disposi9vos que incorporam um computador no seu interior para realizar uma tarefa específica. Ex: Computadores de bordo de um automóvel Quanto ao porte: Grande porte: supercomputadores e mainframes. Supercomputadores, são bastante rápidos, potentes capazes de processar informações na ordem dos Bilhões de instruções por segundo. Mainframes, processam grandes quan9dades de informação, sendo bastante usados pelos bancos, companhias de seguro e aéreas, na internet, etc.
Fig. 1.11 – Mainframe
CAP. I: Conceitos sobre a Informá&ca
CLASSIFICAÇÃO DOS COMPUTADORES
Médio Porte: Denominadas estações de trabalho, correspondem aos computadores com grande capacidade de processamento, e em alguns casos permitem o ambiente mul9 u9lizador. Os também denominados mini computadores, são menores que os mainframes, e maiores em relação aos computadores pessoais.
Onde são u&lizados? Hoje em dia, os minicomputadores são geral-‐ mente u9lizados como servidores nas redes de Computadores.
Fig. 1.12 – Worksa&ons
CAP. I: Conceitos sobre a Informá&ca
CLASSIFICAÇÃO DOS COMPUTADORES
Pequeno porte: Computadores de uso pessoal. Ex: Desktop, laptop, tablet.
São os computadores que u9lizamos no nosso dia à dia, quer os que se mantém em nossas casas, bem como os que usamos em qualquer parte (laptops, tablets).
CAPÍTULO II ALGORITMO
Ano Lec9vo 2013
Algoritmo
Definição Sequência finita de passos que visam a atingir um objectivo específico.
Conjunto de passos com uma determinada ordem, que nos permitem resolver um problema. Para a solução de qualquer problema computacional ou não, é necessário recorrer a técnica de algoritmo pelo facto de permitir extrair deste o conjunto de detalhes envolvidos, e encontrar a melhor solução para o devido problema. É importante saber que o computador não compreende a linguagem humana; então os programas quando são construídos, geralmente utiliza-se uma linguagem de alto nível (JAVA, C, C++, PASCAL) e posteriormente convertidos para linguagem máquina (zeros e uns) por intermédio de um compilador (programa que converte um programa de alto para baixo nível). Exemplos de algoritmos: receita de bolo, passos para trocar o pneu de um carro, passos para ligar um computador, passos para levantar dinheiro de um Multicaixa, etc.
Algoritmo
Um algoritmo actua sobre um conjunto de entradas(ingredientes no caso do bolo), procedimentos para manipulação das entradas (preparação do bolo) de formas a gerar uma saída benéfica para o utilizador (bolo pronto). os algoritmos uma vez concebidos, podem ser traduzidos para qualquer linguagem de programação (processo de codificação), ou seja precisamos projectar apenas uma vez e escrever para qualquer linguagem. Exemplo: a forma como cozinhamos o arroz, pode ser traduzida para o inglês, o francês, etc, tornando-se compreensível caso utilizamos as regras das respectivas línguas (sintaxe). Veja abaixo as etapas de um algoritmo
CAP. II
Fig. 2.1 – Fases de um Algoritmo
Algoritmo
CARACTERÍSTICAS
Todo algoritmo tem as seguintes caracterís9cas principais: Finitude: deve possuir um número finito de passos.
Definição: as acções devem ser definidas de forma rigorosa e sem ambiguidades Entradas: um algoritmo deve ter zero ou mais entradas isto é, as quan9dades que lhe são fornecidas antes do seu início. Saídas: um algoritmo deve ter uma ou mais saídas, isto é, quan9dades relacionadas com as entradas. Efec9vidade: as operações devem ser alcançáveis em um tempo finito.
Eficácia: Deve resolver o problema proposto Livre de linguagem: a construção de um algoritmo não depende de uma linguagem específica, mas o contrário é válido.
Algoritmo
Exemplo: Algoritmo para tomar banho
1º Entre em baixo do chuveiro. 2º Ligue a água.
3º Pegue o champô e esfregue no cabelo. 4º Molhe os cabelo.
5º Pegue o sabonete e esfregue por todo o corpo. 6º Molhe o corpo.
7º Desligue o chuveiro. 8º Pegue uma toalha.
9º Enxugue o cabelo e o corpo.
Algoritmo RESOLUÇÃO DE PROBLEMAS
Acabamos por definir o conceito sobre algoritmos, agora sabemos que é o meio que possuímos para resolver problemas quer computacionais ou não. Mas como podemos analisar um problema e chegar ao resultado exacto? Precisamos de antemão:
Compreender o problema: geralmente o problema é proposto por um enunciado, ou seja um texto que explica o problema e fornece detalhes para a solução. Nesta podemos nos ques9onar: O que pede o problema?; Quais são as condições do problema? Existe alguma informação para descobrir ou cálculo a efectuar?
Elabore uma estratégia de resolução: Encontre conexões entre os dados, use teoremas ou formulas para ajudar, verifique se está a levar em conta todos os dados e condições.
Execute a estratégia: nesta fase é posta em prá9ca todas as estratégias elaboradas para a resolução do problema.
Revise: Examine a solução ob9da a par9r do resultado ob9do executando o teste de mesa.
Algoritmo Exercícios
1. Crie um algoritmo que recebe dois números inteiros, fornece o resultado da soma dos mesmos.
2. Três músicos: Damião, Paulino e Emanuel, tocam guitarra, bateria e baixo. Contudo, não se sabe quem toca o quê. Sabe-‐se que o Damião não é o baixista. Que Paulino ensaia com o guitarrista às Quintas. E que o baixista ensaia sempre sozinho às Terças. Quem toca cada um dos instrumentos?
3. Um comboio parte de Luanda a uma velocidade de 120 Km/h em direcção a Malange, ao mesmo tempo em que outro comboio parte de Malange a uma velocidade de 80km/h em direcção a Luanda. Quando os comboios se encontram, qual deles está mais próximo de Luanda? Aquele que parte de Luanda ou o que parte de Malange?
Formas de Representação de um Algoritmo
Um algoritmo pode ser representado em três (3) formas principais: Descrição Narra9va, Fluxograma e Pseudocódigo (Portugol).
Descrição Narra&va: Representa-‐se pela descrição de uma sequência de passos em nossa língua natural (português). Este método ajuda a compreender e organizar as etapas necessária para resolver um problema; mas esta técnica não é compreendida pelo computador, pois não compreende a linguagem humana. Sendo assim, é importante construir os algoritmos em uma linguagem de programação específica; normalmente o Pseudocódigo.
Regras de construção
• U9lizar somente um verbo em cada frase
• Construir o algoritmo numa visão para leigos em informá9ca
• U9lizar frases curtas e simples
• Ser objec9vo • Não u9lizar palavras que tenham mais do que um sen9do de compreensão
Exemplos de algoritmo em Descrição Narra&va SOLUÇÃO
1. Crie um algoritmo que recebe dois números inteiros, fornece o resultado da soma dos mesmos.
Algor9mo “soma de dois numeros”
Entrada: dois numeros Inicio
Receber primeiro numero
Receber segundo numero
Somar primeiro e segundo numero
Saída: Mostrar resultado da soma
Fim do algoritmo
SOLUÇÃO
2. Três músicos: Damião, Paulino e Emanuel, tocam guitarra, bateria e baixo. Contudo, não se sabe quem toca o quê. Sabe-‐se que o Damião não é o baixista. Que Paulino ensaia com o guitarrista às Quintas. E que o baixista ensaia sempre sozinho às Terças. Quem toca cada um dos instrumentos?
Algoritmo “instrumento do musico” Entrada: tresmusicos tres instrumentos Inicio Excluir o Damião do baixo Excluir o Paulino da guitarra Excluir o Paulino do Baixo Associar Damião a Guitarra Associar Emanuel ao Baixo Associar Paulino a Bateria Saída: Mostrar resultado da associacao Fim do algoritmo
Exemplos de algoritmo em Descrição Narra&va
Formas de Representação de um Algoritmo
Fluxograma: Representa-‐se por símbolos gráficos predefinidos, que ilustram os passos individuais e suas interligações até chegar a solução do problema; é como se es9vesse a juntar um quebra cabeças. As instruções a serem executadas são colocadas no interior de cada figura.
Modo de representação
Indica o início ou fim do algoritmo
Processamento de dados ou execução de operações
Entrada de dados
Saída de dados
Exemplos de algoritmo em Fluxograma
1. Crie um algoritmo que recebe dois números inteiros, fornece o resultado da soma dos mesmos.
SOLUÇÃO inicio
Primeiro numero
Segundo numero
Primeiro + Segundo Primeiro + Segundo fim
Nota: Na saída o resultado é representado novamente (Primeiro + Segundo) para ilustrar o conteúdo que sairá no ecrã. O uso de variáveis simplifica esta operação. Ver nas próximas aulas.
Exemplos de algoritmo em Fluxograma
1. Crie um algoritmo para tomar banho no chuveiro. SOLUÇÃO
inicio
Entrar no chuveiro
Ligar a água Pegar no champô e esfregar na cabeça Molhar o cabelo
Pegar no sabonete e esfregar no corpo Molhar o corpo
Desligar o chuveiro Pegar na toalha e enxugar o corpo e o cabelo
fim
Formas de Representação de um Algoritmo
Pseudocódigo (Portugol): u9liza palavras escolhidas e bem definidas. É um método bastante aproximado a uma linguagem de programação de alto nível. As instruções escritas em Pseudocódigo, são facilmente traduzidas em outras linguagens, desde a definição dos 9pos de dados, instruções de repe9ção, selecção, etc, para além do facto destas serem escritas em português. Mas, é importante aprender as regras de representação para cada instrução (Sintaxe).
Regras de representação
programa <nome_do_programa>
declaracoes<definicoes_de_constantes>
<declaracoes_de_variaveis>
Inicio
<instrucoes_do_programa>
fim
Formas de Representação de um Algoritmo
Representação de instruções principais
Entrada de dados: u9lize a instrução leia(). No interior do parênteses são postos os elementos que deseja de entrada do algoritmo. Por ex: uma variável. Saída de dados: u9lize a instrução escreva (). No interior do parênteses são postos os elementos que deseja mostrar. Por ex: um resultado.
Exemplo 1:
Crie um algoritmo que imprima na tela a seguinte mensagem: “Ola, este é o meu primeiro programa”
Solução
programa “imprime_mensagem”
Inicio
Escreva(“Ola, este é o meu primeiro programa”)
fim
Crie um algoritmo que recebe três notas de um aluno (p1,p2,p3) e calcula a média
final deste aluno.
Resolução
Algoritmo “media do aluno” var P1,p2,p3:inteiro media:real Inicio Escreva(“digite a primeira nota”) Leia(p1) Escreva(“digite a segunda nota”) Leia(p2) Escreva(“digite a terceira nota”) Leia(p3) media<-‐(p1+p2+p3)/3 Escreva(“A media final do aluno e”,media)
Fim do algoritmo
Exemplos de algoritmo em Pseudocódigo
Formas de Representação de um Algoritmo
Conceitos a ter em conta na criação dos algoritmos em Pseudocódigo
Sintaxe: define o conjunto de regras grama9cais de formação de sentenças válidas ou grama9calmente correctas segundo determinada linguagem. Ex: No português não deve escrever a palavra Programação como Programacao.
Neste caso existe um erro de sintaxe.
Semân&ca: indica a associação das sentenças, permi9ndo a sua correcta interpretação. Ex: Belo Angola é país um.
Neste caso, em termos de sintaxe está correcto mas não se consegue interpretar a frase pois os termos não estão enquadrados apropriadamente. Considera-‐se um erro de semân9ca. Com base nas definições, conclui-‐se que a sintaxe expressa as regras que devem ser obedecidas para a9ngir determinado resultado e a semân9ca representa o conteúdo das palavras da linguagens, permi9ndo assim uma interpretação correcta do escrito com determinada linguagem.
Tipos de Dados
Para que o computador consiga armazenar ou manipular um dado, necessita saber o seu 9po. Sendo assim, um 9po de dado define o 9po de informação que entra e sai do computador. Os 9pos de dados podem ser: inteiro, real, literal ou caracter, booleano
Tipo de dado Inteiro: envolve o conjunto de números inteiros posi9vos e nega9vos.
Ex: -‐1, 3, 10, 12, -‐50.
Tipo de dado Real: envolve o conjunto de números decimais ou fraccionários posi9vos e nega9vos. Ex: 0.5, -‐1.3, -‐11.3, 12.4.
Todo o 9po de dado real possui envolvido um valor inteiro; ou seja os inteiros são subconjuntos dos números reias.
Tipo de dado Literal: representa uma sequência de caracteres com letras, dígitos, ou ainda símblos especiais. São também denominados por Strings(cadeia de caracteres) Ex: “Ernesto”, “Rua da Brigada 2”, “Talatona”, etc.
Dentro destes existe igualmente o 9po Caractere que permite armazenar apenas um caractere (uma letra, um símbolo, ou um dígito). Ex: ‘M’, ‘2’, ‘F’
Tipo Lógico (Booleano): é representado por dois valores principais (Verdadeiro (V) e Falso (F))
CAP. II
Tipos de Dados
Quando u9lizar um ou outro 9po de dado?
Imagine que precisas armazenar os dados de uma pessoa: Nome, idade, morada, sexo, altura, e precisa saber se esta é ou não casada?
Sugestão:
Nome da pessoa -‐> Literal
Idade -‐> Inteiro
Morada -‐> Literal
Sexo-‐> caractere
Altura-‐> Real, pois possui a parte inteira e faccionária. Ex: 1,70 cm
A condição de ser casado ou não dará sempre em V ou F; então u9lize o lógico
CAP. II
Variáveis
Uma variável corresponde a uma posição de memória por onde guardamos os dados, cujo conteúdo pode mudar ao longo da execução do programa. Toda variável tem um nome que é conhecido como iden&ficador.
É importante saber que quando ocorre uma alteração do valor con9do na variável, o valor armazenado anteriormente é perdido na mémória. Isto é, supondo que tenho o nome Sampaio armazenado em memória; se por algum mo9vo eu alterar o nome Sampaio para Lufialuiso, o nome anterior é eliminado da memória e subs9tuido pelo novo.
CAP. II
Necessidade da u&lização de variáveis Vamos supor que queremos fazer um programa que solicita para um u9lizador digitar a sua idade e exibe a este quantos anos faltam para ele a9ngir 100 anos de idade. Precisaremos armazenar a idade do u9lizador para depois realizar o cálculo 100 -‐ idade_u9lizador e depois armazenar também o resultado.
Usando a ideologia acima que a variável é um espaço na memória em que armazenamos os dados, seria necessário dizer o endereço que o mesmo está localizado. Neste contexto, em programação é usado o conceito de variável para representar o apelido do endereço.
Variáveis
Regras de uso e declaração de variáveis
Toda a variável deve ser declarada antes de ser usada (inclui o seu 9po e o iden9ficador); Toda a variável deve ter sempre um 9po de dado associado
O primeiro caractere deve ser uma letra; Uma variável deve ter sempre um valor inicial antes de ser usada;
Nome de variáveis escritas com letras maiúsculas serão diferentes de letras minúsculas (case sensi9ve);
Nenhuma palavra reservada à ferramenta (COMPILADOR) poderá ser usada como nome da variável;
U9lize nomes representa9vos para dar uma visão do conteúdo con9do nela; Se haver mais de um caractere, este só poderá ser: letra ou algarismo; O nome de uma variável não deve conter caracteres especiais, com excepção do underline (_).
CAP. II
• São exemplo de variáveis os seguintes: Nome, aluno1, nome_completo, a, b, idade • Não representam identificadores válidos os seguintes: ~nome, 1aluno, nome?completo, idade-pessoa, filhação
Variáveis
Regra de u&lização das variáveis
Atribuição: é um termo u9lizado para atribuir um valor a uma variável, ou seja armazenar um determinado conteúdo em uma variável.
Esta operação é representada em Pseudocódigo por uma seta apontando para a esquerda, onde a direita fica o valor a ser atribuído e a esquerda a variável a receber o valor.
Ex: variável <-‐ constante variável <-‐ variável
Variável <-‐ expressão Para cada um dos casos lê-‐se: variável recebe constante (idem para os outros subs9tuindo o que está a ser atribuído)
CAP. II
Variáveis
Regra de declaração de variável
<nome_do_9po> <nome_da_variavel>; <nome_da_variavel> :<nome_do_9po> ou <nome_do_9po> <nome_da_variavel>, ... , <nome_da_variavel>;
<nome_da_variavel>, ... , <nome_da_variavel>: <nome_do_9po>
Ex: inteiro idade -‐> inteiro representa o 9po de dado e idade representa o nome da variável Ano_nascimento : inteiro -‐> Ano nascimento é a variável e o inteiro é o 9po de dado real peso -‐> real representa o 9po de dado e peso representa o nome da variável
O modo de declaração de variável pode variar de acordo com a linguagem de programação a ser u9lizada ou o compilador em causa. Para algoritmos, usando o compilador VISUAL G, a declaração é feita da seguinte maneira: idade: inteiro Isto quer dizer, que a SINTAXE (Regra de escrita) do compilador define a declaração de variável deste modo.
CAP. II
Variáveis
Exercício
Faça um algoritmo que recebe três notas de um aluno e calcula a média das notas.
Solução 1-‐ Compreenda o problema e elabore a estratégia de resolução Questão: O que o problema pede? Preciso de alguma variável para resolver este problema; se sim, que 9po de dado vou armazenar nestas variáveis? O resultado de que 9po será? De que modo vou representar o algoritmo? Fluxograma ou Pseudocódigo?
2-‐ Execute a estratégia.
CAP. II
Variáveis
Solução do exercício u9lizando pseudocódigo:
algoritmo “media_de_tres_notas” Var nota1, nota2, nota3: real media : real Inicio escreva (“Digite as tres notas do aluno”) leia (nota1) leia (nota2) leia (nota3) media<-‐(nota1+nota2+nota3)/3 escreva (“A média do aluno corresponde a ”, media) fimalgoritmo
CAP. II
Constantes
Uma constante é um valor fixo que não é alterado durante o tempo ou durante a execução do algoritmo.
Ex1: 5, 2.4, “OLA”, V.
Nota: A constante V con9da no exemplo é do 9po lógico.
Ex2: escreva(“estás a aprender”) -‐> o frase con9da no parênteses determina uma constante.
Para diferenciar os dados constantes do 9po Caractere dos outros 9pos de dados, usa-‐se aspas (“ ”) para delimitá-‐los; e os dados do 9po lógico u9lizam as constantes V -‐> Verdadeiro e F -‐> Falso.
Possuem um nome único para a sua iden9ficação (iden9ficador)
Recomenda-‐se o uso de nomes suges9vos. Ex: pi=3.1415 , sexo=“feminino”
As regras para a declaração de constantes são as mesmas usadas para as variáveis
CAP. II
Constantes
Declaração de constantes
Sintaxe: const <nome_da_constante> = valor
Const – é uma palavra reservada, usada sempre que declarar uma constante.
nome_da_constante – iden9ficador da constante Valor – valor fixo atribuído a constante.
Ex: const pi=3,1415
morada=“Sambizanga”
CAP. II
Operadores e Expressões aritmé&cas
CAP. II
São denominados operadores aritmé9cos os seguintes elementos:
OPERADOR DENOMINAÇÃO PRIORIDADE DE EXECUÇÃO (os com maior prioridade são os primeiros a serem executados)
+ Adição 1
-‐ Subtracção 1
* Mul9plicação 2
/ Divisão 2
DIV Divisão inteira 2
MOD ou % Resto da divisão inteira 2
** ou ^ Potenciação 3
As expressões aritmé9cas são expressões cujos operadores são aritmé9cos e os operandos são variáveis ou constantes do 9po inteiro ou real.
Ex: 3+3/2 , X+Y, 2*K Nota: Caso a prioridade for igual, a expressão aritmé9ca é resolvida da esquerda para a direita.
Operadores lógicos e relacionais
CAP. II
São denominados operadores lógicos os seguintes elementos:
Operador Tipo PRIORIDADE DE EXECUÇÃO (os com maior prioridade são os primeiros a serem executados)
OU Binário 1
E Binário 2
NÃO Unário 3
As expressões lógicas são cons9tuídas por operadores lógicos e variáveis ou constantes do 9po lógico originando resultados do 9po verdadeiro ou falso.
Nota: U9lizando os operadores lógicos é necessário saber que: uma expressão A E B só será verdadeira se A for Verdadeira e B for Verdadeira. Caso contrário será falsa Uma expressão A OU B será verdadeira caso pelo menos uma delas (A OU B) forem verdadeiras.
Operadores Relacionais
CAP. II
São denominados operadores os seguintes elementos:
O Resultado ob9do numa relação é sempre um valor lógico ( V ou F). Ex: A+B=C, é uma expressão que será verdadeira ou falsa a medida em que o resultado da expressão aritmé9ca for igual ao conteúdo de C.
Operador Função
= Igual
> Maior que
< Menor que
>= Maior ou igual
<= Menor ou igual
< > Diferente de
CAPÍTULO III Estruturas de Selecção
Ano Lec9vo 2013
Estrutura de Selecção (Condicional)
A estrutura de selecção permite a execução de instruções caso determinadas condições, representadas por expressões lógicas ou relacionais, são ou não verdadeiras. Existem as seguintes estruturas de selecção:
Estrutura de Selecção Simples
Estrutura de Selecção Composta
Estrutura de Selecção encadeada Escolha múl9pla
Estrutura de Selecção Simples: É u9lizada quando necessitamos executar uma ou várias ins-‐ truções caso uma condição seja sa9sfeita. Esta estrutura não executa nada caso a condição seja falsa. Sintaxe: Se <condição> entao Instrução fimse;
SIM
NÃO
Representação gráfica de uma estrutura condicional (Fluxograma):
CAP. III
Estrutura de Selecção
CAP. III
Ex: Faça um algoritmo que verifica se um dado número é par? Resolva u9lizando Fluxograma e Pseudocódigo. Solução usando Fluxograma:
Estrutura de Selecção
CAP. III
Ex: Faça um algoritmo que verifica se um dado número é par? Resolva u9lizando Fluxograma e Pseudocódigo. Solução usando Pseudocodigo:
algoritmo "numero par” var n:inteiro Inicio escreva("Insira um numero") leia (n) se (n mod 2=0) entao escreva (n," é par ") fimse fimalgoritmo
Estrutura de Selecção
CAP. III
Estrutura de Selecção Composta: permite a execução de duas alterna9vas a par9r de uma única condição; isto é suponha que um conjunto de acções dependa da avaliação verdadeira e apenas uma dependa de uma falsa? Usando o 9po de selecção Simples estudada anteriormente, isto não é possível. Mas vejamos como a composta funciona: Sintaxe:
se <condição> entao
<sequência de instruções>
senão
<instruções>
fimse;
Estrutura de Selecção
CAP. III
Ex: Crie um algoritmo que dado a idade de um indivíduo, determina se o mesmo é Jovem ou não. Admite que o indivíduo é Jovem caso a sua idade es9ver entre os 18 e 40 Anos. Solução em pseudocódigo
algoritmo "teste se é jovem"
var idade:inteiro inicio escreva("Digite a Idade do indivíduo") leia(idade) se ((idade>=18)E (idade<=40)) entao escreva("Este individuo é Jovem") senao escreva("O individuo não Jovem. Poderá ser um Adolescente ou Idoso") fimse
fimalgoritmo
Estrutura de Selecção
Estrutura de Selecção Encadeada: representa o agrupamento de várias selecções. Normalmente, é usada quando uma determinada ação ou bloco deve ser executado caso um grande conjunto de possibilidades forem sa9sfeitas.
Sintaxe:
se <condição> entao
se <condição> entao
<conjunto de instruções> fimse;
senao
<instrução>
fimse;
CAP. III
Estrutura de Selecção
Ex: Crie um algoritmo em que dado dois números inteiros, verifique se os dois são pares. Caso forem, adicione 2 ao maior. Caso forem ímpares some os dois números e imprima os resultados. Solucione u9lizando pseudocódigo
Solução
CAP. III
algoritmo "dois_pares” var n1:inteiro n2:inteiro
inicio escreva("Insira o primeiro numero") leia (n1) escreva("Insira o segundo numero") leia (n2)
se ((n1 mod 2=0) e (n2 mod 2=0)) entao se (n1>n2) entao n1<-‐n1+2 escreva ("O primeiro número é par e resulta em ", n1) senao n2<-‐n2+2 escreva ("O segundo número é par e resulta em ", n2) fimse senao escreva ("Condição para impares e a soma é ", n1+n2) fimse fimalgoritmo
Estrutura de Selecção
Selecção de múl&pla escolha: é u9lizada quando necessitamos testar um conjunto de valores, e quando acções diferentes são associadas a esses valores. Imagine que 9véssemos mais do que cinco (5) condições para serem testadas para executar determinadas acções; poderia-‐mos u9lizar várias selecções encadeadas. Mas não é prá9co.
Sintaxe:
escolha (expressão)
caso <hipótese 1>: <instrução1> caso <hipótese 2>: <instrução2>
caso <hipótese 3>: <instrução3>
caso contrário : <instrução n>
fimescolha
CAP. III
Estrutura de Selecção
Questões a levar em conta na Selecção de múl&pla escolha:
A expressão é avaliada, e o valor será comparado com cada uma das hipóteses. A opção caso contrário (outrocaso em outros compiladores) é opcional
A hipótese referida na sintaxe é definida como uma constante caractere, uma constante numérica, e em alguns casos literais
Esta estrutura, é amplamente u9lizada em algoritmos com menus (P.e: Calculadora)
Exemplo: Crie um algoritmo que simule a execução de uma máquina calculadora.
CAP. III
algoritmo ”calculadora” a,b:inteiro
soma,subtraccao, mul9plicacao:inteiro divisao:real op:caractere
inicio escreva ("Digite o primeiro numero") leia(a) escreva ("Digite o segundo numero")
leia(b) escreval ("Digite a operação que deseja: + (soma) -‐ (subtraccao) * (Mul9plicacao) / (Divisao)") leia(op) escolha (op)
caso "+" soma<-‐a+b escreva (soma)
caso "-‐" subtraccao<-‐a-‐b escreva (subtraccao) caso "*"
mul9plicacao<-‐ a*b escreva (mul9plicacao) caso "/"
divisao<-‐a/b escreva (divisao) outrocaso escreva ("Operacao inexistente")
fimescolha
fimalgoritmo CAP. III
CAPÍTULO IV Estruturas de Repe9ção
Ano Lec9vo 2013
Estruturas de Repe&ção
São estruturas que permitem a execução repe9da de um certo trecho do programa por um determinado número de vezes ou ainda enquanto uma certa condição mantém-‐se verdadeira. Existem três principais 9pos de estruturas de repe9ção:
enquanto repita para
As estruturas de repe9ção diferem-‐se pelo seu modo de funcionamento, algumas precisam que uma certa condição seja verdadeira para que execute o loop (laço de repe9ção), outras dependem do valor de uma variável de controlo para que execute as instruções.
Imagine que deseja mostrar a tabuada de um número inteiro qualquer. Até o momento, com o que foi aprendido, o ideal seria mul9plicar o número dado com cada número no intervalo de 1 à n. Isto quer dizer que teríamos n mul9plicações, o que não seria viável.
Sendo assim, aplica-‐se o conceito sobre laços de repe9ção para resolver casos similares.
CAP. IV
Estruturas de Repe&ção
Enquanto: é uma estrutura que efectua um teste condicional no início do laço e a execução do bloco de acções ou da acção necessita que a condição seja verdadeira. Quando a condição for falsa, as instruções não são executadas nenhuma vez.
Sintaxe (Pseudocódigo): Representação Fluxograma:
enquanto (condição) faca
/* instruções a serem executadas enquanto a condição for verdadeira*/
fimenquanto
CAP. IV
Estruturas de Repe&ção
Modo de funcionamento:
1. Na estrutura enquanto, o teste lógico permite controlar o número de repe9ções a serem realizadas pelo laço.
2. Ao executarmos o algoritmo, caso o resultado do teste lógico for verdadeiro, as instruções dentro do laço serão realizadas; quando o algoritmo encontra o “fimenquanto” (ou a bolinha do fluxograma) ele retorna para o teste lógico afim de avaliá-‐lo novamente para saber se deve repe9r mais uma vez.
3. Se o teste der verdadeiro, os comandos do laço são novamente executados, mas se der falso o algoritmo sai do laço e segue a sua execução realizando o próximo comando que es9ver após o “fimenquanto”.
CAP. IV
Estruturas de Repe&ção
Contadores e Somadores:
Em laços de repe9ção, necessitamos de contadores para contar o número de repe9ções a serem efectuadas, e de somadores para acumular os valores de entrada em uma única variável.
Imagine que deseja mostrar a soma dos 10 primeiros números naturais. Como vamos saber o número de vezes já repe9das? A resposta é u9lizando uma variável contadora que receberá um valor inicial (geralmente zero) e em cada repe9ção é incrementada em uma unidade através de uma atribuição (Ex: a<-‐a+1). Usando esta analogia, podemos dizer que incremento: é a acção de acrescentar uma unidade ao valor de uma variável; e decremento é a acção contrária. E como obter o total da soma dos números? Neste caso temos de u9lizar um acumulador para que em cada laço, acumule numa variável os valores que serão fornecidos(neste caso 1+2+3+.....10).
CAP. IV
Estruturas de Repe&ção
Ex: Crie um algoritmo que soma a quan9dade de números pares de 1 à 20.
Solução:
Algoritmo "soma_pares" var
soma:inteiro
cont:inteiro inicio
cont <-‐ 1 soma<-‐ 0
enquanto (cont<=20) faca
se (cont mod 2 = 0) entao soma<-‐ soma+cont
fimse cont<-‐ cont+1
fimenquanto
escreva ("A soma total é ", soma) fimalgoritmo
CAP. IV
CAP. IV
cont <- cont+1
soma:inteiro cont:inteiro
início
cont<-1 soma<-0
Cont<=20
Cont mod 2 = 0
soma <- soma+cont
7im
F
V
V
F
Estruturas de Repe&ção
Repita: é uma estrutura que efectua um teste condicional no final do laço. Deste modo, o bloco de instruções do laço serão executados no mínimo uma vez, até que uma determinada condição seja verdadeira; isto quer dizer que ela executa enquanto for falsa.
Sintaxe (Pseudocódigo): Representação Fluxograma:
repita
/* instruções a serem executadas enquanto a condição for verdadeira*/
até (condição)
CAP. IV
Estruturas de Repe&ção
Para: é uma estrutura que repete um conjunto de operações por um determinado número de vezes previamente definido. Esta estrutura não prevê uma condição tal como as outras, pois possui limites fixos (inicio e final).
Sintaxe (Pseudocódigo): Representação Fluxograma:
para V de vi até vf passo p faca
/* instruções a serem executadas enquanto a condição for verdadeira*/
fimpara
Ou ainda
para V de vi até vf faca
/* instruções a serem executadas
enquanto a condição for verdadeira*/
fimpara
CAP. IV
Estruturas de Repe&ção
Onde:
V -‐ é a variável de controlo
vi – é o valor inicial da variável V vf – é o valor final da variável V
p – é o valor do incremento à variável V
Nota: tudo o que es9ver o faça e o fimpara será caracterizado como o que deve ser feito para cada ocorrência.
CAP. IV
CAPÍTULO V Estruturas de Dados
Ano Lec9vo 2013
Estruturas de Dados
Definição: As estruturas de dados, definem a forma como os dados estão organizados e armazenados na memória do computador, por forma a facilitar o seu acesso e manipulação.
Até aqui, estudamos que numa variável só é possível armazenar um valor; ou seja, caso 9ver um valor armazenado numa variável, e desejar armazenar outro valor na mesma variável, o que poderá acontecer será a subs9tuição do an9go pelo novo.
Quando precisamos armazenar um conjunto de valores são u9lizadas variáveis compostas que podem ser: Homogêneas e Heterogêneas; as variáveis compostas Homogêneas agregam um conjunto de dados do mesmo 9po e as variáveis compostas Heterogêneas, agregam um conjunto de dados de 9pos diferentes.
Nesta primeira secção, estudaremos as variáveis compostas Homogêneas, que envolvem Vectores e Matrizes, também conhecidas como Arrays.
CAP. V
Variáveis compostas homogêneas unidimensional (vectores)
Suponhamos que nos é proposto o seguinte problema:
Crie um algoritmo que solicita o nome de 10 estudantes e as suas respec9vas notas, calcula as suas médias e imprime o nome de cada um e a média do final do semestre. Possível solução:
Algoritmo “dados escolares de 10 alunos”
var
nome1, nome2,....nome10:literal
media1, media2, media3,.....media10:real
inicio
leia(nome1)
leia(nome2) ......
leia(nome10)
..........
fimalgoritmo CAP. V
Variáveis compostas homogêneas unidimensional (vectores)
U9lizando a solução apresentada anteriormente, seria bastante trabalhoso solucionar o problema proposto; o mais fácil seria u9lizar o conceito de vectores.
Definição:
Vector representa um conjunto de variáveis capazes de armazenar valores do mesmo 9po (literal, inteiro, real, etc). Um vector é visto como uma caixa com vários compar9mentos onde podemos guardar documentos; para o nosso caso específico é considerado como uma variável onde podemos armazenar mais de um dado.
Caracterís&cas de um Vector
Possui um nome (iden9ficador)
Possui um índice (posição)
U9liza colchetes (dois parênteses rectos ) para representar as posições do vector Armazena apenas dados do mesmo 9po (qualquer 9po de dado) Elementos individuais são acessados por meio da sua posição
CAP. V
Variáveis compostas homogêneas unidimensional (vectores)
Sintaxe para declaração de um vector
<nome do vector>: vetor [Li..Lf] de <&po de dado>
Ex: nome: vetor [0..4] de literal
Representação gráfica de um Vector
A figura acima representa um vector de cinco (5) posições com valores do 9po literal.
Imagine que o nome da variável do 9po vector seja nome tal como na figura acima:
Significa o seguinte: nome[0] = “Maria”, nome[1]=“Valdino”, ... , nome[4]=“Sandra”
CAP. V
Maria Valdino Sónia Eliana Sandra
[0] [1] [2] [3] [4] nome
Variáveis compostas homogêneas unidimensional (vectores)
OPERAÇÕES COM VECTORES
Não é possível manipular directamente todos os elementos do vector; apenas um de cada vez.
O acesso individual a cada componente do vector é realizado pela especificação do nome e a posição do mesmo por meio de índices.
O índice não representa o valor con9do no vector; mas sim a posição em que um determinado valor está armazenado no vector.
ATRIBUIÇÃO DE VALORES
Ex: Nome[2] <-‐ “Joaquim” , quer dizer que é atribuído a constante Joaquim do 9po literal para a segunda posição do vector Nome.
idade[10] <-‐ 50, quer dizer que é atribuído o valor 50 para a décima posição do vector idade
CAP. V
Variáveis compostas homogêneas unidimensional (vectores)
Nota: É necessário levar em conta que o valor a ser atribuído pode ser uma constante, uma variável ou uma expressão.
LEITURA DE VECTORES
A leitura dos elementos do vector é feita passo a passo; ou seja um elemento de cada vez, considerando o nome do vector e a posição correspondente. Neste caso é:
Sintaxe
leia (<lista de variáveis>). Ex: leia (escola [3])
ESCRITA DE VECTORES
Os passos são os mesmos em comparação aos referidos acima. Sendo assim teremos:
Sintaxe
escreva (<lista de variáveis>). Ex: escreva (escola [3])
CAP. V
Variáveis compostas homogêneas unidimensional (vectores)
Para a manipulação dos vectores, quer para a leitura como para a escrita de valores nele con9dos, ou qualquer operação a ser efectuada são u9lizadas estruturas repe9ção.
Suponha que deseja armazenar em um vector N, 5 valores do 9po inteiro e imprimir os mesmos valores. Considerando uma leitura e escrita normal sem estruturas de repe9ção, teríamos o seguinte:
CAP. V
leia (N[0], N[1],N[2],N[3],N[4])
escreval(N[0])
escreval(N[1])
escreval(N[2])
escreval(N[3])
escreval(N[4])
Variáveis compostas homogêneas unidimensional (vectores)
Para solucionar esta situação, u9lizamos estruturas de repe9ção (enquanto ... faca, repita...até e para de... até) então teremos:
CAP. V
algoritmo "vector de 5 elementos”
Var
N:vetor [0..4] de inteiro
i:inteiro
Inicio
para i de 0 ate 4 faca
leia (N[i])
fimpara
para i de 0 ate 4 faca
escreval(N[i])
fimpara
fimalgoritmo
Variáveis compostas homogêneas unidimensional (vectores)
Exemplos:
1. Crie um algoritmo que dado 10 números aleatórios, imprima os mesmos na ordem inversa em que foram inseridos. Ex: 2,3,4,6 resultará em: 6,4,3,2
2. Escreva um algoritmo que soma todos elementos con9dos no vector e imprima o resultado da soma.
3. Faça um algoritmo que lê uma sequência infinita de números e termina apenas quando digitar o número zero (0)
CAP. V
Variáveis compostas homogêneas unidimensional (vectores)
1. Solução
CAP. V
algoritmo "vector de 10 elementos"
var N:vetor [0..9] de inteiro i:inteiro inicio i<-‐0 escreva("Digite 10 números") enquanto (i<=9) faca leia (N[i]) i<-‐i+1 fimenquanto escreval("O inverso dos valores inseridos é: ") enquanto (i>0) faca i<-‐i-‐1 escreval(N[i]) fimenquanto fimalgoritmo
Variáveis compostas homogêneas unidimensional (vectores)
2. Solução
CAP. V
algoritmo "soma de 10 elementos"
var N:vetor [0..9] de inteiro soma:inteiro i:inteiro inicio i<-‐0 soma<-‐0 escreva("Digite 10 números") enquanto (i<=9) faca leia (N[i]) i<-‐i+1 fimenquanto para i de 0 ate 9 faca soma<-‐soma+N[i] fimpara escreval("O somatório dos valores inseridos é: ",soma) fimalgoritmo
Top Related