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 (i0; 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
Download

Escreva