Introducao a Logica de Programacao

36
Índice 1. Introdução à lógica de programação 1 _______________________________________4 1.1.___________________________________________Noções de lógica4 1.2._________________________________________________Algoritmos4 1.2.1.________________________________Formas de Representação de Algoritmos5 1.2.2._______________________________________________Descrição Narrativa6 1.2.3.____________________________________________________Fluxograma6 1.2.4.___________________________________________________Pseudocódigo7 1.3._______________Linhas de Código de um Algoritmo ou Programa8 1.4._______________________________________Execução do Programa8 1.5.________________________________________________Comentários8 1.6._________________________________________________Constantes8 1.7.__________________________________________________Variáveis8 1.7.1._______________________________________________Nomes de variáveis8 1.7.2.___________________Tipos de Dados Definidos Para as Variáveis8 1.7.3.______________________________________Declaração de Variáveis9 1.8._____________________________________Estrutura do algoritmo11 1.9._____________________________________Operadores aritméticos11 1.10. Operadores relacionais__________________________________12 1.11. Operadores lógicos______________________________________12 1.12. Regras de precedência___________________________________12 1.13. Atribuição______________________________________________13 1.14. Comandos de entrada e saída_____________________________13 1.14.1._______________________________________________Entrada de dados13 1.14.2._________________________________________________Saída de dados13 1.15. Estruturas de controle__________________________________15 1.16. Estrutura seqüencial____________________________________15 1.17. Estruturas de seleção___________________________________15 1.17.1._____________________________________________Seleção simples15 1.17.2.____________________________________________Seleção composta15 1.17.3.____________________________________________Seleção Aninhada16 1.17.4._________________________________Seleção de múltipla escolha18 1.18. Estruturas de repetição_________________________________20 1.18.1._______________________________Repetição com teste no início20 1.18.2.________________________________Repetição com teste no final20 1.18.3.__________________________Repetição com variável de controle21

Transcript of Introducao a Logica de Programacao

Page 1: Introducao a Logica de Programacao

Índice

1. Introdução à lógica de programação1____________________________________4

1.1. Noções de lógica________________________________________________________4

1.2. Algoritmos_____________________________________________________________41.2.1. Formas de Representação de Algoritmos________________________________________51.2.2. Descrição Narrativa________________________________________________________61.2.3. Fluxograma_______________________________________________________________61.2.4. Pseudocódigo_____________________________________________________________7

1.3. Linhas de Código de um Algoritmo ou Programa____________________________8

1.4. Execução do Programa__________________________________________________8

1.5. Comentários___________________________________________________________8

1.6. Constantes_____________________________________________________________8

1.7. Variáveis______________________________________________________________81.7.1. Nomes de variáveis_________________________________________________________81.7.2. Tipos de Dados Definidos Para as Variáveis_____________________________________81.7.3. Declaração de Variáveis_____________________________________________________9

1.8. Estrutura do algoritmo_________________________________________________11

1.9. Operadores aritméticos_________________________________________________11

1.10. Operadores relacionais_______________________________________________12

1.11. Operadores lógicos___________________________________________________12

1.12. Regras de precedência________________________________________________12

1.13. Atribuição__________________________________________________________13

1.14. Comandos de entrada e saída__________________________________________131.14.1. Entrada de dados_________________________________________________________131.14.2. Saída de dados___________________________________________________________13

1.15. Estruturas de controle________________________________________________15

1.16. Estrutura seqüencial_________________________________________________15

1.17. Estruturas de seleção_________________________________________________151.17.1. Seleção simples___________________________________________________________151.17.2. Seleção composta_________________________________________________________151.17.3. Seleção Aninhada_________________________________________________________161.17.4. Seleção de múltipla escolha_________________________________________________18

1.18. Estruturas de repetição_______________________________________________201.18.1. Repetição com teste no início________________________________________________201.18.2. Repetição com teste no final_________________________________________________201.18.3. Repetição com variável de controle___________________________________________21

1.19. Vetores____________________________________________________________24

1.20. Matrizes___________________________________________________________25

Page 2: Introducao a Logica de Programacao

1. Introdução à lógica de programação1

1.1. Noções de lógica

A lógica é a ação do pensamento humano para a solução de problemas do dia-a-dia mas, pode também, ser a origem de outros problemas. É a característica do pensamento correto. A lógica busca a correção do raciocínio, e é determinante nas tomadas de decisões. Por isso a lógica ensina a colocar ordem no pensamento. A lógica está presente nas ações da nossa vida: quando falamos ou escrevemos algo, por exemplo, devemos ordenar as palavras de forma lógica, de modo a expressar corretamente o que pensamos, o que sentimos e o que queremos.

Exemplo: O carro está com o pneu vazio. O macaco e a chave de rodas estão no porta-malas. Preciso primeiro pegar o macaco e a chave de rodas, para depois tomar outro passo para trocar o

pneu do carro.

1.2. Algoritmos

Algoritmo é uma seqüência de ações, organizadas de forma lógica, que visam alcançar um objetivo bem definido.

Apesar do nome parecer estranho, algoritmos são comuns em nosso cotidiano, como por exemplo uma receita de bolo. Nela está descrita uma série de ingredientes necessários, uma seqüência de diversos passos (ações) a serem executados para que se consiga fazer determinado tipo de bolo (objetivo bem definido).

Exemplo: Troca de uma lâmpada.

pegue uma escada;posicione-a embaixo da lâmpada;busque uma lâmpada novasuba na escada;retire a lâmpada velha;coloque a lâmpada nova;

Esse algoritmo tem um objetivo, trocar uma lâmpada, e faz isso bem. Mas troca a lâmpada mesmo que ela não esteja queimada.

Podemos melhorar esse algoritmo para que a lâmpada não seja trocada caso esteja funcionando, incluindo um teste.

ligue o interruptor;se o interruptor não acender, então:pegue uma escada;posicione-a embaixo da lâmpada;busque uma lâmpada nova;suba na escada;retire a lâmpada velha;coloque a lâmpada nova;

Ainda pode ocorrer de a nova lâmpada também não funcionar, podemos alterar o algoritmo para que as lâmpadas continuem sendo trocadas até que alguma funcione.

ligue o interruptor;se o interruptor não acender, então:

Page 3: Introducao a Logica de Programacao

pegue uma escada;posicione-a embaixo da lâmpada;busque uma lâmpada nova;suba na escada;retire a lâmpada velha;coloque a lâmpada nova;enquanto a lâmpada não acender, faça:retire a lâmpada;coloque outra lâmpada;

Exercícios propostos 1

1) Um homem quer atravessar um rio com um barco que pode carregar ele mesmo e apenas mais uma de suas três cargas: um lobo, um carneiro e um maço de alfafa. O que o homem deve fazer para atravessar o rio sem perder nenhuma de suas cargas?

2) Suponha que você possua um robô e queira fazê-lo trocar uma lâmpada e depois conferir se a mesma acende, sendo que o mesmo foi programado para obedecer os seguintes comandos:

pegue <objeto>largue <objeto>pressione <objeto>gire garras 180 graus no sentido horário (parafusar)gire garras 180 graus no sentido anti-horáriomova <objeto> para/até < lugar>desloque-se para <lugar> O robô ainda é capaz de :perceber quando um comando não é mais possível(Utilize escada, lâmpada, interruptor, abaixo da lâmpada, parte superior da escada, lixeira, etc...)

3) Elabore um algoritmo (descrever os passos) que permita mover 3 discos de uma torre de Hanói, que consiste em 3 hastes (a-b-c), uma das quais serve de suporte para os três discos de tamanhos diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, sendo que nunca deve ser colocado um disco maior sobre um menor. O objetivo é transferir os três discos da haste “a” para a haste “c”. Mova <disco n> da haste <n1> para haste <n2>

1.2.1. Formas de Representação de AlgoritmosExistem diversas formas de representação de algoritmos. Algumas formas de representação de

algoritmos tratam os problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. Por outro lado, existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer a idéia principal, o algoritmo, dificultando seu entendimento.

Dentre as formas de representação de algoritmo mais conhecidas, destacam-se: A descrição narrativa;

a

2

3

1

b c

Page 4: Introducao a Logica de Programacao

O fluxograma convencional; O pseudocódigo, também conhecido como linguagem estruturada ou Portugol.

1.2.2. Descrição NarrativaNesta forma de representação, os algoritmos são expressos em linguagem nativa, como o exemplo

do algoritmo da troca de lâmpada, discutido acima.

1.2.3. FluxogramaFluxograma é uma ferramenta desenvolvida e usada pelos profissionais de análise de sistemas,

bem como, por alguns profissionais de Organização, Sistemas e Métodos. Tem como finalidade descrever o fluxo, seja manual ou mecânico, especificando os suportes usados para os dados e informações. Usa símbolos convencionais, permitindo poucas variações. Representado por alguns desenhos geométricos básicos, os quais indicarão os símbolos de entrada de dados, do processamento de dados e da saída de dados, acompanhados dos procedimentos requeridos pelo analista de sistemas e a serem realizados pelo programador por meio do desenvolvimento do raciocínio lógico, o qual deverá solucionar o problema do programa a ser processado pelo computador. A tabela abaixo mostra alguns símbolos e seu significado.

Símbolo Significado Terminal – Indica início ou fim do fluxo

Operação de entrada e saída. Genérica, sem indicar dispositivo.

Procedimentos. Comandos simples.

Operação de saída. Vídeo, impressora, etc.

Decisão. Indica que uma ou mais comparações serão feitas com a possibilidade de desvio para outras partes do programa.

Conectores.

Page 5: Introducao a Logica de Programacao

Sentido do fluxo.

Exemplo:

Início

Ler notas N1 e N2

Med = (N1+N2)/2

Não Sim Se Med >= 7.0

Escreva reprovado Escreva aprovado

Fim

Exercícios propostos 2

1) Elabore um fluxograma para ler duas notas, calcular a média semestral e informar ao aluno se ele está reprovado, em exame ou aprovado. Considerar a média para aprovação direta igual ou superior a 7,0. Para ficar de recuperação (exame), o aluno terá que ter média semestral mínima não inferior a 1,67.

2) Elabore um novo fluxograma a partir do desenvolvido para a questão anterior, informando se o aluno está aprovado ou não após o exame. O aluno deverá ter média semestral não inferior a 5,0 obedecendo ao seguinte cálculo: média semestral após exame = (media semestral antes do exame x 6 + nota do exame x 4)/10. Vide critérios de avaliação da UDESC no semestre 2003.2.

1.2.4. PseudocódigoA partir deste ponto, iniciaremos o estudo de algoritmos usando pseudocódigo (portugol). Um

modelo de escrita para facilitar o desenvolvimento de algoritmos. O pseudocódigo usado aqui terá uma organização (sintaxe) praticamente idêntica à da linguagem C, com as palavras chave traduzidas para o português e com algumas simplificações. Este aspecto é original, ou seja, não foi baseado em nenhuma

Page 6: Introducao a Logica de Programacao

referência. Preferimos que o algoritmo seja ensinado com a sintaxe semelhante a linguagem C pela facilidade que se obterá com este aspecto quando o C for estudado.

O objetivo de apresentar o pseudocódigo, é tornar o aluno familiarizado com a lógica de programação, através de algoritmos simples, antes de efetivamente começar a programar com a linguagem C. É extremamente importante compreender os assuntos aqui abordados pois serão necessários quando estivermos programando em C. A lógica de programação é fundamental para aprender a programar e muito importante para várias disciplinas de um curso de ciência da computação, portanto, aproveite e estude muito.

1.3. Linhas de Código de um Algoritmo ou ProgramaLinhas de código nada mais são do que a escrita do programa linha a linha, ou seja, a sintaxe do

programa. Todas as linhas escritas de um programa definem o código de comandos do programa, e, junto ao código pode-se escrever comentários sobre ele.

1.4. Execução do ProgramaQuando escrevemos um programa, para que ele mostre os efeitos (resultados) do que foi escrito e

solicitado através das linhas de comando, é necessário que o programa seja executado. Para tanto basta que acionemos um comando para essa execução começar. Em um algoritmo escrito em portugol ou similar, só é possível a execução do mesmo a nível do raciocínio lógico de nós mesmos – com o cérebro. Um algoritmo ou programa só é executável por uma máquina (computador) se nele tiver um outro programa (compilador) que transforme a linguagem usada no código do programa para a linguagem que o computador entenda. Por isso é importante que façamos um bom exercício mental colocando o cérebro para executar algoritmos. Fazendo assim, aprenderemos a lógica de programação e consequentemente aprenderemos a programar.

1.5. ComentáriosComentários são anotações escritas nas proximidades das linhas de código de um algoritmo ou

programa, e são usados para explicar melhor alguma parte do código para evitar confusões de entendimento na hora de sua análise. Para podermos identificar um comentário no código do programa ou algoritmo usaremos o símbolo /* antes do comentário e o */ após terminar o comentário. Nada do que for especificado como comentário valerá como código de programa, portanto não interferirá na execução.

1.6. ConstantesEntendemos que uma informação é constante quando não sofre nenhuma variação no decorrer do

tempo na execução do programa. Exemplo: Pi=3,141516. De fato, se o valor da constante Pi for utilizada em um programa, esta não deve ser modificada, portanto deve ser tratada como constante.

1.7. VariáveisTem-se como definição de variável toda informação que é sujeita a variações durante a execução do

programa ou algoritmo. No programa são requisitados espaços de memória que são alocados para armazenar o valor inicial da variável e os demais valores que ela assumir até o fim da execução do programa. Imagine que a memória de um computador é um grande armário com diversas gavetas, onde cada gaveta pode conter somente um valor. Deve-se concordar que é necessário identificar cada gaveta para sua utilização posterior, através de um nome.

1.7.1. Nomes de variáveisO nome de uma variável faz referência ao endereço de memória onde essa variável se encontra. Existem algumas regras para a utilização das variáveis: Nome de variável pode ter 1 ou mais caracteres. O primeiro caractere de uma variável deve ser uma letra ou sublinhado ( _ ). Nenhuma variável pode ter espaço em branco em seu nome.

Page 7: Introducao a Logica de Programacao

Nenhum nome de variável pode ser uma palavra reservada a uma instrução da linguagem usada.

Poderão ser utilizados somente letras, números e sublinhado; Procure sempre utilizar variáveis que tenham sentido Mnemônico.

1.7.2. Tipos de Dados Definidos Para as Variáveis Para definir uma variável é necessário dar um nome para ela e definir o tipo de informação que ela irá guardar. Esse tipo pode ser um valor numérico inteiro, um valor real ou um caracter ou conjunto de caracter (string).

Inteiro: toda e qualquer informação numérica que pertença ao conjunto dos números inteiros. Exemplos: a) 100 b) 9 c) 318 d) 5900

Real: toda e qualquer informação numérica que pertença ao conjunto dos números reais.

Exemplos: a) 100.99 b) 0.001 c) 1.5 d) 8.5056

Caractere: São caracterizadas com as seqüências contendo letras, números e símbolos especiais, ou seja, qualquer símbolo existente é um caracter. Uma seqüência de caracteres deve ser indicada entre aspas dupla (“aqui 24“), é também denominada String. Um caracter deve ser colocado entre aspas simples (‘A’). Exemplos: a) “oi mundo!” b) “não pise na grama” c) ‘1’ d) ‘a’ e) ‘ ‘

1.7.3. Declaração de VariáveisUm programa, em muitas vezes, precisa utilizar variáveis e constantes. Uma constante será definida no cabeçalho do programa e, normalmente, não mudará seu valor durante o processamento/execução do programa. As variáveis podem ter o seu valor alterado durante a execução do programa. As constantes, para o caso dos algoritmos que vamos construir serão definidas com letras maiúsculas. As variáveis terão que ser declaradas logo no início de cada programa.

As variáveis devem ser declaradas antes de serem usadas e no local adequado para seu funcionamento. Uma declaração especifica um tipo, e pode ser seguida por uma ou mais variáveis daquele tipo, separadas por virgulas. O fim da declaração é indicada por ponto e vírgula.

Sintaxe:tipo lista_de_nomes;

Exemplos:inteiro dia, mês;caracter sexo, escolha;caracter nome[80], dia_semana[10];real nota1, nota2, media;

Ao declarar variáveis do tipo caracter com mais de um caracter, ou outro tipo com o objetivo de guardar mais de um valor, deve-se definir o seu tamanho entre colchetes,

Page 8: Introducao a Logica de Programacao

logo após o nome da variável, como no exemplo acima. Abaixo mostra-se um pequeno programa exemplo.

MAX = 80NOME = ”Maria”Programa principalInício

Inteiro idade, ano, mes, dia;Real media, notoa1, nota2;Caracter sexo;Caracter nome[80];

media = (nota1 + nota2)/2;Fim

No pequeno programa acima, nota-se que MAX e NOME são constantes. As variáveis declaradas são: idade, ano, mes e dia como inteiro; media, nota1, nota2 como real; sexo como caracter de uma letra e nome como caracter de oitenta (80) letras. Observem a posição em que cada uma é escrita no programa. As constantes são definidas antes do início do programa principal. As variáveis são declaradas logo após o início do programa principal.

Exercícios propostos

1) Determine qual é o tipo primitivo de informação presente nas sentenças abaixo:

a) A placa “Pare!” tinha dois furos de bala.b) Josefina subiu 5 degraus para pegar uma maçã boa.

c) Alberta levou 3 horas e meia para chegar ao hospital onde concebeu uma garota.d) Felisberto recebeu sua 18ª medalha por ter alcançado a marca de 57,3 segundos nos 100 metros rasos.e) É melhor seguir pela “Rua” ‘A’ .

2a) Assinale os identificadores de tipos válidos:a) ‘X’b) U2c) Ah!d) “aluno”e) 55f) km/lg) UYTh) Asdrubali) AB*Cj) 2.43k) P{O}l) B25

2b) Assinale os identificadores de variáveis válidas:m) ‘X’n) U2o) Ah!

Page 9: Introducao a Logica de Programacao

p) “aluno”q) 55r) km/ls) UYTt) Asdrubalu) AB*Cv) 2.43w) P{O}x) B25

3) Suponha que as variáveis NB, NA, NMat, SX sejam utilizadas para armazenar, respectivamente, a nota do aluno, o nome do aluno, um número inteiro para a matrícula e o sexo com uma letra, declare-as corretamente.

4) Encontre os erros ou inadequação em relação a mnemônicos nas seguintes declarações de variáveis:

a) inteiro endereço, nFilhos; b) caractere ida de, 1x; c) real cruzeiros, 9xpto, c, peso, out;

5) Se uma variável armazenará nomes com o máximo de 90 letras, declare uma variável para guardar um nome qualquer.

6) Defina uma constante e declare uma variável para receber o valor da divisão da constante PI (3.141516) por 10.

7) Explique os termos: a) Algoritmos b) Código c) Programa d) Variável e) Constante

f) Comentários g) Memória h) Execução i) Compilação j) Tipos

1.8. Estrutura do algoritmoOs algoritmos serão estruturados da seguinte maneira:

definição de constantes

/*Definição das funções para tarefas específicas*/Nome_função_1(lista de declarações){ declarações de variáveis; comandos;

.

.

. retorno(valor);}

.

.

.

Nome_função_n(lista de declarações){

Page 10: Introducao a Logica de Programacao

declarações de variáveis; comandos;

.

.

. retorno(valor);}

Programa principal( ){

declaração de variáveis;comandos, inclusive as chamadas para funções, etc;

}

Onde o abrir chaves e o fechar chaves delimitam respectivamente onde o algoritmo começa e onde este termina. Nas declarações serão definidos os nomes e os tipos das variáveis usadas, no algoritmo. O corpo do programa conterá todas as instruções que deverão ser executadas. O número de módulos (funções) do programa dependerá do programador. É recomendável para a portabilidade, clareza de código e manutenção do algoritmo que os programas sejam feitos em módulos e com endentação.

1.9. Operadores aritméticosOs operadores são um conjunto de símbolos que indicam uma determinada operação a ser feita

pelo programa.

Operador Significado+ Adição- Subtração* Multiplicação/ Divisão

% Resto de divisão inteira

1.10. Operadores relacionaisUtilizamos os operadores relacionais para realizar comparações entre dois valores de mesmo

tipo. Tais valores são representados por constantes, variáveis ou expressões aritméticas. Os operadores relacionais são:

Operador Significado= = Igual a

!=, <>, ≠ Diferente de> Maior que

>=, ≥ maior ou igual a< Menor que

<=, ≤ menor ou igual

O resultado obtido é sempre um valor lógico.

Exemplo:2 * 4 = = 24 / 3 (verdadeiro)8 = = 8 (verdadeiro)

Page 11: Introducao a Logica de Programacao

1.11. Operadores lógicos

Utilizaremos três operadores básicos para a formação de expressões lógicas.Os operadores lógicos são:

Operador Significado.E., && Operador lógico e.OU., || Operador lógico ou

! Negação

1.12. Regras de precedênciaAlgumas vezes a ordem em que são realizadas as operações podem alterar o resultado de uma

expressão, essa ordem é definida pelas regras de precedência. A tabela a baixo lista em ordem decrescente a precedência dos operadores. Essa ordem pode ser mudada com o uso dos parênteses, sendo executadas primeiro as operações dentro dos parênteses mais internos.

Operador Significado! - Negação e negativo

* / % Multiplicação, divisão e resto da divisão inteira+ - Adição e subtração

< ≤ ≥ > Maior que, maior ou igual a, menor que e menor ou igual a= = ≠ Igual e diferente

.E. Operador lógico e.OU. Operador lógico ou

= Atribuição

Exercício proposto

Determine os resultados obtidos na avaliação das expressões lógicas seguintes, sabendo que A, B, C, D e E contêm respectivamente 2, 7, 3.5, “noite” e “frio”:a) B = = A * Cb) “dia” = = D .OU. “frio” ≠ “clima”c) B / A ≥ C .OU. (A ≤ C)d) 3 / 7 * 2 = = 14 / A .OU. (B – 3 ≤ C + 0,5)e) (B + (-2)) = = (((2 * C) * 2) / 10)

1.13. Atribuição

Para atribuir um valor a uma variável, o tipo do valor fornecido deve ser compatível com o tipo da variável. Isso é feito da seguinte forma: variável = expressão;

Exemplo:inteiro x; /* declara a variável */x = 8 + 13; /* x agora guarda 21, o resultado de 8 + 13 */OBS.: De acordo com a ordem de precedência dos operadores, a atribuição será feita por último.

Exercícios propostos

1) Encontre os erros nos seguintes comandos de atribuição:real B, C;inteiro D;D = B;C + 1 = B + C;

Page 12: Introducao a Logica de Programacao

B = 10 + 2 / 9 – (15 / (-4 / 2)) ≤ (5 * (-1));C .E. B = 3.5;

1.14. Comandos de entrada e saídaNa criação de algoritmos precisamos de comandos para entrar com as informações para o

algoritmo e esperamos que o algoritmo nos retorne uma informação como saída.

1.14.1. Entrada de dadosO comando de entrada, através do qual faremos o algoritmo esperar que lhe seja passada alguma

informação será o leia.Sintaxe:leia(parâmetro_1, parâmetro_2, ..., parâmetro_n);

Os parâmetros serão variáveis que receberão os valores digitados pelo usuário.

1.14.2. Saída de dadosUm algoritmo não teria serventia alguma se não pudesse nos devolver algum resultado. Faremos

os algoritmos retornarem seus resultados através do comando escreva.

Sintaxe:escreva(parâmetro_1, parâmetro_2, ..., parâmetro_n);

Os parâmetros podem ser variáveis, constantes ou expressões que serão impressas na tela, na ordem em que aparecem na função.Exemplo:/* programa media */Programa Principal ( ){ real valor1, valor2, media;

escreva(“entre com os dois valores: ”); /* escreve o texto entre aspas na tela */ leia(valor1, valor2); /* atribui os valores digitados pelo usuário a valor1 e valor 2 */ media = (valor1 + valor2) / 2; escreva(“media: ”, media); /* escreve na tela o texto entre aspas seguido do valor contido em media */}

Exercícios propostos

1) Utilizando o seguinte trecho de algoritmo:...inteiro x, y;real z; escreva(“x: ”); leia(x); escreva(x, “ ao cubo = ”, x*x*x); escreva(“y: ”); leia(y); escreva(x + y); z = x / y; escreva(z);

Page 13: Introducao a Logica de Programacao

z = z + 1; x = (y + z) % 2; escreva(x);...Explique o que está acontecendo em cada linha e qual é o resultado de cada ação executada.

2) Cite e discorra sobre três exemplos do seu dia-a-dia nos quais você encontra explicitados entrada, saída e processamento.

3) Faça uma analogia de entrada, processamento e saída de dados com o que acontece quando você lê e sintetiza um livro e quando você dialoga com outra pessoa.

4) Calcular e exibir a área de um quadrado, a partir do valor de sua aresta que será digitado.

5) Calcular e exibir a área de um quadrado a partir do valor de sua diagonal que será digitado.

6) A partir dos valores da base e altura de um triângulo, calcular e exibir sua área.

7) Calcular e exibir a média aritmética de quatro valores quaisquer que serão digitados.

8) Calcular e exibir a tensão de um determinado circuito eletrônico a partir dos valores da resistência e corrente elétrica que serão digitados. Utilize a lei de Ohm.

9) Entrar via teclado com o valor de uma temperatura em graus Celsius, calcular e exibir sua temperatura equivalente em Fahrenheit.

10) Entrar via teclado com o valor da cotação do dólar e uma certa quantidade de dólares. Calcular e exibir o valor correspondente em Reais (R$).

11) Entrar via teclado com o valor de cinco produtos. Após as entradas, digitar um valor referente ao pagamento da somatória destes valores. Calcular e exibir o troco que deverá ser devolvido.

1.15. Estruturas de controleAtravés das estruturas básicas de controle do fluxo de execução – seqüencial, seleção, repetição –

e da combinação delas, poderemos criar um algoritmo para solucionar vários problemas.

1.16. Estrutura seqüencialAções que serão executadas na ordem em que foram escritas, de cima para baixo e da esquerda

para a direita. O ponto-e-vírgula (;) delimita o fim de um comando.

1.17. Estruturas de seleção

1.17.1. Seleção simples

Uma estrutura de seleção permite a escolha de um bloco de comandos a ser executado quando determinadas condições, representadas por expressões lógicas, são ou não satisfeitas.

Sintaxe:

se (condição) {

Page 14: Introducao a Logica de Programacao

comando_1; comando_2; comando_n;}

Onde condição é uma expressão lógica. Os comandos só serão executados se a condição resultar verdadeira. As chaves permitem a execução de todos os comando dentro da estrutura de seleção. Se houver apenas um comando não é necessário as chaves, e a seleção termina no primeiro ponto e vírgula.

1.17.2. Seleção composta

Um segundo bloco de comandos é adicionado, estes serão executados somente se a condição testada for falsa, isto se faz usando a palavra reservada senão. Se a condição resultar verdadeira, somente os comandos dentro da seleção se serão executados, os comandos dentro do senão não são executados, passando-se a avaliar a linha logo abaixo do último comando senão.

Sintaxe:

se (condição) { comando_1; comando_2;

comando_n;}senão{ comando_1; comando_2;

comando_n;}

Exemplo1:/* programa média */Programa principal( ){ real n1, n2, n3, n4, media; escreva(“entre com as quatro notas: ”); leia(n1, n2, n3, n4); media = (n1 + n2 + n3 + n4) / 4; escreva(“média: ”, media);

se (media ≥ 7) /* verifica se a média é maior ou igual a 7 */ escreva(“Aluno aprovado”); /* escreva é executado se o teste resultar verdadeiro */ senão escreva(“Aluno reprovado”); /* executado se o teste resultar falso */ }

Se desejarmos escrever mais de um comando dentro da estrutura se-senão, devemos usar as chaves, como segue:

Page 15: Introducao a Logica de Programacao

Exemplo2:

/* programa média */Programa principal( ){ real n1, n2, n3, n4, media; escreva(“Entre com as quatro notas: ”); leia(n1, n2, n3, n4); media = (n1 + n2 + n3 + n4) / 4; se (media ≥ 7) /* verifica se a média é maior ou igual a 7 */ { escreva(“Aluno aprovado”); /* escreva é executado se o teste resultar verdadeiro */ escreva (“Média = “, media); } senão { escreva(“Aluno reprovado”); /* executado se o teste da condição resultar falso */ escreva (“Média= “, media); } }

1.17.3. Seleção Aninhada

Estruturas de seleção podem ser aninhadas, ou seja, podemos incluir uma estrutura de seleção dentro de outra. Isso pode ser feito quantas vezes for necessário. Para melhor compreensão observe a sintaxe abaixo. Sintaxe:se (condição) { comando_1; comando_2; comando_n;}senão{ se (condição) { comando_1; comando_2; comando_n; } senão { se (condição) { comando_1; comando_2; comando_n;

}senão{

Page 16: Introducao a Logica de Programacao

.

.

.}

}}

Exemplo/* programa número maior menor ou igual a zero*/Programa principal( ){ real num; escreva(“Entre com um número: ”); leia(num); se(num < 0) { escreva(“Número menor que zero.”); escreva(num); } senão { se (num = = 0) { escreva(“Número igual a zero.”); escreva(num); } senão { escreva (“Numero maior que zero.”); escreva (num); } /* fim do último senão */ } /* fim do penúltimo senão */ } /* fim do programa */

1.17.4. Seleção de múltipla escolha

O uso de uma estrutura chave (switch) de múltipla escolha em programação, pode ser feito com o uso da avaliação de casos em que uma constante_chaveadora ou valor de uma variável dentro da chave é comparado com a constante de cada caso. Se na avaliação do caso resultar em satisfizer a condição (resultado verdadeiro), normalmente é executado o comando de parada pare (break) e a estrutura chave é abandonada executando-se os comandos fora da estrutura. Se nenhum dos casos satisfizer a condição (todos os casos forem falsos), o comando caso_contrário (default), se existir, será executado. Se o comando caso_contrário não existir, o símbolo chaves ( } ) no programa é encontrado e é fechada a estrutura de múltipla escolha saindo da mesma. Vejamos a sintaxe abaixo.

Sintaxe:

chave( constante_chaveadora ) { caso constante_1: comando_1; comando_2; . . comando_n;

Page 17: Introducao a Logica de Programacao

pare; . . . caso constante_n: comando_1; comando_2; . . comando_n; pare; . . caso_contrário: comando_1; comando_2; . . comando_n;}

Exemplo:Programa principal( ){ real preço; inteiro origem; leia(preço, origem); chave (origem) { caso 1: escreva(preco, “ – produto do sul”);

pare;

caso 2: escreva(preco, “ – produto do norte”);

pare; caso 3: escreva(preco, “ – produto do leste”);

pare; caso 4: escreva(preco, “ – produto do oeste”);

pare; caso 5: escreva(preco, “ – produto do sudeste”); caso 6: escreva(preco, “ – produto do centro-oeste”); caso 7: escreva(preco, “ – produto do nordeste”); caso contrário: escreva(preco, “ – produto importado”); } /* Fim das escolhas ou chaveamento */} /* Fim do programa*/

Exercícios propostos

Page 18: Introducao a Logica de Programacao

1) Fazer um algoritmo para entrar via teclado com dois valores distintos e exibir o maior deles.

2) Usando a estrutura de escolha de vários casos (chave – caso) fazer um algoritmo para entrar com dois valores quaisquer e exibir o maior deles, se existir, caso contrário, enviar mensagem avisando que os números são idênticos.

3) Fazer um algoritmo para calcular e exibir a área de um retângulo, a partir dos valores da base e altura que serão digitados. Se a área for maior que 100, exibir a mensagem “Terreno grande”.

4) Fazer um algoritmo para calcular e exibir a área de um retângulo, a partir dos valores da base e altura que serão digitados. Se a área for maior que 100, exibir a mensagem “Terreno grande”, caso contrário, exibir a mensagem “Terreno pequeno”.

5) Fazer um algoritmo para entrar via teclado com três valores distintos. Exibir o maior deles.

6) Fazer um algoritmo para, a partir de três valores que serão digitados, verificar se formam ou não um triângulo. Em caso positivo, exibir sua classificação: “Isósceles, escaleno ou eqüilátero”. Um triângulo escaleno possui todos os lados diferentes, o isósceles, dois lados iguais e o eqüilátero, todos os lados iguais. Para existir triângulo é necessário que a soma de dois lados quaisquer seja maior que o outro, isto, para os três lados.

7) Fazer um algoritmo para verificar se três valores quaisquer (a, b, c) que serão digitados formam ou não um triângulo retângulo.

8) Escreva um algoritmo para determinar se um número lido do teclado é maior, menor, ou igual a zero.

9) Usando a estrutura se-senão aninhada, faça um algoritmo que leia o nome do aluno e suas duas notas. A partir das informações lidas:

Calcule e mostre a média do aluno;Verifique qual será o conceito atribuído ao aluno: se a média for menor que 5: E

se a média for maior ou igual a 5 e menor que 6: Dse a média for maior ou igual a 6 e menor que 7,5: Cse a média for maior ou igual a 7,5 e menor que 9,0: Bse a média for maior ou igual a 9 e menor ou igual a 10,0: A

1.18. Estruturas de repetição

São estruturas usadas para repetir um trecho de código, quando a avaliação da condição for satisfeita, enquanto essa condição for verdadeira os comandos dentro da estrutura ficam se repetindo. A condição deve, em algum momento, tornar-se falsa ou a estrutura ficará se repetindo infinitamente.

1.18.1. Repetição com teste no início

Aqui o teste é feito antes de iniciar cada execução dos seus comandos.

Sintaxe:

enquanto (condição) { comando_1; comando_2;

. .

Page 19: Introducao a Logica de Programacao

. comando_n;}

Os comandos entre chaves são repetidos enquanto a condição lógica entre os parênteses for verdadeira, sendo que o teste é feito antes da execução dos comandos.

Exemplo:/* programa média 50 calcula a média anual para 50 alunos */

Programa principal( ){ real n1, n2, n3, n4, ma; /* notas bimestrais e média anual */ inteiro cont; /* contador */ caracter nome[80]; cont = 0; enquanto (cont < 50) /* termina o loop se as médias dos 50 alunos já foram calculadas */ {

escreva (“Entre com o nome do aluno”);leia (nome);

escreva(“Entre com suas 4 notas bimestrais”); leia(n1, n2, n3, n4); ma = (n1 + n2 + n3 + n4) / 4; escreva(“Nome: “, nome, “Média anual: ”, ma); se (ma >= 7) escreva(“aluno aprovado”); senão escreva(“aluno reprovado”); cont = cont + 1; /* aumenta em um o número de alunos que já tiveram a média calculada*/ }}

1.18.2. Repetição com teste no final

Nesta estrutura de repetição, os seus comandos são executados antes de acontecer o teste, sendo o resultado do teste verdadeiro o bloco de comandos da estrutura será executado novamente.

Sintaxe:faça{ comando_1; comando_2; comando_n;}enquanto (condição);

O bloco de comandos é executado, então, se a condição for verdadeira, o bloco é executado novamente, até que a condição seja falsa.

Exemplo:

/* programa para calcular a média anual de uma turma de 50 alunos */Programa principal ( ){

Page 20: Introducao a Logica de Programacao

real ma, /* média anual de um aluno */ acm, /* acumulador */ mat; /* média anual da turma */ inteiro cont; /* contador */ cont = 1; acm = 0; faça { escreva(“entre com a média anual do aluno: ”); leia(ma);

/* acumula as médias dos alunos */ acm = acm + ma;

/* conta para o próximo aluno */ cont = cont + 1;

} enquanto (con <=50); /* para de somar depois do 50º aluno */

mat = acm / 50; /*calcula a média anual da turma*/ escreva(“média anual da turma: ”, mat);}

1.18.3. Repetição com variável de controle

Essa estrutura traz algumas facilidades para ocasiões onde o número de repetições (iterações) é definido. Ela permite inicializar a variável que servirá de contador, definir a condição de parada e o incremento do contador.

Sintaxe:para (inicialização; condição; controle) { comando_1; comando_2;

comando_n;}

Exemplo:Programa Principal ( ){ real ma, acm, mat; inteiro i; acm = 0; para (i = 1; i < =50; i = i + 1) { escreva(“entre com a média anual do aluno”); leia(ma); acm = acm + ma; } mat = acm / 50; escreva(“média anual da turma: ”, mat);

Page 21: Introducao a Logica de Programacao

}

Este exemplo faz o mesmo que o exemplo anterior, mas usa a estrutura para. Geralmente um problema pode ser resolvido de várias maneiras diferentes, cabe ao programador escolher a melhor opção. No exemplo acima o termo para parece ser mais adequado.

Exercícios propostos

1) Fazer um algoritmo para entrar com dois valores via teclado, onde o segundo deverá ser maior que o primeiro. Caso contrário solicitar novamente apenas o segundo valor.

2) Fazer um algoritmo para entrar via teclado com dez valores positivos. Verificar a digitação e enviar mensagem de erro, se necessário. Após a digitação, exibir:

a) O maior valor;b) A soma dos valores;c) A média aritmética dos valores;

3) Fazer um algoritmo para criar uma rotina de entrada que aceite somente um valor positivo.

4) Fazer um algoritmo para entrar via teclado com o sexo de determinado usuário, aceitar somente “F” ou “M” como respostas válidas.

5) Fazer um algoritmo para exibir a tabuada do número cinco no intervalo de um a dez.

6) Fazer um algoritmo para exibir a soma dos números inteiros positivos do intervalo de um a cem.

7) Fazer um algoritmo para exibir os trinta primeiros valores da sequencia de Fibonacci: 1, 1, 2, 3, 5, 8, 13, ...

8) Fazer um algoritmo para entrar via teclado com um valor qualquer. Travar a digitação, no sentido de aceitar somente valores positivos. Após a digitação, exibir a tabuada do valor solicitado, no intervalo de um a dez.

9) Fazer um algoritmo para entrar via teclado com um valor (X) qualquer. Travar a digitação, no sentido de aceitar somente valores positivos. Solicitar um intervalo (A – B) para que o programa possa calcular a tabuada do valor digitado, sendo que o segundo valor (B), deverá ser maior que o primeiro (A), caso contrário, digitar novamente somente o segundo. Após a validação dos dados, exibir a tabuada do valor digitado, no intervalo decrescente, ou seja, a tabuada de X no intervalo de B para A.

10) Fazer um algoritmo para calcular o fatorial de um valor que será digitado. Este valor não poderá ser negativo. Enviar mensagem de erro e solicitar o valor novamente, se necessário. Perguntar se o usuário deseja ou não fazer um novo cálculo, consistir a resposta em “S” ou “N”.

11) Fazer um algoritmo para entrar via teclado com “N” valores quaisquer. O valor “N” (que representa a quantidade de números) será digitado, deverá ser positivo, mas menor que vinte. Caso a quantidade

Page 22: Introducao a Logica de Programacao

não satisfaça a restrição, enviar mensagem de erro e solicitar o valor novamente. Após a digitação dos “N” valores, exibir:

a) maior valor;b) menor valor;c) A soma dos valores;d) A média aritmética dos valores;e) A porcentagem de valores que são positivos;f) A porcentagem de valores negativos;

12) Fazer um algoritmo para após exibir os dados, perguntar ao usuário se deseja ou não uma nova execução do programa. Consistir a resposta no sentido de aceitar somente “S” ou “N” e encerrar o programa em função dessa resposta.

13) O jogo da mega-sena consiste em acertar seis dos sessenta números disponíveis em um volante. Fazer um programa para calcular a quantidade de jogos que temos que fazer, para com certeza acertar o resultado da mega-sena. Admitindo que faremos jogos de seis números por volante, o programa deverá exibir quais seriam estes números em cada volante, ou seja, exibir todos os resultados possíveis.

1.19. Vetores

Até aqui, apresentamos uma forma simples para reservar espaço de memória no computador, ou seja: através do artifício da declaração de variáveis simples.

Exemplo de uso simples da memóriaConsidere o código de declaração abaixo:

inteiro num;real media;

MEMÓRIA

num

media

Page 23: Introducao a Logica de Programacao

Conforme se pode observar na figura acima, a memória é dividida em células. Consideramos que cada célula é constituída de 8 (oito) bits de capacidade e pode armazenar um único caracter.

Ao declarar a variável num como inteiro, a máquina reservará uma quantidade dessas células para armazenar um valor numérico inteiro. Como os inteiros são menores que os valores reais, o espaço de memória reservado para este tipo (inteiro) também é menor que o espaço reservado para o tipo real. Normalmente nas máquinas, para um tipo real é armazenado o dobro do espaço do tipo inteiro.

Desta forma, se para um inteiro a arquitetura da máquina dispor de 2 células e cada célula for constituída por 8 bits, o inteiro terá capacidade para 16 bits enquanto um valor real terá 32 bits de capacidade.

Entretanto, a declaração de variáveis simples não garante que possamos guardar na memória mais que um valor ao mesmo tempo. Por exemplo, no problema de cálculo de média aritmética de duas notas de uma turma de alunos, se declararmos uma variável simples definida como media, esta variável somente poderá guardar na memória um valor por vez, sendo este valor substituído pelo próximo e assim por diante.

Se desejarmos armazenar vários valores reais do mesmo nome ao mesmo tempo, como no caso de várias médias de alunos, pode-se determinar que a máquina (computador) reserve espaço de memória referenciada pelo nome média mas com vários campos do tamanho de um valor do tipo real, colocando um colchetes após a definição do nome da variável e o tamanho que se deseja reservar dentro dos colchetes, conforme mostrado abaixo na declaração da variável média com tamanho para 5 (cinco) médias de alunos e não mais apenas uma média como apresentado anteriormente.

real media[5];MEMÓRIA

Desta forma, pode-se deduzir, que para armazenar vários valores correspondentes a mesma variável pode-se utilizar vetores para alocação de memória. Entretanto, quando tentarmos armazenar espaço em memória para vários nomes, é bom lembrar que um único nome já ocupa uma cadeia de células na memória. Devido a isso, para armazenar espaço para vários nomes ficarem armazenados na memória ao mesmo tempo, é necessário fazermos o uso de um vetor de duas dimensões: uma dimensão para os caracteres do nome e uma outra para indicar cada nome. Assim, nas colunas ficam armazenados os caracteres de cada nome e em cada linha é reservado o espaço para a posição (endereço) de cada nome. Veja a declaração no código a seguir e o esquema abaixo.

caracter nome[5][10];MEMÓRIA

Como pode-se observar, no esquema acima está a representação da memória com espaço para cinco nomes de no máximo 10 caracteres cada um.

media[0]

media[1]

media[2]

media[3]

media[4]

0123456789nome[0]MariaPeranome[1]TiaoSouzanome[2]CacoBomnome[3]DarciGolnome[4]MartaSilv

caracteres

Endereço dos nomes

Page 24: Introducao a Logica de Programacao

Exemplo1Fazer um algoritmo para ler um vetor real de 10 elementos e imprimir os valores maiores ou iguais a

zero.

/* Algoritmo Imprimir vetor real maior ou igual a zero */Início real vet [10]; int I;

para (I = 0; I <10; I = I +1) { Escreva (“vet[“, I , “]= “); Leia (vet [ I ]); } para (I = 0; I <10; I = I +1) { Escreva (“vet[“, I , “]= “); se (vet [ I ] > = 0 ) { Escreva (vet [ I ] ); } }Fim

No exemplo acima pode-se escrever o valor de cada elemento do vetor depois de todos os elementos lidos. Claro, isso é feito somente para comprovar que os valores ficam todos armazenados na memória, senão, para escrever cada valor do vetor poderia ser implementado o comando “se” e o comando “escreva” no primeiro laço de repetição logo abaixo da leitura dos valores.

1.20. Matrizes

Uma matriz nada mais é que um vetor bidimensional. No exemplo dado acima, com a variável nome, na realidade, usamos uma matriz para guardar 5 (cinco) nomes. Desta forma, podemos também reservar espaço em memória para uma matriz numérica, seja ela do tipo real ou inteira. O código a seguir e o esquema de memória abaixo ajudam a compreender o que acontece.

inteiro A[4][5]; /* Matriz A de tamanho 4x5*/

Como pode-se observar acima, o conteúdo de A[0][0] ocupará a primeira célula, o conteúdo de A[0][1] ocupará a segunda célula, assim por diante até a última célula ou o conteúdo de A[3][4].Ao estudar uma estrutura como vetores ou matrizes pode-se concluir que qualquer variável de um tipo (caracter, inteiro ou real) pode ser definida como uma dessas estruturas. A opção pelo uso delas está na necessidade para a solução do problema.

Exemplo2

0 1 2 3 40 A[0][0] A[0][1] A[0][2] A[0][3] A[0][4]1 A[1][0] A[1][1] A[1][2] A[1][3] A[1][4]2 A[2][0] A[2][1] A[2][2] A[2][3] A[2][4]3 A[3][0] A[3][1] A[3][2] A[3][3] A[3][4]

Page 25: Introducao a Logica de Programacao

Fazer um algoritmo para ler uma matriz A e uma outra matriz B de valores inteiros, somar as duas matrizes e colocar o resultado em uma matriz C. A matriz C deverá ser impressa na tela. Considerar a ordem de todas as matrizes lidas como 2x2.

/* Algoritmo soma de duas matrizes inteiras 2x2 */

Início int I, J, A [2][2], B[2][2], C[2][2];

para (I = 0; I <2; I=I+1) { para (J = 0; J<2; J = J+1) { Escreva(“A[“, I, “] [“, J, “]= ”); Leia (A [I][J]);

Escreva(“B[“, I, “] [“, J, “]= ”); Leia (B [I][J]);

C[I][J]= B[I][J] + A[I][J];

Escreva(“C[“, I, “] [“, J, “]= ”, C[I][J]); } }fim

Exercícios propostos

1) Dado o vetor VET, definido por:inteiro VET[100];a) preenchê-lo com o valor 30;b) preenchê-lo com os números inteiros 1, 2, 3..., 100;c) preencher VET[I] com 1, se I é quadrado perfeito, e com 0, nos demais casos.

2) Dado o seguinte vetor:qual será a sua configuração depois de executados os comandos:

para (I = 7; I>=4; I=I-1) { aux=VET[I]; VET[I] = VET[7– I +1]; VET[7 – I + 1] = aux;}VET[2]=VET[0];VET[VET[2]] = VET[VET[1]];

3) Escreva um algoritmo em portugol, para um programa que:a) leia um conjunto A de 100 elementos reais;b) construa e imprima um outro conjunto B formado da seguinte maneira:i) os elementos de ordem par são os correspondentes de A divididos por 2;ii) os elementos de ordem ímpar são os correspondentes de A multiplicados por 3.

4) Dado o seguinte vetor de caracteres:

32412583VET

VET TRXSEOBA!

Page 26: Introducao a Logica de Programacao

Qual será a sua configuração após serem executados os comandos a seguir ?

aux = VET[5];VET[5]=VET[8];VET[8]=aux;para (I=0; I<=3; I=I+1){ aux = VET[I]; VET[I]=VET[8 – I]; VET[8 – I] = aux;}VET[5] = VET[1];

5) Escreva um algoritmo em portugol que:a) Leia um conjunto A de 20 elementos do teclado;b) calcule e imprima o valor de S, onde:S = (A1 – A20)2 + (A2 – A19)2 + ......+ (A10 – A11)2 10

ou seja, S = (Ai – A21-i)2 i = 1

6) Fazer um algoritmo para ordenar um vetor de números em ordem crescente. O vetor ordenado deverá ser impresso na tela.

7) Escreva um algoritmo que leia dois vetores de 10 posições e faça a multiplicação dos elementos de mesmo índice, colocando o resultado em um terceiro vetor. Mostre o vetor resultante.

8) Escreva um algoritmo que leia um vetor de 20 posições e mostre-o. Em seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Mostre o novo vetor depois da troca.

9) Escreva um algoritmo que leia um vetor de 80 elementos inteiros. Encontre e mostre o menor elemento e sua posição no vetor.

10) Escrever um algoritmo que lê 2 vetores X(10) e Y(10) e os escreve. Crie, a seguir, um vetor Z que seja

a) a união de X com Y; b) a diferença entre X e Y; c) a soma entre X e Y; d) o produto entre X e Y; e) a intersecção entre X e Y. Escreva o vetor Z a cada cálculo.

11) Faça um algoritmo que leia um vetor de 500 posições de números inteiros e divida todos os seus elementos pelo maior valor do vetor. Mostre o vetor após os cálculos.

12) Uma locadora de vídeos tem guardada, em um vetor de 500 posições, a quantidade de filmes retirados por seus clientes durante o ano de 1993. Agora, esta locadora está fazendo uma promoção e, para cada 10 filmes retirados, o cliente tem direito a uma locação grátis. Faça um algoritmo que crie um outro vetor contendo a quantidade de locações gratuitas a que cada cliente tem direito.

13) Escrever um algoritmo para a geração da seguinte matriz:

1 1 1 1 1 11 2 2 2 2 11 2 3 3 2 11 2 3 3 2 11 2 2 2 2 11 1 1 1 1 1

Page 27: Introducao a Logica de Programacao

1 2 13 1 4

1 32 11 4

14) Dada a matriz MAT abaixo:

Qual será a configuração de MAT depois de executado o algoritmo?início inteiro I, J; caracter aux; caracter MAT [4][4]; para (I=0; I<=3; I=I+1) { para (J=I+1; J<=3; J=J+1) { aux = MAT[I][J]; MAT[I][J]=MAT[J][I]; MAT[J][I]=aux; } } aux=MAT[1][1]; MAT[1][1]=MAT[4][4]; aux=MAT[2][2]; MAT[2][2]=MAT[3][3]; MAT[3][3]=aux;fim

15) Descreva o que será produzido depois de executados os comandos abaixo se:

A =

C=

para (I=0; I<2; I=I+1){ para (J=0; J<2; J=J+1) { para (k=0; k<=2; k=k+1) { escreva(A[I][k] + C[k][j]); } }}

16) Fazer um algoritmo para multiplicar duas matrizes de mesma ordem. A matriz produto deverá ser impressa na tela.

17) Escreva um algoritmo que lê uma matriz M(5x5) e calcula as somas:   a) da linha 4 de M b) da coluna 2 de M c) da diagonal principal d) da diagonal secundária

a b cd e fg h i

Page 28: Introducao a Logica de Programacao

e) de todos os elementos da matriz M Escrever essas somas e a matriz.

18) Escrever um algoritmo que lê uma matriz M(10x10) e a escreve. Troque, a seguir: a) a linha 2 com a linha 8 b) a coluna 4 com a coluna 10 c) a diagonal principal com a diagonal secundária d) a linha 5 com a coluna 10. Escreva a matriz assim modificada.

19) Escrever um algoritmo que lê uma matriz M(5x5) e cria 2 vetores SL(5) e SC(5) que contenham, respectivamente, as somas das linhas e das colunas de M. Escrever a matriz e os vetores criados.

Bibliografia

“Lógica de programação” de Forbellone e Eberspächer

“Algoritmos e Estruturas de Dados” de Guimarães/Lages.

Exercícios cedidos pelas professoras:Luciana Rita Guedes GuisleriJanine Kniess

Observação: Por favor, ao encontrar algum erro/falha no material favor entrar em contato pelo e-mail: [email protected]

Informando a página e o erro. Ficaremos muito agradecido por você ajudar a construir um material didático melhor para os alunos da UDESC de Joinville – Universidade Pública de qualidade e gratuita.