<identificador>[<tamanho>]: <tipo>;

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

Algoritmos e Programação

Algoritmos II Aula 2 Vetores

Programação: Vetores

Vetores. e o programa deverá ler os valores separadamente:

Introdução aos Algoritmos

Variáveis Compostas Homogêneas Vetores

Introdução aos Algoritmos

Pseudocódigo e Visualg

CI208 - Programação de Computadores. Aula 24: Arrays. Prof. MSc. Diego Roberto Antunes

ESTRUTURAS DE REPETIÇÃO - PARTE 1

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

VETORES Motivação AULA 19

UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ ALGORITMOS E PROGRAMAÇÃO. Matrizes. Prof. Alex Camargo

Vetores Unimensionais

Lógica de Programação e Algoritmos

Desenvolvido por: Juarez A. Muylaert Filho - Andréa T. Medeiros - Adriana S. Spallanzani -

Processamento de Dados aplicado à Geociências. AULA 4:Comando de Entrada Comando de Saída Comando de Atribuição

Aula 10: Introdução a Vetores e Matrizes

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

Registros, Vetores e Matrizes

LINGUAGEM ALGORÍTMICA

Algoritmos e Programação

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Programação científica C++

Estruturas de Repetição

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

Universidade Veiga de Almeida Algoritmos e Linguagem I

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Matrizes. Marina Andretta. 17 de abril de 2017 ICMC-USP. Marina Andretta (ICMC-USP) sme0230-ipc 17 de abril de / 30

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

ESTRUTURAS DE CONTROLE - LAÇOS OU MALHAS DE REPETIÇÃO

Lógica de Programação, Algoritmos e Estruturas de Dados

Algoritmos Estrutura Condicional

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

PROGRAMAÇÃO COMPUTACIONAL I

Matrizes (Vetores Bidimensionais)

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

Introdução a Programação de Jogos

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

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação

Lógica. Necessida de se usar lógica. Solucionar problemas Eficiência e eficácia Boa performance de conhecimento

Ponteiros de Variáveis

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

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

CMP Algoritmos Algoritmos Parte I. Professor Vicente Paulo de Camargo

Laços de repetição for, while, do-while

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

Vetores e Matrizes. Vetores

CONCEITOS DE ALGORITMOS

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

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

5 Comando de Seleção Simples e Composta

Programação Estruturada Aula VisualG

Estruturas de Repetição

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

Algoritmos Computacionais

Introdução à Programação. Vetores. Prof. José Honorato F. Nunes

Aula 4: Introdução à Linguagem C++

6 a Lista Complementar de Exercícios de CI208 Programação de Computadores 13/02/2014

Disciplina de Algoritmos e Programação

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

LÓGICA DE PROGRAMAÇÃO

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

PSEUDO-CÓDIGO. Nickerson Fonseca Ferreira

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

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

AULA 10 VETORES. Disciplina: Algoritmos Professora: Alba Lopes.

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

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

Algoritmos. Conceitos e Comandos

Introdução a Algoritmos - Revisão

Algoritmos e Técnicas de Programação

I - CONCEITOS INICIAIS

Capítulo 7 Matriz. Roteiro

Introdução à Algoritmos. Professora: Fabíola Gonçalves.

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

Algoritmos. Prof. Jonatas Bastos Site:

Algoritmos. Seqüência finita e ordenada de procedimentos que resolvem um determinado problema. Exemplo: O que preciso fazer para preparar um omelete?

Algoritmos e Programação I

Aula 5 - Mais C e repetição

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

Módulos ou Subrotinas: PARTE II. Criando seus próprios módulos

ESTRUTURAS DE REPETIÇÃO - PARTE 2

INFORMÁTICA APLICADA AULA 05 ALGORITMOS

Transcrição:

Vetores e Constantes Imagine uma situação na qual fosse necessário armazenar 100 valores para processamento. Por exemplo, pode ser necessário armazenar as notas de 100 provas de uma turma de alunos. Uma solução é declarar 100 variáveis, uma para cada nota de prova a ser armazenada. Essa solução é bem trabalhosa, especialmente se posteriormente for necessário armazenar um número diferente de notas. Existe uma solução mais simples para armazenar um grande número de valores. Essa solução é conhecida como vetor. Os vetores são estruturas capazes de armazenar diversos valores do mesmo tipo. Na linguagem algorítmica, os vetores são declarados da seguinte forma: No qual: <identificador>[<tamanho>]: <tipo>; identificador: identificador (ou nome) do vetor; tamanho: tamanho (número de elementos) do vetor; tipo: tipo de cada elemento do vetor. Por exemplo: v[10]: inteiro; declara uma variável vetor de nome v. Essa variável terá "dentro" dela outras 10 variáveis inteiras, a cada uma dessas variáveis damos o nome de elemento do vetor. Essa variável possui uma estrutura interna que pode ser representada da seguinte forma: A variável v é composta por outras 10 variáveis inteiras representadas através dos 10 quadrados da figura acima. Cada quadrado representa um elemento do vetor. Os 10 elementos são numerados de 0 a 9, e esses números são chamados de índices do vetor. É importante saber que na liguagem algorítmica todo vetor inicia com o índice 0 e termina com o índice que representa o seu tamanho menos 1. Dessa forma, o tamanho mínimo aceitável para um vetor é 1, entretanto, um vetor de tamanho 1 é similar a uma variável do seu tipo base, uma vez que esse vetor somente seria capaz de armazenar um único valor.

Para ler ou escrever variáveis do tipo vetor através dos comandos leia e escreva NÃO podemos simplesmente fazer: leia(v); escreva(v); Para ler ou escrever em um vetor é necessário ler ou escrever em cada um de seus elementos individualmente. Para acessar um elemento de um vetor basta utilizar o identificador do vetor e a sua posição (índice), na seguinte sintaxe: Como por exemplo: <identificador>[<posição>]; v[5]; No nosso exemplo, v[5] é o sexto elemento do vetor v, lembre-se que o primeiro elemento está no índice 0. Esse elemento é uma variável do tipo inteiro, porque declaramos, em nosso exemplo, o vetor v de tipo inteiro. Assim como é possível atribuir valores, ler e escrever no conteúdo de variável inteira, também é possível atribuir, ler e escrever no conteúdo de v[5]. Por exemplo, se executarmos a seguinte atribuição: v[5] 10; então o valor 10 é atribuído ao elemento de índice 5 do vetor v. Dessa forma, o vetor v é modificado e pode ser representado da seguinte forma: Para ler valores do teclado e armazenar esses valores em um vetor é necessário fazê-lo elemento a elemento do vetor. Por exemplo, para ler 10 valores do teclado e armazená-los no vetor v, pode-se fazer: para (i 0; i<10; i++) leia(v[i]); O trecho de algoritmo acima lê 10 valores do teclado e os armazena nas 10 posições do vetor v. Ainda, é possível fazer o mesmo para escrever os 10 elementos do vetor v na tela do computador. para (i 0; i<10; i++) escreva(v[i]);

Exercício 1 Faça um algoritmo que leia 100 notas de prova. Calcule a média da turma e escreva quais notas estão acima da média da turma. Para solucionar este exercício é necessário: ler 100 valores (notas) do teclado; calcular a média da turma; escrever na tela do computador as notas que estão acima da média da turma. Para iniciar precisamos declarar um vetor para armazenar as notas, vamos chamar esse vetor de notas. notas[100]: real; Para ler 100 notas e armazená-las no vetor notas deve-se fazer: para (i 0; i<100; i++) leia(notas[i]); Para calcular a média das 100 notas é necessário somar os 100 valores e dividir a valor da soma por 100. Para isso: total 0; para (i 0; i<100; i++) total total + notas[i]; média total / 100; Por fim é necessário verificar quais notas armazenadas no vetor notas são maiores que a média da turma, armazenada na variável média. Para isso: para (i 0; i<100; i++) se notas[i] > média então escreva(notas[i]); Juntando tudo, nós temos o seguinte algoritmo: 01 Algoritmo notas_acima_media;

02 03 notas[100]: real; 04 média, total: real; 05 i: inteiro; 06 07 08 /* Leitura das notas e armazenamento no vetor notas */ 09 para (i 0; i<100; i++) 10 11 leia(notas[i]); 12 13 14 /* Cálculo da média das notas */ 15 total 0; 16 para (i 0; i<100; i++) 17 18 total total + notas[i]; 19 20 média total / 100; 21 22 /* Escrita das notas acima da média da turma */ 23 para (i 0; i<100; i++) 24 25 se notas[i] > média então 26 27 escreva(notas[i]); 28 29 30 Imagine que o programador queira modificar o algoritmo para trabalhar com 50 notas de prova. O que seria necessário modificar no algoritmo acima para ele trabalhar com um número diferente de notas? Seria necessário trocar o valor 100 pelo valor 50 nas linhas 03, 09, 16, 20 e 23. Mas, existe um jeito mais simples de fazer isso, utilizando constantes. Constantes são componentes de um algoritmo que armazenam um valor, o qual não pode ser alterado durante a execução do algoritmo. Para declarar uma constante é necessário utilizar a palavra reservada constantes. Constantes indica o início de um bloco de declaração de constantes. Geralmente as constantes são declaradas antes das variáveis. A declaração de uma constante deve seguir a seguinte sintaxe: Como por exemplo: <identificador> = <valor>; PI = 3.14;

É convencionado, mas não é obrigatório, que os identificadores das constantes sejam escritos em letras maiúsculas. Dessa forma, é simples distinguir as constantes das variáveis. Voltando ao nosso algoritmo das médias, é possível declarar uma constante, com um identificador como, por exemplo, MAX, que terá o número de notas a serem processadas. Dessa forma, o algoritmo ficaria da seguinte forma: 01 Algoritmo notas_acima_media; 02 constantes 03 MAX = 100; 04 05 06 notas[max]: real; 07 média, total: real; 08 i: inteiro; 09 10 11 /* Leitura das notas e armazenamento no vetor notas */ 12 para (i 0; i<max; i++) 13 14 leia(notas[i]); 15 16 17 /* Cálculo da média das notas */ 18 total 0; 19 para (i 0; i<max; i++) 20 21 total total + notas[i]; 22 23 média total / MAX; 24 25 /* Escrita das notas acima da média da turma */ 26 para (i 0; i<max; i++) 27 28 se notas[i] > média então 29 30 escreva(notas[i]); 31 32 33 Repare que, no algoritmo anterior, todas as referências ao valor 100 foram substituídas por referências à MAX. Dessa forma, basta modificar a declaração da constante para modificar o número de notas com que o algoritmo vai trabalhar. Vetores são estruturas estáticas Vamos modificar o exercício anterior para que o usuário entre com um número não previamente definido de notas. Por exemplo, o usuário pode fornecer as notas até que um valor especial, digamos -1, seja fornecido. O valor especial diz que o

usuário deseja parar de fornecer as notas, e quer que o programa realize os cálculos. Nosso primeiro problema é definir qual deve ser o tamanho do vetor. Os vetores são chamados de estruturas estáticas, pois têm o seu tamanho definido durante a codificação do programa. Durante a execução do programa, o tamanho do vetor não pode ser alterado, ou seja, não pode ser aumentado nem diminuído. Uma vez que nós não sabemos quantas notas serão fornecidas pelo usuário, é difícil estipular previamente um tamanho para o vetor. Tudo isso pode acarretar dois problemas para o programa: 1. Durante a codificação, o programador especificou um tamanho para o vetor que é muito maior do que o necessário. Nesse caso, tem-se memória alocada para o vetor que está sendo desperdiçada. 2. Também, o programador pode especificar um tamanaho para o vetor que é menor do que o necessário. Nesse caso, o vetor não será suficiente para armazenar todos os valores que o usuário deseja fornecer. O segundo caso é sempre pior do que o primeiro. Caso o programador não queira ter nenhum dos dois problemas, então ele terá que recorrer a uma estrutura que não seja um vetor. Por exemplo, listas encadeadas dinâmicas podem crescer conforme a necessidade do programa. Essas estruturas serão estudadas mais à frente e são muito mais complexas do que os vetores. Portanto, temos que utilizar um pouco de bom senso para escolher o tamanho do vetor. Vamos dizer que dificilmente uma classe tenha mais do que 250 alunos. Podemos utilizar o valor 250 como máximo do nosso vetor. Para começar precisamos ler um determinado número de notas até que seja fornecido o valor -1. É necessário utilizar um comando de repetição. Vamos escolher o comando faça-enquanto. O trecho de código para ler valores e armazená-los em um vetor notas até que um valor -1 seja fornecido é: num_notas 0; faça leia(notas[num_notas]); num_notas num_notas + 1; enquanto notas[num_notas]!= -1; Repare que foi necessário utilizar uma variável contadora num_notas. Essa variável precisa ser incrementada pelo programador, uma vez que o comando faça-enquanto não faz essa tarefa. O laço faca-enquanto termina quando uma nota com valor -1 é fornecida. Note que ao sair do laço faça-enquanto a variável num_notas terá o número de notas fornecidas pelo usuário mais uma nota. Na realidade a última nota fornecida é a nota especial -1. Nós não queremos que

essa nota entre nos cálculos da média. Por isso, é necessário decrementar a variável num_notas. Ainda sobre o laço, nós podemos fazer mais um melhoramento. O que ocorrerá se o usuário fornecer mais que 250 notas? Caso isso ocorra, então ao ler a nota 251, e tentar armazenar essa nota na posição 250 do vetor notas, ocorrerá um erro de execução, pois não existe a posição 250 no vetor notas. Para evitar que esse erro ocorra, o laço faça-enquanto pode ser interrompido sempre que num_notas atinja o valor 250. Portanto, o trecho de código referente a leitura dos dados ficaria assim: num_notas 0; faça leia(notas[num_notas]); num_notas num_notas + 1; enquanto (notas[num_notas]!= -1) e (num_notas < 250); O laço acima será executado até que uma nota -1 seja fornecida, ou que o valor de num_notas atinja o valor 250, o qual é uma posição além do máximo permitido pelo vetor notas declarado. Note que a variável num_notas só será decrementada caso o usuário digite o valor -1. Se o usuário fornecer as 250 notas, então a variável num_notas não precisa ser decrementada, pois todas as notas fornecidas serão válidas. Para decrementar num_notas precisamos agora fazer um teste e verificar se foi digitado o valor -1. O trecho de código referente ao teste ficaria assim: se notas[num_notas] == -1 então num_notas num_notas - 1; Suponha que o usuário logo na primeira vez digite o valor -1. Se isto acontecer não teremos nenhuma nota para fazer a média e todo o resto do processamento. Precisamos portanto verificar se o usuário digitou alguma nota válida. Isto pode ser feito verificando se a variável num_notas é diferente de 0. Se a variável num_notas for diferente de 0 significa que existem notas e portanto podemos fazer a média e mostrar as notas acima da média. Caso contrário, ou seja, se num_notas for igual a 0, então não há notas e enviaremos uma mensagem ao usuário dizendo que nenhuma nota foi fornecida. O resto do programa ficará muito parecido. Somente é necessário lembrar que o número de notas fornecido pelo usuário está na variável num_notas. 01 algoritmo notas_acima_media; 02 constantes 03 MAX = 250; 04 05 06 notas[max]: real;

07 media, total: real; 08 i, num_notas: inteiro; 09 10 11 /* Leitura das notas e armazenamento no vetor notas */ 12 num_notas 0; 13 faça 14 leia(notas[num_notas]); 15 num_notas num_notas + 1; 16 enquanto (notas[num_notas]!= -1) e (num_notas < MAX); 17 18 /* num_notas é decrementada, para descartar o valor -1 */ 19 se notas[num_notas] == -1 então 20 21 num_notas num_notas - 1; 22 23 24 /* Cálculo da média das notas, se alguma nota foi fornecida */ 25 se num_notas > 0 então 26 27 total 0; 28 para (i 0; i < num_notas; i++) 29 30 total total + notas[i]; 31 32 media total / num_notas; 33 34 /* Escrita das notas acima da média da turma */ 35 para (i 0; i < num_notas; i++) 36 37 se notas[i] > media então 38 39 escreva(notas[i]); 40 41 42 senão 43 44 escreva("nenhuma nota foi fornecida"); 45 46 Exercícios 1. Faça um algoritmo e um programa capaz de ler em um vetor A um número não previamente determinado de valores inteiros positivos. Esses valores devem ser fornecidos pelo usuário até que ele entre um valor especial. Depois de ler esses valores, copie-os para um outro vetor B. Essa cópia deve ser feita de forma que o valor armazenado no primeiro elemento do vetor A seja copiado para o último elemento do vetor B. O segundo elemento do vetor A seja copiado para o penúltimo elemento do vetor B. E assim por diante. 2. Faça um algoritmo e um programa capaz de ler 100 valores e armazená-los em um vetor A. Depois ler mais outros 100 valores e armazená-los em um

vetor B. Faça com que um vetor C armazene a soma dos vetores A e B. O primeiro elemento do vetor C deve armazenar a soma do primeiro elemento do vetor A com o primeiro elemento do vetor B. O segundo elemento do vetor C deve armazenar a soma do segundo elemento do vetor A com o segundo elemento do vetor B. E assim por diante. 3. Faça um algoritmo e um programa que leia 500 números reais do teclado e armazene em um vetor. Encontre e imprima o menor e o maior valor do vetor.