Você está na página 1de 9

19/3/2014 Metropole Digital

http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 1/9
Matemtica Aplicada
Professores autores
Umberto Souza da Costa
Natlia dos Santos Lucena Neta
Aula 9 Algoritmo: Teste de Mesa e Instrues de Repetio
Apresentao
Nesta aula, daremos continuidade discusso a respeito de instrues de controle, ou seja, instrues que afetam o fluxo de controle
sequencial padro de um algoritmo. Enquanto as instrues de deciso que voc viu na aula anterior tinham como objetivo permitir escolher
entre diferentes fluxos de execuo a partir da verificao de um teste, as instrues de repetio abordadas nesta aula tm o objetivo de
permitir que um algoritmo possa repetir a execuo de um conjunto de instrues, sendo a repetio controlada por condies.
Iniciaremos esta aula apresentando o teste de mesa, um procedimento bastante utilizado por programadores como forma de auxlio
deteco de falhas em algoritmos, melhorando a confiabilidade desses. Embora um teste de mesa possa ser aplicado a qualquer algoritmo,
com ou sem instrues de repetio, deixamos sua apresentao para este momento, pois as instrues de repetio permitiro a criao
de algoritmos mais complexos, para os quais a necessidade de testes se faz mais presente. Introduzido o teste de mesa, dedicaremos o
restante desta aula apresentao das instrues de repetio, abordando os trs tipos comumente oferecidos pelas linguagens de
programao. Finalizaremos esta aula mostrando a voc como as instrues de controle, condicionais e de repetio, podem ser
combinadas para produzir algoritmos mais elaborados.

Objetivos

Ao final desta aula, voc ser capaz de:
entender e aplicar o teste de mesa a seus algoritmos em geral;
conhecer os trs tipos de instrues de repetio e seu funcionamento;
identificar quando e como aplicar cada tipo de instruo de repetio.

Teste de mesa
Para que voc se torne um desenvolvedor de algoritmos, voc deve sempre buscar solues que resolvam os problemas da maneira mais
eficiente e correta possvel. Um programa eficiente aquele que alcana a soluo consumindo o menor nmero de recursos computacionais.
Portanto, ao criar um algoritmo, d preferncia s solues que utilizam um menor nmero de variveis e que exigem a execuo de um
nmero menor de instrues. Afinal, essas decises afetaro os requisitos de memria e o desempenho de seu algoritmo.
Podemos dizer que um algoritmo correto aquele que se comporta de acordo com sua especificao para qualquer entrada fornecida.
Portanto, mesmo que um algoritmo funcione para todas as entradas possveis, exceto uma delas, ele no ser correto. Garantir que um
algoritmo correto geralmente uma tarefa no trivial, embora mecanismos simples possam ajudar a detectar falhas. Com esse objetivo,
apresentaremos o teste de mesa, um procedimento que mostra como o contedo das variveis de um algoritmo muda instruo a instruo,
facilitando ao programador identificar comportamentos falhos.
O teste de mesa simula a execuo de um algoritmo sem utilizar o computador, empregando apenas papel e caneta. Para isso, voc deve
orientar-se por meio dos passos descritos a seguir.

Identifique as variveis envolvidas em seu algoritmo;
Crie uma tabela com linhas e colunas, onde corresponde ao nmero de instrues observadas pelo teste de mesa e o nmero de
variveis envolvidas. Utilize a primeira coluna para identificar os nmeros das linhas correspondentes s instrues observadas e
identifique as demais colunas com o nome de uma varivel;
De cima para baixo, preencha cada uma das linhas da tabela com o nmero da linha que identifica cada instruo, seguido dos valores
assumidos pelas variveis do programa aps a execuo daquela instruo. Para indicar que o valor de uma varivel foi lido, envolva-
o entre parnteses: . Se o valor foi escrito pela instruo, envolva-o entre chaves: . Para valores indefinidos, isto , aqueles que ainda
no foram determinados at uma dada instruo, utilize a interrogao: .

Veja agora como um teste de mesa funciona por meio de um algoritmo simples:
Dadas duas variveis a e b, inicialmente com valores v1 e v2, respectivamente, crie um algoritmo que atribua o valor v2 varivel a e
o valor v1 varivel b.
Exemplo 1
Esse um algoritmo essencial, mas que pode causar alguma confuso para um programador iniciante. Talvez sua primeira proposta de
soluo se parea com o algoritmo abaixo:
Algoritmo 1
01 programa
02 var a, b: inteiro
03 #inicializao das variveis
04 a v1
05 b v2
06 # troca dos valores das variveis
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 2/9
06 # troca dos valores das variveis
07 a b
08 b a
09 fim
Analisando esse algoritmo, vamos ver que ele no produz o efeito desejado: perceba que a instruo da linha 7 altera o valor de a para v2,
de forma que a atribuio da linha 8 no muda o valor armazenado em b, pois depois da linha 7 o valor de a ficou igual ao valor de b. Isso
pode ser visto em detalhes no teste de mesa, onde omitimos as linhas de comentrio, pois essas no afetam a execuo:
Tabela 1 - Teste de mesa do Algoritmo 1.
Linha a b
02 ? ?
04 v1 ?
05 v1 v2
07 v2 v2
08 v2 v2
A soluo adequada para esse problema dada pelo algoritmo seguinte:
Algoritmo 2
01 programa
02 var a, b, aux: inteiro
03 #inicializao das variveis
04 a v1
05 b v2
06 # troca dos valores das variveis
07 aux a
08 a b
09 b aux
10 fim
Neste algoritmo, introduzimos a varivel aux, responsvel por armazenar o valor original de a, permitindo que o acessemos mesmo depois
da troca do valor de a. Esse o procedimento padro utilizado para troca dos valores de duas variveis. Veja, a seguir, o teste de mesa
para esse novo algoritmo:
Tabela 2 - Teste de mesa do Algoritmo 2.
Linha a b aux
02 ? ? ?
04 v1 ? ?
05 v1 v2 ?
07 v1 v2 v1
08 v2 v2 v1
09 v2 v1 v1
Dessa forma, ao final do algoritmo a varivel a tem valor v2 e a varivel b tem valor v1, conforme desejado. Note como o teste de mesa
torna a anlise do algoritmo mais clara, ajudando o programador a identificar falhas. O teste de mesa pode ser adaptado de acordo com o
problema tratado, portanto, utilize o esquema proposto como um guia geral e ajuste-o quando necessrio.

Atividade 1
O que voc entendeu por teste de mesa e qual a sua importncia?


Instrues de repetio
Em determinadas situaes, necessrio que um conjunto de instrues seja repetido vrias vezes. O nmero de repeties pode ser
previamente conhecido ou no, mas deve ser necessariamente finito. As instrues de repetio atendem a essa necessidade, permitindo
executar um conjunto de instrues repetidamente, at que uma determinada condio de interrupo seja satisfeita.
As instrues de repetio que voc ver a seguir vo se diferenciar em relao ao momento em que o teste de interrupo ser realizado,
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 3/9
As instrues de repetio que voc ver a seguir vo se diferenciar em relao ao momento em que o teste de interrupo ser realizado,
que poder ser antes ou depois da primeira iterao, e tambm em relao ao conhecimento prvio sobre o nmero de iteraes a serem
realizadas.

Enquanto
A primeira instruo de repetio que voc conhecer ser a enquanto. O enquanto permite executar repetidamente os comandos
pertencentes ao corpo dessa instruo de repetio enquanto a condio associada for avaliada como verdadeira. Enquanto essa condio
permanecer verdadeira, a repetio ser executada continuamente, sendo encerrada somente quando a condio for falsa.
No enquanto, a condio de repetio verificada sempre antes da execuo do bloco de instrues a ser repetido. Aps cada iterao, a
condio novamente avaliada e, quando verdadeira, a execuo volta ao incio do bloco de instrues, repetindo-se esse procedimento at
que a condio seja falsa. Nesse ltimo caso, o algoritmo continuar na instruo seguinte instruo enquanto. Convm destacar que se a
condio de repetio for inicialmente falsa, o bloco de instrues no ser executado nenhuma vez. Observe a seguir a representao
genrica dessa instruo, em pseudocdigo e fluxograma:

enquanto (<condio>) faa
{instrues}
fim
onde <condio> a expresso que representa o teste lgico cuja avaliao determina se o bloco de instrues representado por
{instrues} ser, ou no, executado.

Exemplo 2
Este exemplo utiliza o enquanto para realizar a leitura das notas de 4 alunos e calcula a mdia correspondente. Para que o teste
condicional possa ser realizado, precisamos utilizar uma varivel auxiliar para contar o nmero de alunos cujas notas foram lidas.
Algoritmo 3
01 programa
02 var nota, media: real
03 var aux: inteiro
04 media 0
05 aux 1
06 enquanto aux 4 faa
07 escreva (Digite a nota do aluno, aux) #solicita a nota do aluno designado pela varivel aux ao usurio do algoritmo
08 leia nota #atribui o valor informado pelo usurio varivel nota
09 media media + nota #acumula, na varivel media, o valor da varivel nota
10 aux aux + 1 #incrementa a varivel aux em uma unidade
11 fim
12 media media / 4 #calcula a mdia, atualizando a varivel media
13 escreva (Mdia da turma:, media) #escreve a mdia da turma, dada pela varivel media, na tela
14 fim
Toda varivel que tem a funo de contador (aux) ou acumulador (media) deve ser inicializada, ou seja, devemos atribuir um valor para
essas variveis logo no incio do algoritmo. Na instruo de repetio enquanto, o programador responsvel por atualizar o contador
utilizado pelo teste lgico da repetio. Veja, na linha 10, que o programador precisou criar uma instruo para atualizar o valor da varivel
aux, de forma que seu valor mude a cada iterao do enquanto. Por outro lado, cada iterao atualiza o valor de media (linha 09), somando
a seu valor atual o valor da nota que acabou de ser lida.
As instrues do corpo da instruo enquanto (linhas 07 a 10) sero executadas at que a varivel aux, inicializada com valor 1 (linha 05),
assuma um valor maior que 4, ou seja, esse bloco ser executado 4 vezes para que sejam lidas as notas dos 4 alunos. Veja, a seguir, o
teste de mesa para o algoritmo 3, supondo que as notas fornecidas pelo usurio tenham sido 10, 7.3, 8 e 6.7, nesta ordem.
Tabela 3 - Teste de mesa do Algoritmo 3.
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 4/9
Tambm possvel termos uma instruo de repetio aninhada, conforme mostrado no exemplo seguinte, onde o algoritmo l os valores
de uma matriz 3x3 e depois a imprime:
Algoritmo 4
01 programa
02 var linha, coluna, temp: inteiro
03 var matriz: arranjo de 3 x 3 inteiro
04 linha 1
05 enquanto linha 3 faa
06 coluna 1
07 enquanto coluna 3 faa
08 escreva (Digite o valor da clula:)
09 leia temp
10 matriz [linha, coluna] temp
11 coluna coluna + 1
12 fim
13 linha linha + 1
14 fim
15 escreva (Matriz preenchida!)
16 fim
Note que o enquanto externo (linhas 05 a 14) percorre as linhas da matriz e o enquanto interno (linhas 07 a 12) percorre as colunas da
mesma. A cada clula determinada pelo encontro de uma linha com uma coluna, o usurio informa um valor. Observe tambm que a
atualizao das variveis auxiliares coluna (linha 11) e linha (linha 13) ocorre dentro do bloco de instrues por elas controlado.

Atividade 2


Vamos ver se voc entendeu a instruo de repetio enquanto? Para isso, escreva um algoritmo em pseudocdigo que calcule
a soma dos nmeros pares desde 100 at 200, inclusive. Dica: conhecido um nmero par, se voc somar 2 a ele ir encontrar
o nmero par seguinte.


Repita-At
Diferente da instruo de repetio anterior, no repita-at, a condio de repetio verificada sempre ao final da iterao, sendo que a
instruo de repetio se encerra quando sua condio se torna verdadeira. Nesse caso, o algoritmo seguir para a instruo seguinte ao
repita-at. Como a condio testada somente no final de cada iterao, as instrues de um repita-at so executadas pelo menos uma
vez, independente do valor inicial da condio de repetio. Observe, a seguir, a representao genrica dessa instruo em pseudocdigo
e fluxograma:
repita
{instrues}
at (<condio>)
Onde <condio> a expresso de controle da repetio e {instrues} representa o bloco de instrues que ser executado
repetidamente pelo repita-at.

Exemplo 3
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 5/9
Exemplo 3
Como exemplo, considere o Algoritmo 5, que utiliza a instruo repita-at para calcular a mdia de uma turma, conforme feito pelo Algoritmo
3:
Algoritmo 5
01 programa
02 var nota, media: real
03 var aux: inteiro
04 media 0
05 aux 1
06 repita
07 escreva (Digite a nota do aluno, aux)
08 leia nota
09 media media + nota
10 aux aux + 1
11 at aux = 5
12 media media / 4
13 escreva (Mdia da turma:, media)
14 fim
As instrues do corpo da instruo repita-at (linhas 07 a 10) sero executadas at que a varivel aux assuma um valor igual a 5, ou seja,
aps a leitura das notas dos 4 alunos. Veja, a seguir, o teste de mesa para esse algoritmo, supondo que as notas informadas tenham
sido, nesta ordem: 10, 7,3 , 8 e 6,7.
Tabela 4 - Teste de mesa do Algoritmo 5.
No Algoritmo 6, mostramos um exemplo de instrues repita-at aninhadas para o clculo da transposta de uma matriz quadrada de ordem
3.
Algoritmo 6
01 programa
02 var linha, coluna, temp: inteiro
03 var matriz: arranjo de 3 x 3 inteiro
04 leia matriz
05 linha 1
06 repita
07 coluna linha + 1
08 repita
09 temp matriz [linha, coluna]
10 matriz [linha, coluna] matriz [coluna, linha]
11 matriz [coluna, linha] temp
12 coluna coluna + 1
13 at coluna > 3
14 linha linha + 1
15 at linha > 2
16 fim
Perceba que o repita-at mais externo (linhas 06 a 15) percorre as linhas da matriz e o repita-at mais interno (linhas 08 a 13) percorre suas
colunas. As instrues do corpo do repita-at externo sero executadas 2 vezes, uma vez que depois das operaes na segunda linha, a
matriz ter sido transposta. Mostramos, a seguir, o teste de mesa para esse algoritmo. Representaremos a matriz na forma [ [linha1],
[linha2], [linha3] ], ou seja, a matriz ser representada como [[a1 a2 a3], [b1 b2 b3], [c1 c2 c3]]. Consideraremos que o
usurio informar a seguinte matriz [ [9 8 7], [6 5 4], [3 2 1] ].
Tabela 5 - Teste de mesa do Algoritmo 6.
Linha linha coluna temp matriz
02 ? ? ? ?
03 ? ? ? ?
04 ? ? ? ([ [9 8 7], [6 5 4], [3 2 1] ])
05 1 ? ? [ [9 8 7], [6 5 4], [3 2 1] ]
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 6/9
07 1 2 ? [ [9 8 7], [6 5 4], [3 2 1] ]
09 1 2 8 [ [9 8 7], [6 5 4], [3 2 1] ]
10 1 2 8 [ [9 6 7], [6 5 4], [3 2 1] ]
11 1 2 8 [ [9 6 7], [8 5 4], [3 2 1] ]
12 1 3 8 [ [9 6 7], [8 5 4], [3 2 1] ]
13 1 3 8 [ [9 6 7], [8 5 4], [3 2 1] ]
09 1 3 7 [ [9 6 7], [8 5 4], [3 2 1] ]
10 1 3 7 [ [9 6 3], [8 5 4], [3 2 1] ]
11 1 3 7 [ [9 6 3], [8 5 4], [7 2 1] ]
12 1 4 7 [ [9 6 3], [8 5 4], [7 2 1] ]
13 1 4 7 [ [9 6 3], [8 5 4], [7 2 1] ]
14 2 4 7 [ [9 6 3], [8 5 4], [7 2 1] ]
15 2 4 7 [ [9 6 3], [8 5 4], [7 2 1] ]
07 2 3 7 [ [9 6 3], [8 5 4], [7 2 1] ]
09 2 3 4 [ [9 6 3], [8 5 4], [7 2 1] ]
10 2 3 4 [ [9 6 3], [8 5 2], [7 2 1] ]
11 2 3 4 [ [9 6 3], [8 5 2], [7 4 1] ]
12 2 4 4 [ [9 6 3], [8 5 2], [7 4 1] ]
13 2 4 4 [ [9 6 3], [8 5 2], [7 4 1] ]
14 3 4 4 [ [9 6 3], [8 5 2], [7 4 1] ]
15 3 4 4 [ [9 6 3], [8 5 2], [7 4 1] ]

Atividade 3


Vamos praticar o que voc acabou de aprender sobre a instruo de repetio repita-at? Para isso, escreva um algoritmo em
pseudocdigo que calcule a multiplicao de dois nmeros inteiros sem utilizar o operador *. Em vez disso, utilize apenas o
operador da adio +.


Para
O para uma instruo de repetio muito til quando conhecemos de antemo o nmero de iteraes a serem realizadas. Esse nmero de
repeties determinado por uma varivel de controle, que assume cada um dos valores de uma faixa previamente determinada, um a cada
iterao. Eis o funcionamento do para:
Passo 1: defina o valor inicial da varivel de controle;
Passo 2: verifique se a condio de trmino foi atingida, ou seja, se a varivel de controle assumiu um valor fora da faixa permitida pela
instruo para. Se a condio de trmino foi atingida, ento a repetio se encerra e o algoritmo continuar na instruo
seguinte ao para. Se a condio de trmino no foi atingida, siga para o Passo 3;
Passo 3: execute o bloco de instrues do para, atualize a varivel de controle e volte ao Passo 2.
Tendo em vista que a condio testada antes da primeira iterao, se a condio de trmino for verdadeira j na primeira verificao, o
bloco de instrues no ser executado nenhuma vez. Observe a seguir a representao genrica dessa instruo em pseudocdigo:
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 7/9
bloco de instrues no ser executado nenhuma vez. Observe a seguir a representao genrica dessa instruo em pseudocdigo:
para x de i at f com passo p faa
{instrues}
fim
onde x a varivel de controle que assumir, a cada iterao, um dos valores da faixa que se inicia com o valor i e se encerra no valor f.
Portando, i e f definem os valores extremos da faixa permitida para a varivel de controle x. O valor p corresponde ao incremento ou
decremento dado varivel de controle x, podendo ser negativo ou positivo. Temos duas possibilidades de construo de uma instruo
para:
a. se p positivo, temos um valor i que cresce at f. Neste caso, temos o seguinte fluxograma:
b. Se p negativo, o valor de i decresce at f, conforme ilustrado pelo fluxograma seguinte:
O trecho com passo p pode ser omitido. Nesse caso, assume-se que o valor de x ser incrementado em 1 a cada iterao.

Exemplo 3
Reveja o exemplo do clculo da mdia da turma, dessa vez utilizando o para:
Algoritmo 7
01 programa
02 var nota, media: real
03 var i: inteiro
04 media 0
05 para i de 1 at 4 faa
06 escreva (Digite a nota do aluno, i)
07 leia nota
08 media media + nota
09 fim
10 media media / 4
11 escreva (Mdia da turma:, media)
12 fim
As instrues do para (linhas 05 a 09) sero executadas at que a varivel i, inicializada com o valor 1, assuma um valor maior que 4, ou
seja, esse bloco ser executado 4 vezes, uma iterao por nota. Veja o teste de mesa para este algoritmo supondo que foram informadas
as notas 10, 7.3, 8 e 6.7, nesta ordem.
Tabela 6 - Teste de mesa do Algoritmo 7.
Mais uma vez, tambm possvel o aninhamento da instruo para, ilustrado pelo exemplo a seguir:
Algoritmo 8
01 programa
02 var i, j: inteiro
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 8/9
02 var i, j: inteiro
03 var matrizA, matrizB, matrizC: arranjo de 3 x 3 inteiro
04 leia matrizA
05 leia matrizB
06 para i de 1 at 3 faa
07 para j de 1 at 3 faa
08 matrizC [i, j] matrizA [i, j] + matrizB [i, j]
09 fim
10 fim
11 fim
O algoritmo l as matrizes matrizA e matrizB (linhas 04 e 05) e em seguida computa a matriz matrizC como a soma das matrizes matrizA e
matrizB (linhas 06 a 10), de acordo com as regras matemticas de soma entre matrizes, vistas na aula 4. Perceba que o para das linhas 06
a 10 controla as linhas das matrizes, ao passo que o para das linhas 07 a 09 controla suas colunas. Na linha 08, temos o clculo de cada
um dos elementos da matriz resultante matrizC.

Atividade 4


Vemos ver se voc entendeu a instruo de repetio para. Para isso, escreva um algoritmo em pseudocdigo que calcule o
fatorial de um nmero fornecido pelo usurio.


Combinando instrues de controle
Agora que voc viu a explicao de cada uma dessas instrues de forma isolada, vamos mostrar alguns exemplos que combinam instrues
de deciso e de repetio. Podemos criar qualquer combinao e aninhamentos dessas instrues, desde que se respeite a construo de
cada uma delas individualmente.
O prximo exemplo combina a instruo de deciso simples se e a instruo para em um algoritmo que calcula e escreve os nmeros primos
positivos existentes entre 1 e n, sendo n definido pelo usurio:
Algoritmo 9
01 programa
02 var n, primo, contador, divisor: inteiro
03 escreva (Informe o valor de n:)
04 leia n
05 se n 0 ento
06 escreva (Valor invlido!)
07 seno
08 para primo de 1 at n faa
09 contador 0
10 para divisor de 1 at primo faa
11 se (primo % divisor = 0) ento # O smbolo % representa o resto da diviso.
12 contador contador + 1
13 fim
14 fim
15 se contador = 2 ento
16 escreva (Primo: , primo, )
17 fim
18 fim
19 fim
20 fim

Esse algoritmo primeiro verifica se o valor n informado maior ou igual a 1, pois queremos investigar apenas nmeros positivos. Em seguida,
no para externo, a varivel primo assume, a cada iterao, o valor de um candidato a nmero primo. Para cada candidato, a varivel contador
registra o nmero de divisores encontrados pelo para interno. No para interno, a varivel divisor assume o valor de um possvel divisor de
primo, testado pelo condicional das linhas 11 a 13. Convm lembrar que um nmero divisor de outro, se o resto dessa diviso igual a
zero. Ao final de cada iterao do para externo, executado um teste (linhas 15 a 17) para verificar se o nmero de divisores encontrados
igual a 2. Nesse caso, o nmero confirmado como primo e informado ao usurio.

Exemplo 4
O ltimo exemplo desta aula utiliza duas instrues para e uma enquanto para calcular a multiplicao de duas matrizes quadradas de
ordem 2. Veja o Algoritmo 10.
Algoritmo 10
01 programa
02 var i, j, k, soma: inteiro
03 var matA, matB, matC: arranjo de 2 x 2 inteiro
04 leia matA
05 leia matB
06 para i de 1 at 2 faa # At o nmero de linhas de matA
07 para j de 1 at 2 faa # At o nmero de colunas de matB
08 soma 0
09 k 1
10 enquanto k 2 faa # At o nmero de colunas de matA
11 soma soma + (matA [i, k] * matB [k, j])
19/3/2014 Metropole Digital
http://www.metropoledigital.ufrn.br/aulas/disciplinas/mat_aplicada/aula_09.html 9/9
11 soma soma + (matA [i, k] * matB [k, j])
12 k k + 1
13 fim
14 matC [i, j] soma
15 fim
16 fim
17 fim
Neste algoritmo, o lao mais externo (linhas 06 a 16) utilizado para percorrer as linhas da matriz matA, enquanto o para aninhado (linhas
07 a 15) utilizado para percorrer as colunas da matriz matB. Por sua vez, o enquanto (linhas 10 a 13) responsvel por realizar a
multiplicao do matA[i,k] * matB[k,j], considerando a linha i de matA e a coluna j de matB, onde 1 k 2.

Leitura complementar
Para complementar seu estudo sobre as instrues de controle, consulte estas fontes:
1. AMARAL, Fernando. Algoritmos: conceitos gerais. Disponvel em: <http://www.prof2000.pt/users/famaral/ig/tlp/estruturas.htm>.
Acesso em: 26 fev. 2010.
Aqui voc encontrar mais informaes sobre as estruturas de repetio apresentadas.
1. <http://equipe.nce.ufrj.br/adriano/c/apostila/contro.htm>.
Nesse site, voc encontrar explicaes detalhadas sobre cada uma das estruturas aprendidas nesta aula e sua forma de escrita em C, uma
importante linguagem de programao.

Resumo
Nesta aula, voc aprendeu que as instrues de repetio permitem executar um bloco especfico de cdigo repetidamente usando uma
srie de valores ou variveis, de forma contada ou condicionada, aumentando nossa capacidade de expressar algoritmos. Voc tambm viu
que o teste de mesa pode ajudar o programador a encontrar falhas em um algoritmo, auxiliando na gerao de programas confiveis.
Quando combinadas aos arranjos, as instrues de repetio permitem expressar um grande nmero de computaes de maneira muito
prtica e concisa, permitindo aplicar a mesma operao sobre diferentes elementos do arranjo, com base na variao dos valores dos
ndices dos elementos do arranjo. De forma geral, as instrues de controle do fluxo de execuo so essenciais aos algoritmos, pois nos
permitem criar solues mais flexveis e adequadas a situaes reais, onde condies e repeties so comuns.

Autoavaliao
1. Quais os trs tipos de instruo de repetio que voc aprendeu nesta aula? Cite a principal caracterstica de cada uma delas.
2. Escreva um algoritmo para calcular a soma dos elementos da diagonal principal de uma matriz quadrada de ordem 6 qualquer.
Essa matriz deve ser preenchida com nmeros inteiros que devero ser solicitados ao usurio pelo algoritmo. Utilize a
instruo de repetio enquanto. Verifique seu algoritmo considerando a aplicao do teste de mesa a valores especficos
escolhidos por voc para preencher a matriz.
3. Durante trinta dias de um determinado ms, foram colhidas as temperaturas mdias dirias de uma determinada regio em
graus Celsius. Faa um algoritmo que calcule e informe a temperatura mdia e mais alta do ms, utilizando a instruo repita-
at. Utilize o teste de mesa e valores especficos para testar seu algoritmo.
4. Represente cada um dos 50 alunos da disciplina Matemtica Aplicada por um registro que tem como campos o nome do aluno, o
nmero da turma (turmas 1, 2 ou 3) e a nota da disciplina. Cada registro deve estar armazenado em uma posio de um vetor.
Escreva um algoritmo que informe quantos e quais alunos foram aprovados em cada uma das turmas, utilizando a instruo
para. Considere que os registros j esto preenchidos e que um precisa de nota maior ou igual a 7,0 para ser aprovado.
5. Escreva um algoritmo que leia um valor inteiro n correspondente ao tamanho de um vetor de inteiros, onde 1 n 20.
Inicialmente, o algoritmo deve verificar se n vlido, ou seja, se est entre 1 e 20. Se o n for vlido, o algoritmo deve ler
n nmeros inteiros e armazen-los no vetor v, ao mesmo tempo em que calcula quantos desses nmeros so mpares. Por fim,
o algoritmo deve informar o nmero de nmeros primos lidos e armazenados em v. Aplique o teste de mesa assumindo n = 5 e
que o usurio informa os seguintes valores durante a leitura dos elementos do vetor de inteiros, nesta ordem: 1, 2, 3, 4, 5.
Referencias
MEDINA, M.; FERTIG, C. Algoritmos e programao: teoria e prtica. So Paulo: Novatec, 2006.
PUGA, S.; RISSETTI, G. Lgica de programao e estruturas de dados com aplicaes em Java. So Paulo: Pearson Prentice Hall, 2003.
SEBESTA, Robert W. Conceitos de linguagens de programao. 5. ed. Porto Alegre: Bookman, 2003.

Voltar Imprimir Topo

Você também pode gostar