Revisão LPG-I – Revisão de ICC Prof. Flavio Marcello http://www.joinville.udesc.br/portal/professores/flavio/ Sumário - Revisão – Representação – Descrição Narrativa, Fluxograma, Algoritmo (Portugol) – Variável – Expressões aritméticas – Comando de atribuição – Comandos de entrada e saída Sumário - Revisão cont. Etapas da Construção de Programas ALGORITMOS Apresentação das Estruturas de Algoritmos – ESTRUTURA SEQÜÊNCIAL – ESTRUTURA CONDICIONAL – ESTRUTURA DE REPETIÇÃO – DADOS ESTRUTURADOS – Erros de Lógica e de Sintaxe Representação de Algoritmos Descrição Narrativa: - algoritmos expressos em linguagem natural. - imprecisa e pouco usada. Exemplo 01: Troca de pneu furado: 1. Afrouxar ligeiramente as porcas; 2. Suspender o carro; 3. Retirar as porcas e o pneu; 4. Colocar o pneu reserva; 5. Apertar as porcas; 6. Abaixar o carro; 7. Dar o aperto final nas porcas. Representação de Algoritmos - - - Fluxograma Convencional: representação gráfica do algoritmo; formas geométricas indicam ações; precisa e popular. auxilia a explicar a seqüência de instruções em algoritmos e programas. Representação de Algoritmos Notação de um Fluxograma: Início e fim Processamento Entrada de dados Saída de dados Decisão Representação de Algoritmos Exemplo de estruturas de controle usadas em programação estruturada (Miyazawa, 2001:9) Estrutura de Controle Condicional Estrutura de Controle Seqüencial Estrutura de Controle Repetitiva Representação de Algoritmos Exemplo: fluxograma para o cálculo da média de um aluno. Início N1, N2 Média=(N1+N2)/2 Média >=7 Verdadeiro “Aprovado” Falso “Reprovado” Fim Etapas da Construção de Programas Problema Fase de resolução do Problema Passo Difícil Solução em Forma de Algoritmo Fase da Implementação Solução como um Programa de Computador ALGORITMOS o Algoritmo: procedimento passo a passo para resolver um problema, rica em detalhes; semelhante à forma de programas; e de fácil tradução para linguagem de programação. o Pessoas tem inteligência e habilidade racional => fazem perguntas para se esclarecer. o Computador não tem senso próprio => deve receber instruções explícitas (algoritmos, ou linguagem estruturada ou “portugol”;) ALGORITMOS Um algoritmo correto deve possuir 4 qualidades: 1- O algoritmo deve ter um início 2- Cada passo do algoritmo deve ser uma instrução que possa ser realizada 3- A ordem dos passos deve ser precisamente determinada 4- O algoritmo deve ter um fim Desenvolvimento do Algoritmo Começamos com uma afirmação genérica da solução do problema e prosseguimos até o algoritmo final, aumentando sistematicamente o nível de detalhamento. Desenvolvimento do Algoritmo Como saber se já temos um nível suficiente de detalhes no algoritmo? Isso depende do agente que irá executar o algoritmo Os computadores têm um conjunto muito limitado de instruções e o algoritmo deve ser expresso nos termos dessas instruções. METODOLOGIA DE DESENVOLVIMENTO DE ALGORITMOS Passo 1: ler cuidadosamente a especificação do problema até o final Passo 2: se depois de ler várias vezes, ainda não entender o problema, pergunte ao professor até entender Passo 3: levantar e analisar todas as saídas exigidas na especificação do problema Passo 4: levantar e analisar todas as entradas citadas na especificação do problema METODOLOGIA DE DESENVOLVIMENTO DE ALGORITMOS Passo 5: Formular um esboço geral do algoritmo, não se concentrando em detalhes (revisar mentalmente) Passo 6: verificar se é necessário gerar valores internamente ao algoritmo e levantar as variáveis necessárias e os valores iniciais de cada uma (indicar o propósito) Passo 7: levantar e analisar todas as transformações necessárias para, dadas as entradas e valores gerados internamente, produzir as saídas especificadas (mapeamento entrada saída) METODOLOGIA DE DESENVOLVIMENTO DE ALGORITMOS Passo 8: 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) Passo 9: Retomar os passos individuais e prosseguir com o detalhamento (verificar se os novos passos executam a função original) Passo 10: fazer uma reavaliação geral, elaborando o algoritmo através da integração das partes METODOLOGIA DE DESENVOLVIMENTO DE ALGORITMOS ALGORITMO PARA TROCAR PNEU DE UM CARRO Início Trocar Pneu Fim E se o estepe estiver vazio? Isto traz necessidade de uma decisão entre dois caminhos. ESTRUTURA CONDICIONAL Início se <o estepe está vazio> então chamar borracheiro senão mudar o pneu fim se Fim ESTRUTURA CONDICIONAL Início se <o estepe está vazio> então chamar borracheiro senão A atividade de mudar o pneu pode ser mudar o pneu mais detalhada fim se Fim ESTRUTURA SEQUENCIAL Início se <o estepe está vazio> então chamar borracheiro senão levantar o carro A atividade de desparafusar a roda pode desparafusar a roda ser mais detalhada remover a roda colocar o estepe roda Aparafusar atividadeade parafusar a roda pode ser abaixar o carro mais detalhada fim se Fim ESTRUTURA SEQUENCIAL Início se <o estepe está vazio> então chamar borracheiro senão levantar o carro desparafusar o 1o parafuso o parafuso desparafusar o 2é A repetição inconveniente desparafusar o 3o parafuso desparafusar o 4o parafuso remover a roda colocar o estepe parafusar o 1o parafuso A repetição é inconveniente parafusar o 2o parafuso parafusar o 3o parafuso parafusar o 4o parafuso abaixar o carro fim se Fim ESTRUTURA DE REPETIÇÃO Início // Versão FINAL se <o estepe está vazio> então chamar borracheiro senão levantar o carro enquanto <houver parafuso para desapertar> faça desparafusar a roda fim enquanto remover a roda colocar o estepe enquanto <houver parafuso para apertar> faça parafusar a roda fim do enquanto abaixar o carro fim se Fim Algoritmos computacionais Estrutura geral de um algoritmo Classificação dos dados Variável Expressões aritméticas Comando de atribuição Comandos de entrada e saída Estrutura Seqüencial Algoritmos computacionais Forma geral de representação: // Nome_do_algoritmo // Função : // Autor : // Data : // Seção de Declarações Bibliotecas <declaração_de_variáveis> // variáveis globais <subalgoritmos> Início <declaração_de_variáveis> // variáveis locais <corpo_do_algoritmo> Fim Algoritmos computacionais Um algoritmo computacional deve ser uma seqüência de instruções que deve manipular dados – Instruções: comandos que determinam a forma pela qual os dados devem ser tratados – Dados: informações recolhidas/fornecidas por diversos meios e que serão processadas pelo computador através das instruções Algoritmos Computacionais Classificação dos dados: – Dados numéricos: podem ser basicamente de dois tipos: • Inteiros: não possuem partes decimais. Ex.: 27 • Reais: possuem partes decimais. Ex: 213,53 Algoritmos Computacionais – Dados literais: conjunto de caracteres que pode ser formado por números, letras e símbolos especiais • Normalmente chamado de String • Ex.: “pitanga” – Dados lógicos: utilizado para representar dois valores únicos (0 ou 1, falso ou verdadeiro ) • Também conhecido como tipo booleano, em referência à álgebra de Boole Algoritmos Computacionais Variável Matematicamente, variável é a representação simbólica dos elementos de um certo conjunto Computacionalmente, cada variável corresponde a um endereço de memória, cujo conteúdo pode variar ao longo do tempo durante a execução do programa Embora possa assumir vários valores, pode-se armazenar somente um de cada vez Algoritmos Computacionais Toda variável é diferenciado por um identificador. Um identificador é formado por um ou mais caracteres, sendo que o primeiro caractere deve ser obrigatoriamente uma letra Exemplo: nota, a, x, w, X25 (identificadores válidos) 5B, X – Y, E(13) (identificadores não válidos) Algoritmos Computacionais Toda variável tem: um identificador (nome); tipo que vai armazenar; valor armazenado Exemplo: nota numérico; nome literal; maior lógico; Algoritmos Computacionais Expressões aritméticas Operações cujos operadores são aritméticos e cujos operandos são constantes ou variáveis numéricas Operações aritméticas: Adição / Subtração Multiplicação / Divisão Potenciação / Radiciação Algoritmos Computacionais Expressões Lógicas Operações onde a execução de uma ação ou seqüência de subações está sujeita a uma certa condição, representada através de uma expressão lógica Operações lógicas: = (igual a) / (diferente) < (menor) / > (maior) (menor ou igual) / (maior ou igual) Algoritmos Computacionais Expressões Lógicas Operadores lógicos: e (conjunção) ou (disjunção) não (negação) Algoritmos Computacionais Comando de atribuição Comando que permite que seja atribuído um determinado valor a uma variável Denominado pelo símbolo Exemplo: nota 10 nome “Joao” Algoritmos Computacionais Comandos de entrada e saída Comandos que permitem a interação do usuário com o programa Comando de entrada Leia - Este comando “Leia” fica aguardando que algum valor seja digitado e a tecla “enter” do computador seja pressionada. O valor digitado é atribuído à variável e é armazenada na memória do computador. Comando de saída Escreva - O conteúdo da memória é impresso no vídeo (monitor do computador) Algoritmos Computacionais Estrutura Seqüencial Todos os comandos que estão entre as palavras Início e Fim devem ser executados de maneira seqüencial Início comando 1 comando 2 . . comando n Fim Algoritmos Computacionais Exemplo: Faça um programa que leia 4 variáveis inteiras e as imprima na tela do computador. B C D ? ? ? ? ... ... ... ... Leia A (25) 25 ? ? ? Leia B (35) 25 35 ? ? Leia C (15) 25 35 15 ? Leia D (40) 25 35 15 40 Escreva A Escreva B Escreva C Escreva D Fim 25 35 15 40 Monitor Memória A Programa 01 variáveis inteiras A, B, C, D Inicio Algoritmos computacionais ESTRUTURAS CONDICIONAIS – Estrutura Condicional Simples – Estrutura Condicional Composta – Seleção entre Seqüências de Comandos Estruturas de Condicionais São de 3 tipos ESTRUTURA CONDICIONAL SIMPLES ESTRUTURA CONDICIONAL COMPOSTA SELEÇÃO ENTRE SEQÜÊNCIAS DE COMANDOS Estrutura Condicional Simples Fluxograma .F. decisão .V. Comando1 … ComandoN Estrutura Condicional Simples (Se) - - Uma única condição, expressão lógica, é avaliada. Se o resultado é verdadeiro (.V. ou .1. ou true) um determinado conjunto de instruções é executado. Sintaxe: se (<condição>) <comando>; OU se (<condição>) { <comando_1> … <comando_N> } Estrutura Condicional Simples Exemplo: Algoritmo que lê dois dados, calcula a média e imprime o resultado. Variáveis NUM1 NUM2 Media Media >= 7 Media < 7 ? ? ? ? ? ... ... ... ... ... 10.0 ? ? ? ? 10.0 5.0 ? ? ? 10.0 5.0 7.5 ? ? 10.0 5.0 7.5 .V. ? 10.0 5.0 7.5 .V. .F. Aprovado Monitor Memória Programa Cal_Média Inicio Real NUM1, NUM2, Média; Leia (“%R”, &NUM1); (10 ) Leia (“%R”, &NUM2); (5 ) Média (NUM1 + NUM2) / 2; Se (Média >=7) Escreva (“Aprovado”); Se (Média < 7) Escreva (“Reprovado”); Fim Condições Estrutura Condicional Composta Fluxograma .F. comando 2 decisão .V. comando 1 Estrutura Condicional Composta (Se … Senão) Uma condição, expressão lógica, é avaliada. Se o resultado é verdadeiro (.V. ou .1. ou true) um determinado conjunto de instruções é executado, Senão um outro conjunto de instruções será executado. Sintaxe: se (condição) { OU se (condição) <comando_1>; … <comando_1>; senão <comando_2>; <comando_N>; } senão { <comando_2>; … <comando_M>; } Estrutura Condicional Composta Exemplo:Verifica Maioridade. Início Idade .F. Idade>=18 .V. “Maior de idade” “Menor de idade” Fim Variáveis Idade Idade >= 18 ? ? ... ... 15 ? 15 .F. Menor de Idade Monitor Memória Programa Maioridade Inicio Inteiro Idade; Leia (“%I”, &Idade); (15 ) Se (Idade >=18) Escreva (“Maior de Idade”); Senão Escreva (“Menor de Idade”); Fim Condições Estruturas Condicionais Aninhadas Exemplo: Se (grau >= 90) Escreva (“A”); Senão Se (grau >= 80) Escreva (“B”); Senão Se (grau >= 70) Escreva (“C”); Senão Se (grau >= 60) Escreva (“D”); Senão Escreva (“F”); SELEÇÃO ENTRE SEQÜÊNCIAS DE COMANDO S – (Escolha) Fluxograma valor valor 1 seqüência de comandos 1 variável …. valor valor N seqüência de comandos N seqüência de comandos padrão SELEÇÃO ENTRE SEQÜÊNCIAS DE COMANDO S – (Escolha) - - Uma ou mais condições podem ser avaliadas e podem ter um comando composto associado a cada uma das condições. Sintaxe: Escolha (<variável>) { Caso <Valor_1> : <Comando_1>; Pare; Caso <Valor_2> : <Comando_2>; Pare; ... Caso <Valor_N> : <Comando_N>; Pare; Padrão <Comando_Padrão>; } SELEÇÃO ENTRE SEQÜÊNCIAS DE COMANDO S – (Escolha) Exemplo: Algoritmo que lê um dados entre (0 e 2) e escreve uma mensagem na tela do computador conforme o valor lido, caso contrário escreve uma mensagem de exceção (Por ex: “Valor Inválido”). Variáveis Expressão Numero Escolha(Numero) // Algoritmo Exemplo_Escolha ? ? Inicio ... ... 1 ? 1 1 Inteiro NUMERO; Leia(“%I”, &NUMERO); (1 ) Escolha (NUMERO) { Caso 0: Escreva(“Escolheu 0”);Pare; Caso 1: Escreva(“Escolheu 1”);Pare; Caso 2: Escreva(“Escolheu 2”);Pare; Padrão: Escreva(“Valor Inválido”); } Fim Escolheu 1 Monitor Algoritmos computacionais ESTRUTURA DE REPETIÇÃO – Repetição com Teste no Início – Repetição com Teste no Final – Repetição Contada Estrutura de Repetição Permite que uma seqüência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita. São de 3 Tipos: Repetição com Teste no Início Repetição com Teste no Final Repetição Contada Estrutura com Teste no Início Fluxograma .F. condição .V. Estrutura com Teste no Início (Enquanto) A variável de controle é iniciada antes do Enquanto; A variável de controle é incrementada dentro do Enquanto. Enquanto o resultado da condição é verdadeiro (.V. ou .1. ou true) executa repetidamente um conjunto de instruções. Sintaxe: Enquanto (<condição>) { <Comando_1>; ... <Comando_N>; } Loop Se no primeiro teste da condição resultado for FALSO, os comandos dentro do loop NÃO serão executados NEM uma vez. Estrutura com Teste no Início (Enquanto) Exemplo 1: Encontrar o menor dentre um conjunto de 05 valores digitados. // ALGORITMO EncontraMenor_em5 Então ela foi inicializada antes. Inteiro qtdenumlidos, num, menor; INICIO Escreva (“Algoritmo Encontrar Menor Valor num conjunto de 05 valores”); Escreva (“Digite 1º Valor: ”); menor num; Leia (“%I”, &num); qtdenumlidos 1; A variável de controle deve ter um valor conhecido. ENQUANTO (qtdenumlidos < 5) { Escreva (“Digite novo Valor: ”); Leia (“%I”, &num); se (num < menor) menor num; qtdenumlidos qtdenumlidos +1; A variável de controle deve ter seu valor modificado dentro do “laço”. Neste caso a variável foi incrementa em 1 } Escreva (“Menor Valor Encontrado: %I ”, menor); FIM. Estrutura com Teste no Início (Enquanto) Exemplo 2: Desenvolver algorítmo para ler um conjunto de valores correspondentes aos pontos que alunos obtiveram em um teste. Quando o valor fornecido for um número negativo, isto é um sinal de que não existem mais pontos para serem lidos. Contar quantos alunos fizeram o teste; Escrever o media de pontos de alunos. // Algoritmo Contagem_Pontos_Alunos Inteiro PONTOS_Teste; Real SOMA_Ptos, NUM_Alunos; Inicio Escreva (“Algoritmo Contagem de Pontos dos Alunos”); // Variáveis que acumulam somas/quantidades ou contam algo, // sempre devem ser inicializadas!!! NUM_Alunos dever ser zerado NUM_Alunos = 0; SOMA_Ptos = 0; antes do Enquanto Escreva ("PONTOS: "); Leia ("%R", &PONTOS_Teste); e então incrementado em 1 dentro do Enquanto (PONTOS_Teste > 0) { Laço de repetição NUM_Alunos = NUM_Alunos + 1; SOMA_Ptos = SOMA_Ptos + PONTOS_Teste; Escreva ("PONTOS: "); Leia ("%R", &PONTOS_Teste); } Escreva ("TOTAL DE ALUNOS: %i ", NUM_Alunos); Se (NUM_Alunos > 0) Escreva ("Media de Pontos: %R ", SOMA_Ptos / NUM_Alunos); FIM. Estrutura com Teste no Final Fluxograma C1 ... C2 Cn .V. condição .F. Estrutura com Teste no Final (Faça … Enquanto) Semelhante ao ENQUANTO, porém, a condição é testada ao final do laço, então os comandos dentro do laço são executados pelo menos 1 vez. Enquanto que o resultado da condição for verdadeiro (.V. ou .1. ou true) executa-se um conjunto de instruções. Sintaxe: Faça { <Comando_1>; ... <Comando_N>; } Enquanto (<condição>); Estrutura com Teste no Final (Faça … Enquanto) Exemplo 1: Desenvolver algoritmo que permita a leitura de numeros positivos e acumule seu somatório, imprimindo o resultado no final. //ALGORITMO SomaPositivos Inteiro numero, soma; Inicio soma 0; Escreva ("Programa para somar N valores positivos"); Faça { Escreva ("Digite um valor: "); Leia ("%I", &numero); se (numero > 0) soma soma + numero; } Enquanto (numero > 0); Escreva ("Soma dos Valores: %I", soma); Fim Estrutura com Teste no Final (Faça … Enquanto) Exemplo 2: Desenvolver um algoritmo para escrever os 05 primeiros múltiplos de 13. Variáveis //ALGORITMO Azarão Inteiro num, cont, vezes; INICIO vezes 5; num 13; Loop cont 0; Condição num cont vezes cont < vezes ? ? ? ? ... ... ... ... 13 0 5 ? 26 1 5 .V. 39 2 5 .V. 52 3 5 .V. 65 4 5 .V. 78 5 5 .F. Faça { Escreva ("%I ", num); num num +13; } Enquanto (cont < vezes); FIM Loop Monitor cont cont +1; Estrutura de Repetição Contada Fluxograma .F. Início , Cond., Incr. .V. Comando Estrutura de Repetição Contada (Para) A variável de controle é iniciada da estrutura; A variável de controle é incrementada dentro da estrutura. Para o resultado da condição verdadeiro (.V. ou .1. ou true) executa-se um conjunto de instruções. Então, neste tipo de estrutura manipulam-se automaticamente todos os detalhes da repetição controlada por contador. Sintaxe: Para (<inicialização> ;<condição>; <incremento>) { <Comando_1>; ... <Comando_N>; } Estrutura de Repetição Contada (Para) Exemplo 1: Desenvolver algoritmo que permita imprimir os números de 1 a 5. //Algoritmo Contar_de_1_5 Condição Inicio Inteiro cont; Para (cont 1; cont < = 5; cont cont +1) { Escreva (“%I”, cont); Loop } cont cont <= 5 ? ? ... ... 1 ? 1 .V. 2 .V. 2 .V. ... ... 6 .F. Fim Passo1 - Inicializa a variável de controle. Passo3 - Incrementa variável de controle; retorna ao Passo2. 1 2 3 4 5 Monitor Passo2 - Testa a condição, de for verdadeira executa o conjunto de instruções, caso contrário encerra loop. Comparativo: (Para) X (Enquanto) Para Enquanto Inteiro i, N, Valor,Soma=0; Inteiro i, N, Valor,Soma=0; Leia ("%i",&N); Para (i= 0; i<N; i++) { Leia ("%i", &Valor); Soma = Soma + Valor; } Leia ("%i",&N); i = 0; Enquanto (i < N) { Leia ("%i", &Valor); Soma = Soma + Valor; i++ ; } Qual Estrutura Usar ??? Para Sabe-se o número de repetições Enquanto Não sabe-se o número exato de repetições Não sabe-se o número de repetições, executando pelo menos uma vez. Faça ... Enquanto Toda estrutura ENQUANTO pode ser convertida para Faça...Enquanto e vice-e-versa; Toda estrutura PARA pode ser convertida em ENQUANTO, mas nem toda estrutura ENQUANTO pode ser convertida em PARA. Algoritmos computacionais Tipos de Dados Estruturados – Variáveis Indexadas Unidimensionais (VETOR) – Variáveis Indexadas Bimensionais (MATRIZ) – Variáveis Indexadas Multidimensionais (pouco freqüente) TIPOS DE DADOS ESTRUTURADOS - ANALOGIA Vetor Matriz Tipos de Dados Estruturados O termo indexada provém da maneira como é feita a individualização dos elementos do conjunto de dados: por meio de índices. Uma variável indexada pode ser definida como tendo um ou mais índices. – vetor, um único índice (unidimensionais) – matriz, dois índices (bidimensionais) Variáveis Unidimencionais - VETOR Representa um conjunto de valores do mesmo tipo (estrutura homogênea), referenciáveis pelo mesmo nome e individualizados entre si através de sua posição dentro desse conjunto (variáveis indexadas) Sinônimos: variáveis indexadas, variáveis compostas, variáveis subscritas, arranjos, matrizes (unidimensionais), tabelas em memória ou arrays. Variáveis Unidimencionais - VETOR Conceituando VETOR através de um exemplo. Suponhamos o seguinte problema: Calcular a média aritmética das notas de 3 alunos. Exibir a média e as notas que estão abaixo da média Calcular a média aritmética das notas de 3 alunos. Exibir a média e as notas que estão abaixo da média 1a Solução (RUIM) Ler as três notas e armazenar na memória do computador, dando um nome diferente para cada nota. // ALGORITMO Media_3Notas Real NOTA1, NOTA2, NOTA3, MEDIA; Programa funciona INICIO para três notas Escreva (“Digite 3 notas:”); Leia (“%R %R %R”, &NOTA1, &NOTA2, &NOTA3); MEDIA (NOTA1 + NOTA2 + NOTA3) / 3; Escreva (“Media: %R”, MEDIA); Se (NOTA1 < MEDIA) Escreva (”%R Abaixo da média”, NOTA1); Se (NOTA2 < MEDIA) Escreva (”%R Abaixo da média”, NOTA2);IMPRATICÁVEL! Se (NOTA3 < MEDIA) Escreva (”%R Abaixo da média”, NOTA3); FIM E se fossem 1000 notas? Associarmos um nome para cada nota? Calcular a média aritmética das notas de 1000 alunos. Exibir a média e as notas que estão abaixo da média a 2 Solução: Vetor Associar o nome NOTA a um CONJUNTO seqüêncial de notas: • Chamada NOTA =VARIÁVEL {N0, N1, ...INDEXADA N999} índiceo nome 0 1dado ao 999 • Junta-se conjunto seqüêncial um índice. Para referênciar com ou selecionar uma nota específica usamos um índice. Então: - a 1a nota (N0) é indicada por NOTA[0] - a 1000a (N999) nota é indicada por NOTA[999] - uma ka nota é indicada por NOTA[k] VETOR Um VETOR é um conjunto ordenado que contém um número fixo de elementos. Todos os elementos do vetor devem ser do mesmo tipo Armazenam diversos itens de uma só vez – Significa dizer: • Em uma mesma estrutura de dados, é possível ter diversas variáveis de tipos de dados simples agrupadas. VETOR Sintaxe: tipo nome_vetor [tamanho]; onde: deve ser especificado o tipo dos elementos do conjunto, ou seja, Inteiro, Caracter, Real, etc. O nome_vetor é o nome da variável e em tamanho deve ser especificado o número máximo de elementos do conjunto. VETOR Exemplo: Nome da Variável Real VETOR[200]; Tipo dos elementos do conjunto Número máximo de elementos do conjunto VETOR Cada variável indexada é associada à uma posição de memória, como acontece com variáveis simples. Exemplo: Real NOTA[2]; NOTA[0] NOTA[1] NOTA[2] VETOR INICIALIZAÇÃO: Inteiro valores[2]; valores[0]=0; valores[1]=0; valores[2]=0; Inteiro valores[2] = { 0, 0, 0 }; Inteiro valores[2]; Para (i0; i<3; i++) { valores[i] = 0; } Caracter nome[50] = ” ”; Caracter nome[50] = “Fulano de Tal”; Caracter nome[50] = {‘F’,’u’,’l’,’a’,’n’,’o’,’ ‘,’d’,’e’,’ ‘,’T’,’a’,’l’}; VETOR ATRIBUIÇÃO: - Além do nome da variável deve-se fornecer o índice do componente onde será armazenado o valor da expressão. Exemplos: NÚMEROS[2] 10; NOM[10] “João”; SALARIOS[3] 100.00; MATRIZ[5][8] 3.6; VETOR LEITURA: - Feita passo-a-passo, um componente por vez. Sempre informando o nome da variável e o índice a ser lido. Exemplo 1: Inteiro Numero[9], i; Para (i 0; i < 10; i i + 1) { Escreva( “%Io. número: ”, i+1); Leia( “%I”, &Numero[i]); } VETOR ESCRITA: - Semelhante a leitura, feita passo-a-passo, um componente por vez. Sempre informando o nome da variável e o índice a ser manipulado. Inteiro Numero[9], i; Exemplo 2: //supondo que o vetor Numero foi //lido anteriormente Para (i 0; i <10; i i + 1) { Escreva( “%I”, Numero[i]); } VETOR - Exemplo 1 Ler um conjunto de 1000 notas armazenando-as no vetor denominado NOTA. Calcular a média, verificar e exibir as notas abaixo da média. VETOR - Exemplo 1 Inicio Real NOTA[999], MEDIA, SOMA; Leitura das notas Inteiro I; Para (I 0, I <1000, I++) Leia (“%R ”, &NOTA[I]; Cálculo da Média SOMA 0; Para (I 0, I <1000, I++) SOMA SOMA + NOTA[I]; MEDIA SOMA / 1000; Para (I 0, I <1000, I++) Se (NOTA[I] < MEDIA) Escreva(“%R”, NOTA[I]); Fim Escrita das notas abaixo da média VETOR - Exemplo 2 Ler um conjunto de N números inteiros (N é lido e é menor que 100). Encontrar e exibir o maior deles. VETOR - Exemplo 2 Lê a quantidade Inicio de elementos Inteiro N,I, J,MAIOR, NRO[99]; Leia N; Lê os números Para (J 0, J < N , J++) Assume que o Leia (“%I”, &NRO[J]); primeiro elemento do conjunto é o maior de todos MAIOR NRO[0]; Para (I 1, I < N , I++) Se (NRO[I] > MAIOR) MAIOR NRO[I]; Compara o elemento assumido como maior com todos os outros, colocando em MAIOR aquele elemento Escreva (“%R é o maior valor.”,MAIOR); que realmente for o Fim maior de todos Algoritmos Computacionais Erros em Algoritmos Início Real NUM1, NUM2, Média; Média (NUM1 + NUM2) / 2; Leia (“%R, &NUM1); Leia (“%R”, &num2); Se (Média >=7) Então Escreva (“Aprovado”); Senão Escreva (“Reprovado”); Fim Erro de Lógica Erro de Sintaxe Erro de Sintaxe FIM