Buscar

Apostila de Lógica de Programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 62 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 1 
APOSTILA DE LÓGICA DE PROGRAMAÇÃO
Direitos autorais reservados à: 
Professor Eduardo Reus Souza. 
Escola QI – Porto Alegre 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 2 
Sumário 
Aula 1 ............................................................................................................................... 6 
Apresentação da Disciplina .......................................................................................... 6 
1. Considerações iniciais ...................................................................................... 6 
1.1. Lógica e Lógica de Programação ................................................................. 6 
1.2. Problema ....................................................................................................... 6 
1.3. Algoritmo ..................................................................................................... 6 
1.4. Programa ....................................................................................................... 6 
1.5. Formas de se representar um Algoritmo ...................................................... 6 
1.6. Regras para a Criação de Algoritmos ........................................................... 7 
1.7. Como proceder na construção de algoritmos? .............................................. 7 
1.7.1. Leia com atenção o enunciado do problema ............................................ 7 
1.7.2. Obtenha os dados de entrada .................................................................... 7 
1.7.3. Obtenha os dados de saída ........................................................................ 8 
1.7.4. Determinar o que deve ser feito para transformar as entradas 
determinadas nas saídas especificadas ..................................................................... 8 
1.7.5. Testar o algoritmo ..................................................................................... 8 
1.8. Exercícios propostos ..................................................................................... 8 
2. Variáveis e Constantes de memória (RAM) ..................................................... 9 
2.1. Memória ....................................................................................................... 9 
2.2. Como um programa é tratado na memória? ................................................. 9 
2.3. Variáveis ....................................................................................................... 9 
2.4. Constantes ..................................................................................................... 9 
2.5. Regras para formação de Identificadores ..................................................... 9 
2.6. Tipos de Dados ........................................................................................... 10 
2.7. Principais tipos de dados utilizados na disciplina ...................................... 10 
2.8. Exercícios Propostos .................................................................................. 10 
Aula 2 ............................................................................................................................. 11 
Começando a programar na Linguagem C ................................................................. 11 
3. Linguagens de programação ........................................................................... 11 
3.1. Linguagens de Baixo Nível ........................................................................ 11 
3.2. Linguagens de Alto Nível ........................................................................... 11 
3.3. Compilador ................................................................................................. 11 
3.4. Estrutura padrão de um algoritmo (C) ........................................................ 11 
3.5. Indentação ..................................................... Erro! Indicador não definido. 
3.6. Operadores aritméticos ............................................................................... 13 
3.7. Regras de precedência de operadores ......................................................... 13 
3.8. Exercícios Propostos .................................................................................. 13 
Aula 3 ............................................................................................................................. 14 
3.9. Utilizando instruções de I/O ....................................................................... 14 
3.10. Exercícios Propostos .............................................................................. 15 
Aula 4 ............................................................................................................................. 17 
Introdução ao DEV-C++ ............................................................................................ 17 
4. Sobre o software ............................................................................................. 17 
4.1. O que é DEV-C++? .................................................................................... 17 
4.2. Versão do DEV-C++ .................................................................................. 17 
4.3. Interface do Software.................................................................................. 17 
4.4. Compilando um Projeto .............................................................................. 19 
4.5. Tipos de Erros ............................................................................................. 21 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 3 
4.6. Exercício Proposto ...................................................................................... 21 
Aula 5 ............................................................................................................................. 22 
Algoritmos Condicionais ............................................................................................ 22 
5. Introdução ....................................................................................................... 22 
5.1. Instrução IF (SE) ........................................................................................ 22 
5.2. Operadores Relacionais .............................................................................. 23 
5.3. Exercícios Propostos .................................................................................. 24 
Aula 6 ............................................................................................................................. 25 
Exercícios ................................................................................................................... 25 
Aula 7 ............................................................................................................................. 26 
Seleção encadeada ...................................................................................................... 26 
5.4. Instrução SWITCH ..................................................................................... 27 
5.5. Exercícios Propostos .................................................................................. 27 
5.6. Operadores (Conectores) Lógicos .............................................................. 29 
5.6.1. Operador && (E) .................................................................................... 29 
5.6.2. Operador || (OU) ..................................................................................... 29 
5.6.3. Operador ! (Não) ....................................................................................29 
5.7. Exercícios Propostos .................................................................................. 31 
Aula 8 ............................................................................................................................. 32 
Aula 9 ............................................................................................................................. 33 
Avaliação I .................................................................................................................. 33 
6. Introdução ....................................................................................................... 33 
6.1. Tipo de avaliação ........................................................................................ 33 
6.2. Continuação dos exercícios ........................................................................ 33 
Aula 10 ........................................................................................................................... 34 
Algoritmos de Repetição (Laços – Loops) ................................................................. 34 
7. Introdução ....................................................................................................... 34 
7.1. WHILE (ENQUANTO) ............................................................................. 34 
7.2. DO – WHILE (FAÇA ENQUANTO) ........................................................ 35 
7.3. FOR (PARA) .............................................................................................. 36 
7.4. Tipos de Variáveis ...................................................................................... 36 
7.4.1. Variáveis Contadoras .............................................................................. 36 
7.4.2. Variáveis Acumuladoras ........................................................................ 36 
7.4.3. Lixo de Memória .................................................................................... 37 
7.5. Modificações do Sinal de Atribuição ......................................................... 37 
7.6. Loops Infinitos ............................................................................................ 37 
7.7. Exercícios Propostos .................................................................................. 37 
Aula 11 ........................................................................................................................... 38 
Aula 12 ........................................................................................................................... 39 
Aula 13 ........................................................................................................................... 40 
Aula 14 ........................................................................................................................... 41 
Aula 15 ........................................................................................................................... 42 
Revisão Geral Para a Prova I ...................................................................................... 42 
Aula 16 ........................................................................................................................... 43 
Prova I ........................................................................................................................ 43 
Aula 17 ........................................................................................................................... 44 
Considerações sobre a prova ...................................................................................... 44 
Aula 18 ........................................................................................................................... 45 
Variáveis Homogêneas Unidimensionais (Vetores) ................................................... 45 
8. Introdução ....................................................................................................... 45 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 4 
8.1. O que são vetores? ...................................................................................... 45 
8.2. Representação Gráfica ................................................................................ 45 
8.3. Utilidade para Vetores ................................................................................ 45 
8.4. Declarando Vetores .................................................................................... 45 
8.5. Exemplo Prático ......................................................................................... 46 
8.6. Exercícios Propostos .................................................................................. 47 
Aula 19 ........................................................................................................................... 48 
Aula 20 ........................................................................................................................... 49 
Aula 21 ........................................................................................................................... 50 
Variáveis Homogêneas Multidimensionais (Matrizes) .............................................. 50 
9. Introdução ....................................................................................................... 50 
9.1. O que são Matrizes? ................................................................................... 50 
9.2. Representação Gráfica ................................................................................ 50 
9.3. Declarando Matrizes. .................................................................................. 50 
9.4. Exemplo Prático ......................................................................................... 51 
9.5. Exercícios Propostos .................................................................................. 52 
Aula 22 ........................................................................................................................... 53 
Aula 23 ........................................................................................................................... 54 
Aula 24 ........................................................................................................................... 55 
Introdução a Programação Modular ........................................................................... 55 
10. Introdução ................................................................................................... 55 
10.1. Por que Utilizar Programação Modular? ................................................ 55 
10.2. Como Implementar Programação Modular? .......................................... 55 
10.2.1. Funções ................................................................................................... 55 
10.2.2. Assinatura ............................................................................................... 55 
10.2.3. Argumento .............................................................................................. 55 
10.2.4. Parâmetro ................................................................................................ 55 
10.3. Exemplo Prático ..................................................................................... 55 
10.4. Escopo das Variáveis – Instanciamento de Variáveis ............................ 57 
10.5. Exercícios Propostos .............................................................................. 58 
Aula 25 ........................................................................................................................... 59 
10.6. Passagem de Parâmetros por Valor e Referência ................................... 59QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 5 
Introdução 
A disciplina introduz o estudo da programação, destacando a construção de algoritmos. 
Abrange os conceitos fundamentais da programação até o uso de estruturas básicas de 
dados (vetores, matrizes e registros). 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 6 
Aula 1 
Apresentação da Disciplina 
1. Considerações iniciais 
1.1. Lógica e Lógica de Programação 
Lógica de programação é a técnica de encadear pensamentos para atingir 
determinado objetivo. Estes pensamentos podem ser descritos como uma seqüência de 
instruções que devem ser seguidas para se cumprir uma determinada tarefa. Gerando ao 
final o que chamamos de programa. 
1.2. Problema 
A definição mais simples para problema é uma situação que precisa ser resolvida 
1.3. Algoritmo 
Algoritmo é uma seqüência ordenada e finita de passos lógicos, bem definas e 
eficazes para a solução de um problema em um tempo finito. 
Reparem que algoritmo não está diretamente relacionado à informática. Uma receita de 
bolo, por exemplo, seria um algoritmo que iria solucionar um problema específico do 
cotidiano humano. 
Reparem também que para um problema podemos ter diversos algoritmos, e que 
muitas vezes, estes só funcionariam dependendo de fatores externos. Como fazer um 
bolo de chocolate visto que faltou luz? A solução provavelmente será diferente da 
solução convencional. 
1.4. Programa 
Um programa não mais é do que um algoritmo computacionalmente aplicável. Isto 
é, serve para resolvermos problemas exclusivos do ambiente computacional. 
Todo programa é um algoritmo, porém nem todo algoritmo é um programa. 
1.5. Formas de se representar um Algoritmo 
Existem várias formas de se representar um algoritmo. Uma delas é escrevê-lo 
através da linguagem natural que usamos no dia-a-dia. Esta maneira, porém, podem 
levar a muitas ambigüidades, passíveis de interpretações errôneas. 
Outra forma de se representar os algoritmos são os fluxogramas convencionais, que 
usam formas geométricas diferentes para as diversas ações. Este método é bastante 
popular pela sua facilidade de compreensão, mas é um pouco limitado, preocupando-se 
muito com detalhes de nível físico da implementação do algoritmo. Outros tipos de 
fluxogramas mais modernos foram criados, mas não obtiveram a mesma popularidade. 
Na medida que os algoritmos tornaram-se muito grandes e complexos, os fluxogramas 
deixaram de ser utilizados para a representação da implementação, sendo direcionados 
para a fase de projeto do software. 
A terceira forma chama-se de pseudocódigo ou metalinguagem. Esta forma de 
representação de um algoritmo assemelha-se muito à forma com que os programas são 
escritos e consiste na descrição dos passos do algoritmo através de frases construídas 
sob uma sintaxe rigorosamente definida. Assim, consegue-se uma descrição do 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 7 
algoritmo livre de ambigüidades e com uma estrutura bastante flexível e completa, onde 
todos os elementos estão representados. 
No estudo da lógica de programação da nossa disciplina, será utilizada a terceira 
forma de representação, utilizando a sintaxe da linguagem de programação C. Não 
utilizaremos o padrão de português estruturado para evitar que nossos algoritmos 
precisem ser reescritos (faça em português, e depois refaça na sintaxe correta da 
linguagem). 
1.6. Regras para a Criação de Algoritmos 
A criação de algoritmos computacionais obedece ao princípio da informática. 
Sendo assim, sempre devemos pensar que nossas soluções devem passar por três 
fases distintas: 
 
 
 
 
Onde: 
Entrada: São os dados que devem ser informados (pelo usuário, ou não) para que o 
programa possa ser executado. 
Processamento: São os procedimentos que devem ser empregados para solucionar o 
problema. Neste podemos incluir operações matemáticas, comparações, repetições, etc. 
Saída: É o resultado final do algoritmo que deve ser entregue a algum lugar ou alguém. 
 
É importante ressaltar que: 
 A ordem das instruções devem ser levadas em consideração. 
 Não existe processamento sem a entrada de dados. 
 A saída de dados deve ser apresentada. 
 O número de instruções deve ser sempre finito. 
 
Exemplo 
Imagine o seguinte problema: calcular a média final dos alunos da 3ª Série. Os 
alunos realizarão quatro provas: P1, P2, P3 e P4. 
Onde: 
 
 Média Final = 
 
A entrada de dados serão as quatro notas. 
O processamento será o cálculo da média propriamente dita. 
A saída de dados será a exibição dessa média. 
1.7. Como proceder na construção de algoritmos? 
1.7.1. Leia com atenção o enunciado do problema 
Nessa primeira etapa devemos compreender perfeitamente o que precisamos 
fazer. A grande maioria dos problemas encontrados nos programas atuais ocorre 
por falhas na interpretação inicial do problema. 
1.7.2. Obtenha os dados de entrada 
Durante a leitura do problema, podemos descobrir quais são os dados que 
precisamos solicitar para a execução do algoritmo. 
Entrada Saída Processamento 
 P1 + P2 + P3 + P4 
 4 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 8 
1.7.3. Obtenha os dados de saída 
Da mesma forma que na entrada de dados, os dados de saída (qual a resposta que 
preciso informar) também pode ser descoberta lendo atentamente a definição do 
problema. 
1.7.4. Determinar o que deve ser feito para transformar as 
entradas determinadas nas saídas especificadas 
Nesta fase é que teremos a construção do algoritmo propriamente dito, pois, a 
partir de alguns requisitos especificados, devemos determinar qual seqüência de 
ações é capaz de transformar um conjunto definido de dados nas informações de 
resultado. 
1.7.5. Testar o algoritmo 
Nesta fase devemos verificar se o algoritmo realmente resolve o problema 
proposto, mesmo com variações nos dados de entrada. Essa é uma das principais 
fases do projeto, afinal, a premissa que devemos ter em relação a um software 
lançado no mercado é a de que este funciona. Chamamos esta etapa de teste de 
mesa. 
Vale ressaltar, que por mais exaustiva que seja a bateria de testes. Um programa 
nunca estará 100% imune a erros. Nessa etapa tentamos chegar o mais próximo 
possível deste índice. 
1.8. Exercícios propostos 
 
1. Especifique as ações necessárias para mover três disco de uma Torre de Hanói, que 
consiste de três hastes (a - b - c), uma das quais serve de suporte para 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, contanto que nunca seja colocado um disco 
maior sobre um menor. O objetivo é transferir os três disco para outra haste. 
 
 
 
 
 
 
 
 
 
 
 
2. Construa um algoritmo que informe os passos necessários para a trocar o pneu de 
um carro. Tendo como situação inicial que o carro estava em movimento numa 
estrada, que há acostamento e espaço suficiente para a troca. 
c b 
2 
a 
3 
1 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 9 
2. Variáveis e Constantes de memória (RAM) 
2.1. Memória 
Memória é um dispositivo utilizado para guardar de forma temporária ou não algum 
tipo de informação. 
Quando um programa é executado (tornando-se o que chamamos de processo), todo o 
seu conteúdo é posto na memória RAM (Random AccessMemory) do computador. 
Sendo que é somente nela que o mesmo é executado. 
2.2. Como um programa é tratado na memória? 
Todo o programa que é posto da memória RAM do computador é dividido em três áreas 
 
Área de Dados 
Área de Código 
Pilha 
Onde: 
Área de Dados: É o local destinado para o armazenamento dos dados vindos do 
usuário, cálculos, saídas. Enfim, é o espaço que o algoritmo tem para trabalhar. 
Área de Código: É o local onde está o algoritmo propriamente dito. 
Pilha: É quem garante a continuidade do programa. Se o programam efetua “saltos” 
dentro do código, é a pilha que mantém a informação de onde o código estava antes do 
salto consequentemente garantindo um retorno correto ao final do salto. Pilhas utilizam 
uma estrutura de dados manipulada pelo que chamamos de FIFO (First Input First 
Output). 
2.3. Variáveis 
Variáveis são espaços reservados (alocados) na memória RAM do computador, que 
devem possuir um nome e um tipo de dado, sendo que seu conteúdo pode sofrer 
alteração durante a execução do programa. 
Em outras palavras, variáveis são as informações que podemos utilizar na área de dados 
de um programa. Por exemplo, o Nome de um cliente, as Notas de um aluno, a 
Temperatura atual. Mas note que todos estes dados podem mudar a qualquer momento. 
2.4. Constantes 
Variáveis são espaços reservados (alocados) na memória RAM do computador, que 
devem possuir um nome e um tipo de dado, sendo que seu conteúdo NÃO pode sofrer 
alteração durante a execução do programa. 
Repare que a diferença entre uma variável e uma constante na sua definição é sutil, 
porém na prática essa diferença é muito relevante. O valor que for definido na criação 
(declaração) de uma constante a acompanha durante todo o ciclo de vida do processo. 
2.5. Regras para formação de Identificadores 
Para a criação de um identificador (nome de uma variável ou constante, por exemplo) 
devemos tomar cuidado com uma série de fatores. São eles: 
 O nome de um identificador não pode ser iniciado por número. 
 O nome de um identificador não pode conter espaços ou qualquer caracter 
especial, exceto o underline “_”. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 10 
 O nome de um identificador não pode ser igual ao de qualquer palavra reservada 
da linguagem de programação. 
 Procure utilizar nomes curtos, e que possuam algum significado associado ao 
identificador. 
2.6. Tipos de Dados 
Dados, são as informações em sua forma mais bruta. Sendo que estas informações 
podem ser classificadas em alguns grupos distintos 
 Numéricos: Conjunto formado pelos números (inteiros, reais, etc). 
 Alfanuméricos: Conjunto formado por letras e números (palavras). 
 Lógicos: Representam apenas dois valores/estados. Verdadeiro ou Falso. 
Vale ressaltar que a linguagem C (não C++) não possui um tipo de dado que represente 
valores lógicos. 
2.7. Principais tipos de dados utilizados na disciplina 
 Int (inteiro): Números inteiros entre -32768 e 32767 
 Float (ponto flutuante): Números reais entre 3,4E-38 e 3,4E+38 
 Char (caracter): Tipo alfanumérico que pode variar entre 1 e 255 caracteres, 
este tipo pode também ser referido por string. 
 Void: Representa a não existência de um tipo. 
Vale ressaltar que estes não são os únicos tipos de dados existentes na linguagem C, 
mas sim os que utilizaremos durante o curso de lógica de programação. 
2.8. Exercícios Propostos 
1. Quais dos identificadores abaixo são considerados INVÁLIDOS? Justifique sua 
resposta. 
a) Contas_a_pagar 
b) Salário_Familia 
c) 1Bimestre 
d) Nota1 
e) Endereço 
f) #DDD 
g) Telefone Residencial 
 
2. Defina o melhor tipo de dado para cada expressão abaixo. Considerando apenas int, 
float e char. 
a) 23.56 
b) “minha casa é azul” 
c) 45 
d) “123B56” 
e) -345 
f) 40456 
g) -34.6 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 11 
Aula 2 
Começando a programar na Linguagem C 
3. Linguagens de programação 
Linguagem de programação é uma classe de software (do mesmo jeito que editores de 
texto, planilhas eletrônicas, etc.) onde todos os seus representantes têm por 
característica principal a capacidade de desenvolver novos softwares. Sendo que essa 
classe de software é dividida em dois grandes grupos. Linguagens de alto e baixo nível. 
3.1. Linguagens de Baixo Nível 
São as linguagens que mais se aproximam do idioma da máquina. Possuem uma maior 
complexidade de compreensão, porém seu desempenho é significativamente melhor do 
que as linguagens de alto nível. 
Exemplos de linguagens de baixo nível: Assembly, Fortran, Algol e C. 
3.2. Linguagens de Alto Nível 
São as linguagens que mais se aproximam do idioma humano. Possuem uma 
complexidade de aprendizado inferior as linguagens de baixo nível, porém possuem 
desempenho também inferior a estas. 
Como o “idioma humano” é vasto, vale ressaltar que a grande maioria das linguagens de 
programação encontram-se no idioma Inglês. 
Exemplos de linguagens de alto nível: Cobol, Clipper, Basic, Visual Basic, Pascal e 
Delphi. 
3.3. Compilador 
Compilador é o nome do software responsável pela tradução de um código alto nível 
para baixo nível (para que o processador possa executar suas instruções) gerando ao 
final o que chamamos de arquivo executável. Sendo que a velocidade de processamento 
de um programa está diretamente relacionado a qualidade deste compilador. 
3.4. Estrutura padrão de um algoritmo (C) 
Para programarmos na linguagem C, devemos nos preocupar primeiro com a sua sintaxe 
básica. Abaixo estão explicitadas algumas das principais características da linguagem. 
 Case Sensitive: O nome de um identificador, bem como de instruções devem 
ser escritos da mesmo forma que foram criados, de modo que letras maiúsculas e 
minúsculas fazem diferença. 
 Utilização de bibliotecas: Para utilizarmos alguma instrução já existente na 
linguagem, devemos identificar em qual biblioteca essa instrução se encontra 
logo no inicio do código através da instrução “include”. 
 Utilização de um bloco principal: Todo o programa desenvolvido em C, deve 
possuir uma função principal definida com o nome “main”. 
 Definição de inicio e fim de bloco: Sempre que precisarmos definir inicio e fim 
de um bloco de instruções, utilizaremos os caracteres {}. 
Obs: Como utilizaremos o compilador DEV-C++ durante as aulas, algumas 
includes podem ter nomes diferentes das tradicionais includes do C. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 12 
Exemplo de um programa 
 
#include <stdio.h> 
 
void main() 
{ 
 int valor1, valor2; 
 float soma; 
 
 valor1 = 23000; 
 valor2 = 15500; 
 soma = valor1 + valor2; 
} 
 
Explicando o código acima 
#include <stdio.h> Esta linha define que poderemos utilizar no nosso código 
fonte instruções de I/O (Entrada e Saída de dados). 
void main() Define onde que o nosso programava vai começar a 
execução 
{ Inicio do bloco de instruções 
int valor1, valor2 Cria na área de dados (declara) duas variáveis de tipo 
inteiro com nomes valor1 e valor2. 
float soma; Cria na área de dados (declara) uma variável de tipo 
ponto flutuante com nome soma 
valor1 = 23000; Atribui o valor 23000 para a variável valor1 
valor2 = 15500; Atribui o valor 15500 para a variável valor2 
soma = valor1 + valor2; Soma o conteúdo das duas variáveis e joga a resposta do 
cálculo na variável soma. 
} Encerra o bloco de intruções 
 
3.5. Endentação 
Repare que o código acima possui alguns espaços entre os caracteres { e } que servempara facilitar a visualização do código na busca de possíveis erros. Esta técnica chama-
se endentação de código. Sendo vital no desenvolvimento de um programa. 
Na grande maioria das linguagens a endentação tem uma importância meramente 
estética, porém existem linguagens que definem inicio e fim de bloco por ela. Python 
seria um bom exemplo disso. 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 13 
3.6. Operadores aritméticos 
Dentro da linguagem C, utilizaremos os seguintes operadores aritméticos: 
Operador Nome Exemplo Resposta 
+ Adição X = 5 + 2 7 
- Subtração X = 5 – 2 3 
* Multiplicação X = 5 * 2 10 
/ Divisão inteira X = 5/2 2 
/ Divisão real X = 5.0/2.0 2.5 
% Resto de uma divisão inteira X = 5 % 2 1 
pow Potenciação* X = pow(5,2) 25 
sqrt Raiz quadrada* X = sqrt(25) 5 
 
* Para que as funções “pow” e “sqrt” possam funcionar corretamente, devemos 
adicionar a biblioteca “math.h” nas includes de seu código. 
3.7. Regras de precedência de operadores 
As regras de precedência matemática entre os operadores aritméticos é respeitada pelo 
compilador C. Sendo assim, a multiplicação e divisão são efetuadas antes da adição e 
subtração, por exemplo. Se você quiser que a regra de precedência seja modificada, é 
permitida a utilização de parênteses. De modo que tudo o que estiver dentro destes 
parênteses serão calculados primeiro. 
3.8. Exercícios Propostos 
1. Faça um algoritmo que calcule a média entre dois valores inteiros (5 e 25). 
 
2. Faça um algoritmo que calcule a área de um quadrado de lado L= 10. 
 
3. Faça um algoritmo que calcule a hipotenusa de um triângulo retângulo de catetos 
b=3 e c = 4. (
22 cbh
) 
 
4. Faça um algoritmo que efetue as seguintes operações: 
a) A vale 10 
b) B vale o dobro de A 
c) C vale a raiz quadrada do dobro de A 
d) D vale a metade da raiz quadrada do dobro de A 
e) E vale o cubo da metade da raiz quadrada do dobro de A 
f) F vale a terça parte do cubo da metade da raiz quadrada do dobro de A. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 14 
Aula 3 
3.9. Utilizando instruções de I/O 
Até o momento, nossos algoritmos apesar de funcionarem, não estão respeitando 
corretamente o principio da informática (aula 1) que é o da Entrada, Processamento e 
Saída de dados. Já que: 
 Nossa entrada de dados é sempre fixa 
 Não estamos exibindo o resultado de nossos cálculos para o usuário do 
programa. 
Para solucionar este problema, a linguagem C possui três instruções para a 
leitura/escrita de dados, scanf, gets e printf. Onde: 
 scanf: Utilizado para a leitura de valores numéricos, sendo que sempre devemos 
utilizar o operador “&” antes da variável de leitura. 
 gets: Utilizado para leitura de valores alfanuméricos 
 printf: Utilizado para a escrita de valores tanto numéricos quanto 
alfanuméricos. 
Exemplo de utilização 
 
#include <stdio.h> 
void main() 
{ 
 int v1, v2; 
 float media; 
 char nome[30]; 
 
 gets(nome); 
 scanf("%d", &v1); 
 scanf("%d", &v2); 
 
 media = (v1 + v2)/2.0; 
 
 printf ("A sua media é: %f", media); 
} 
 
Repare a maneira como foi feita a leitura das variáveis nome, v1 e v2: 
 Nome como é um char, foi lida utilizando a função gets. 
 v1 e v2 por serem numéricas, precisaram ser lidas utilizando o scanf, sendo que 
“%d” é um atributo da função que avisa o compilador que será lido (no caso da 
printf, escrito) um valor de tipo de dado inteiro. 
 A leitura da linha onde encontra-se o printf seria da seguinte forma: Escreva na 
tela a frase “A sua média é: juntamente com um valor de ponto flutuante”, sendo 
que esse valor foi passado para a função logo em seguida separado por uma 
vírgula. 
Alguns atributos importantes que podem ser utilizado nas funções scanf e printf: 
Atributo Utilização Exemplo 
%d Leitura/escrita de dados numéricos inteiros scanf(“%d”, &idade); 
%f Leitura/escrita de dados numéricos reais printf(“%f”,salario); 
%s Escrita de dados do tipo char (strings) printf(“%s”, nome); 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 15 
Dentro de uma instrução printf, podemos fazer a escrita de mais valores, compondo uma 
sentença completa. 
Exemplo: 
 
printf (“%s, Os valores %d e %d formam a média: %f”, nome, v1, v2, media); 
 
Podemos também utilizar a função printf para exibir mensagens para o usuário. Por 
exemplo, no caso anterior, seria interessante exibir uma mensagem ao usuário pedindo 
para que ele informe o seu nome e dois valores inteiros. 
O código ficaria da seguinte maneira: 
 
#include <stdio.h> 
void main() 
{ 
 int v1, v2; 
 float media; 
 char nome[30]; 
 
 printf ("Digite o seu nome: "); 
 gets(nome); 
 printf ("Digite o primeiro valor inteiro: "); 
 scanf("%d", &v1); 
 printf ("Digite o segundo valor inteiro: "); 
 scanf("%d", &v2); 
 
 media = (v1 + v2)/2.0; 
 
 printf ("%s, Os valores %d e %d formam a media: %f", nome, v1, v2, media); 
} 
3.10. Exercícios Propostos 
1. Refaça as questões 1, 2 e 3 da lista anterior, utilizando agora os comandos para 
entrada e saída de dados. 
 
2. Faça um algoritmo que leia três valores reais (ponto flutuante) e calcule a sua média 
ponderada, com os respectivos pesos 2, 3 e 4 para os valores. 
 
3. Faça um algoritmo que leia um valor inteiro e um valor real. Multiplique estes 
valores e exiba o resultado. 
 
4. Faça um algoritmo que leia 4 valores reais (x1, y1, x2, y2) equivalentes a dois pares 
ordenados. Calcule e exiba a distância entre estes dois pontos de acordo com a 
fórmula abaixo: 
2
12
2
12 )()( yyxxd
 
 
5. Faça um algoritmo que leia três valores reais e calcule x’ e x” de acordo com a 
fórmula abaixo 
a
cabb
xx
*2
**4
",'
2 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 16 
6. Faça um algoritmo que leia um valor inteiro equivalente a um determinado valor em 
segundos. Retorne quantas horas, minutos e segundos são compostos por este valor. 
Por exemplo o valor 3670 (segundos) formaria 1 hora, 1 minuto e 10 segundos. 
 
7. Faça um algoritmo que leia dois valores inteiros. Logo após troque os valores entre 
estas variáveis. Ou seja, o conteúdo da variável 1 passará para a variável 2 e vice e 
versa. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 17 
Aula 4 
Introdução ao DEV-C++ 
4. Sobre o software 
4.1. O que é DEV-C++? 
DEV-C++ é o nome de um dos mais famosos compiladores C para a plataforma 
Windows, sendo que este é um freeware que pode ser baixado dos mais diversos 
lugares. Alguns links serão escritos no apêndice deste manual. 
4.2. Versão do DEV-C++ 
Utilizaremos durante as aulas a versão 4.9.9.2 do DEV-C++ 
4.3. Interface do Software 
Após uma instalação simples do programa o ambiente de desenvolvimento deve ser 
como o mostrado abaixo: 
 
 
Onde: 
 No canto esquerdo temos o navegador de classes/projetos que será utilizado para 
podermos alternar entre arquivos. 
 Na área superior encontram-se os principais atalhos do compilador 
 Na parte inferior temos uma caixa de mensagens que o compilador irá exibir 
conforme a necessidade. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 18 
Criando um novo projeto 
Para criarmos um novo projeto devemos acessar o menu Arquivo/Novo/Projeto...Escolha a opção Console Application, certificando-se que a opção “Projeto C” esteja 
marcada. 
Você pode definir um nome para seu projeto nesta mesma janela. 
 
 
 
Ao clicar em OK, o compilador irá solicitar que você salve seu projeto. Procure salvar 
um projeto por pasta para evitar um acumulo de arquivos, de modo que seja fácil a 
seleção do documento certo. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 19 
Logo após a criação do projeto. Você estará apto para começar a programar. 
Repare que a interface do código é muito similar ao que já estamos trabalhando, de 
modo que apenas precisamos modificar (apagar) algumas instruções e nossa aplicação 
estará igual ao de nosso caderno. 
 
 
Repare que existe uma linha obrigatória no final do código fonte: 
system (“pause”); 
 
Onde: 
system(“pause”): Fará com que o programa após sua conclusão seja fechado somente 
após o pressionamento de alguma tecla. A não existência desta linha de instrução 
fecharia o programa sem que o usuário tenha tempo de visualizar as respostas. Podemos 
utilizar qualquer instrução DOS na função system. 
4.4. Compilando um Projeto 
Após a escrita do algoritmo, finalmente é a hora de testar o funcionamento do mesmo. 
Para isso, devemos compilar nosso projeto. 
Existem três atalhos importantes que devemos saber nesse momento. 
 Pressionar as teclas CTRL + F9: Compila o código, porém não o executa. 
 Pressionar as teclas CTRL + F10: Executa um código compilado. 
 Pressionar a tecla F9: Compila e executa o código. 
É importante ressaltar que quando um projeto for compilado, ele deverá ser salvo 
novamente.
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 20 
Abaixo temos uma imagem que representa o resumo do compilador: 
 
 
 
Repare que neste caso o compilador não encontrou nenhum erro durante a tradução do 
código fonte. 
Vejamos abaixo uma situação onde existam erros de sintaxe. 
 
 
No lugar do resumo de compilação, o código teve uma linha destacada e na parte 
inferior do programa estão sendo exibidos alertas do compilador. Neste caso a 
informação é de que o programa não conseguiu compilar a linha 10, devido a falta de 
um “;” na linha 9. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 21 
4.5. Tipos de Erros 
Durante toda o processo de desenvolvimento de software, encontraremos apenas dois 
tipos de erros em nossos programas. São eles: 
 Erros de Sintaxe: Ocorrem durante a fase de projeto do código, caracterizados 
por falhas na digitação (eu escrevo errado). São facilmente identificados, pois 
são acusados pelo compilador. Como por exemplo escrever “mai” no lugar de 
“main”. 
 Erros de Lógica: Ocorrem em tempo de execução, caracterizados por falhas na 
concepção do código (eu penso errado). São muito mais complexos de serem 
encontrados, já que o programa é executado normalmente, sendo que este apenas 
devolve um valor errado de resposta. Este tipo de erro só pode ser encontrado 
com testes de mesa. 
4.6. Exercício Proposto 
1. Passe todos os algoritmos feitos na listagem anterior para o DEV-C++, anotando 
possíveis erros de sintaxe e perguntando para seu professor o que estes significam. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 22 
Aula 5 
Algoritmos Condicionais 
5. Introdução 
Até o momento, todos os algoritmos que estamos fazendo podem ser considerados 
Algoritmos Seqüenciais, isto é, executam todas as suas linhas de instrução sem que 
hajam desvios nem repetições no código fonte. Em um ambiente prático, este tipo de 
situação não ocorre, já que durante um programa diversas situações devem ser testadas 
para que seu resultado final seja satisfatório. 
Por exemplo, se formos fazer um programa para cálculo de peso ideal para um 
indivíduo, a fórmula para homens e mulheres é diferente. Sendo assim, em algum 
momento do programa deve-se descobrir o sexo da pessoa e caso seja alguém do sexo 
masculino, faça a fórmula X, caso contrário, a fórmula Y será executada. 
Para podermos trabalhar com algoritmos condicionais podemos utilizar dois tipos de 
instruções IF (SE) e SWITCH (CASO, não é tradução literal): 
5.1. Instrução IF (SE) 
Esta instrução avalia uma determinada condição lógica, e dependendo da resposta que 
esta condição retornar, será feito um bloco de algoritmo ou não. 
Sintaxe: 
if (condição lógica) 
 { 
 <Bloco de algoritmo que será executado caso a condição lógica seja verdadeira>; 
 } 
<Bloco de algoritmo que será executado independentemente da resposta da condição 
lógica>; 
 
Dentro da instrução if, ainda podemos utilizar uma segunda instrução (else - senão) que 
também avalia a condição lógica testada, porém somente sendo executado se esta 
condição for falsa. 
Sintaxe: 
if (condição lógica) 
 { 
 <Bloco de algoritmo que será executado caso a condição lógica seja verdadeira>; 
 } 
else 
 { 
 <Bloco de algoritmo que será executado caso a condição lógica seja falsa>; 
 } 
 
Para melhor compreensão, faremos agora um exemplo prático da utilização deste tipo 
de instrução. Façamos um algoritmo que leia o nome e as duas notas de um aluno, 
retornando a sua média e uma mensagem “Aprovado” ou “Reprovado” dependendo da 
sua média. A média mínima para aprovação será 6. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 23 
#include <stdio.h> 
void main() 
{ 
 float n1, n2, media; 
 char nome[25]; 
 
 printf("Digite o seu nome: "); 
 gets(nome); 
 printf("Digite sua primeira nota: "); 
 scanf("%f", &n1); 
 printf("Digite sua segunda nota: "); 
 scanf("%f", &n2); 
 
 media = (n1 + n2)/ 2.0; 
 printf ("%f \n", media); 
 if (media >= 6) 
 { 
 printf ("Parabens! Voce esta APROVADO \n"); 
 } 
 else 
 { 
 printf ("Infelizmente voce esta REPROVADO \n"); 
 } 
 
 system("pause"); 
} 
 
O trecho em destaque no código é o que diferencia um algoritmo condicional de um 
puramente seqüencial. Repare que apenas uma das duas mensagens será exibida na tela, 
sendo que tudo depende do retorno do teste “media >= 6”(média ser maior ou igual a 6). 
5.2. Operadores Relacionais 
Para que possamos fazer perguntas lógicas para o processador, devemos sempre utilizar 
um dos operadores abaixo demonstrados. 
 
Operador Significado 
> Maior do que 
< Menor do que 
>= Maior ou igual a 
<= Menor ou igual a 
== Igual a 
!= Diferente de 
 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 24 
5.3. Exercícios Propostos 
1. Faça um algoritmo que leia um valor real qualquer e o classifique como POSITIVO 
ou NEGATIVO. Obs: Trate o número ZERO como positivo. 
 
2. Faça um algoritmo que leia um valor inteiro e informe se este valor é maior do que 
10 ou não. 
 
3. Faça um algoritmo que leia dois valores reais e informe se estes valores são iguais 
ou diferentes. 
 
4. Faça um algoritmo que leia um valor inteiro e retorne se este valor é PAR ou 
ÍMPAR. 
 
5. Faça um algoritmo que leia dois valores reais e exiba ao final qual dos dois é o 
maior. 
 
6. Faça um programa que leia o Nome, Valor Hora e Total de Horas Trabalhadas de 
um funcionário. Calcule e exiba: 
a) O salário bruto 
b) O valor de Vale Transporte (6% do Salário Bruto) 
c) O desconto deImposto de Renda (11% do Salário Bruto para salários superiores 
a R$ 1440,00) 
d) O salário líquido. 
 
7. Faça um algoritmo que leia dois valores inteiros equivalentes a hora inicial e final de 
um jogo. Retorne o tempo de duração deste jogo sabendo que o jogo pode começar 
em um dia e terminar em outro, e que o tempo máximo de jogo é 24 horas. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 25 
Aula 6 
Exercícios 
Aula destinada a continuação e implementação dos exercícios sobre algoritmos 
condicionais. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 26 
Aula 7 
Seleção encadeada 
É muito comum que dentro de um algoritmo tenhamos vários testes que tenham que ser 
feitos a uma mesma variável ou situação. Para este tipo de situação podemos utilizar o 
encadeamento (aninhamento) de instruções if. Por exemplo, vamos modificar o 
exercício número um da lista anterior para que agora ele considere o valor 0 (zero) 
como nulo. 
 
#include <stdio.h> 
void main() 
{ 
 float valor; 
 
 printf("Digite um valor: "); 
 scanf("%f", &valor); 
 
 if (valor > 0) 
 { 
 printf("O valor é positivo! \n"); 
 } 
 else 
 { 
 if (valor < 0) 
 { 
 printf("O valor é Negativo! \n"); 
 } 
 else 
 { 
 printf("O valor é nulo! \n"); 
 } 
 } 
 system("pause"); 
} 
 
Repare que o segundo teste só será feito caso o primeiro falhe. Este tipo de abordagem é 
interessante para evitar que uma grande quantidade de testes similares sejam feitas 
quando apenas um deles pode ser executado. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 27 
5.4. Instrução SWITCH 
Utilizar uma seqüência encadeada de testes lógicos apesar de interessante, em algumas 
situações pode tornar o código relativamente complexo. Quando possuímos uma lista de 
valores para avaliar-mos, por exemplo. 
Quando nos deparamos com este tipo de situação existe uma instrução que se mostra 
mais otimizada e organizada para a manipulação dos dados. Essa instrução chama-se 
switch. 
Exemplo: 
 
#include <stdio.h> 
 
void main() 
{ 
 int valor; 
 
 printf("Digite um valor: "); 
 scanf("%d", &valor); 
 
 switch (valor) 
 { 
 case 1: 
 printf ("Foi digitado o valor 1 \n"); 
 break; 
 
 case 2: 
 printf ("Foi digitado o valor 2 \n"); 
 break; 
 
 case 3: 
 printf ("Foi digitado o valor 3 \n"); 
 break; 
 
 default: 
 printf("Foi digitado um valor diferente de 1, 2 ou 3 \n"); 
 } 
 system("pause"); 
} 
 
A instrução switch através de instruções case avalia o conteúdo da variável “valor”, de 
modo que a instrução “default” é executada se todos os testes falharem. 
Percebam que dentro de cada case foi utilizado uma instrução “break” que fará com que 
o switch seja interrompido no momento que encontrar a associação correta para a 
variável “valor”. 
Dentro de cada case não é necessário definir o bloco entre chaves. 
 
5.5. Exercícios Propostos 
1. Faça um algoritmo que recebe um número inteiro, escreva o mês correspondente a 
este número ou a mensagem “mês inválido” 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 28 
 
2. Faça um algoritmo que recebe dois valores reais juntamente com uma variável 
controladora de tipo inteiro. 
a) Caso a variável controladora seja 1, some os valores digitados. 
b) Caso a variável controladora seja 2, multiplique os valores digitados. 
c) Caso a variável controladora seja 3, encontre o maior valor. 
d) Caso a variável controladora seja qualquer outro valor, calcule a média entre os 
valores. 
 
3. Faça um algoritmo que simule o caixa de um Fast-Food. Serão digitados o código de 
um produto, juntamente com a quantidade desejada deste produto. Seu programa 
deve retornar o nome do produto juntamente com o valor final a ser pago. 
 
Código Produto Valor Unitário 
1 Sanduíche de Presunto R$ 2,30 
2 Suco de Tamarindo R$ 1,50 
3 Pastel de Vento R$ 1,30 
4 Pão com margarina R$ 0,70 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 29 
5.6. Operadores (Conectores) Lógicos 
Além do que já foi trabalhado durante o curso, existe a possibilidade de que uma 
expressão lógica faça mais de uma pergunta ao mesmo tempo. De modo que essas 
perguntas tem de estar relacionadas de alguma forma. Imagine que exista a necessidade 
de se fazer um filtro em um programa de modo que sejam tratados de forma diferente 
pessoas do sexo feminino menores de idade, maiores de idade, pessoas do sexo 
masculino maiores de idade e menores de idade. 
Se formos fazer um teste para cada possibilidade, o código seria gigantesco. Utilizando 
os operadores lógicos, poderíamos fazer perguntas agrupadas (se for mulher E menor de 
idade, se for homem E maior de idade, etc.). 
Durante o curso iremos trabalhar com três operadores lógicos. São eles: 
5.6.1. Operador && (E) 
 Também conhecido como multiplicação lógica 
 Retorna como resposta “Verdadeiro” se e somente se as duas expressões lógicas 
por ele conectadas forem verdadeiras. 
 
Tabela verdade 
&& V F 
V V F 
F F F 
 
5.6.2. Operador || (OU) 
 Também conhecido como adição lógica 
 Retorna como resposta “Falso” se e somente se as duas expressões lógicas por 
ele conectadas forem falsas. 
Tabela verdade 
|| V F 
V V V 
F V F 
 
5.6.3. Operador ! (Não) 
 Também conhecido como inversor lógico 
 Retorna o valor oposto a uma expressão lógica 
Tabela verdade 
! V F 
 F V 
 
Exemplos 
a) (25 > 10 && 23 % 2 == 1)? Resposta: VERDADEIRO 
b) (25 != 50/2 || 12 > 20)? Resposta: FALSO 
c) (!(2 + 2 = 4)) ? Resposta: FALSO 
d) (40 > 30 && 25 < 12 || 12 % 2 ==0)? Resposta: 
e) (!((25 > 10 && 23 % 2 == 1)))? Resposta: 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 30 
Exemplo Prático 
Fazer um programa que leia as duas notas de um aluno juntamente com sua 
freqüência. Informe se o aluno está aprovado ou reprovado sabendo que a média 
mínima de aprovação é 6 e que a freqüência mínima de aprovação é 75. 
 
#include <stdio.h> 
void main() 
{ 
 float n1, n2, freq, media; 
 
 printf("Digite sua primeira nota: "); 
 scanf("%f", &n1); 
 printf("Digite sua segunda nota: "); 
 scanf("%f", &n2); 
 printf("Digite sua freqüência: "); 
 scanf("%f", &freq); 
 
 media = (n1 + n2)/ 2.0; 
 if (media >= 6 && freq >= 75) 
 { 
 printf ("Parabens! Voce esta APROVADO \n"); 
 } 
 else 
 { 
 printf ("Infelizmente voce esta REPROVADO \n"); 
 } 
 
 system("pause"); 
} 
 
Tente fazer o código acima utilizando operador lógico OU agora. 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 31 
5.7. Exercícios Propostos 
1. Faça um algoritmo que lê um valor inteiro e retorna se este é um valor Par Positivo, 
Par Negativo, Ímpar Positivo, Ímpar Negativo ou Nulo. 
 
2. Faça um algoritmo que leia três valoresreais e os exiba de forma crescente. 
 
3. Faça um algoritmo que leia três valores reais e exiba ao final o maior valor 
 
4. Faça um algoritmo que leia três valores reais e calcule x’ e x” de acordo com a 
fórmula abaixo. Obs.: Seu programa deve prever os erros de raiz negativa e divisão 
por zero. 
a
cabb
xx
*2
**4
",'
2 
 
5. Faça um programa que dada a idade de um nadador classifica-o em uma das 
seguintes categorias: 
 Infantil = 8-10 anos 
 Juvenil = 11-17 anos 
 Adulto = maiores de 18 anos 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 32 
Aula 8 
Aula destinada a continuação e implementação dos exercícios propostos na lista 
anterior, bem como novos exercícios disponibilizados pelo professor. 
 
Continuação dos exercícios: 
 
6. A Secretaria de Meio Ambiente, que controla o índice de poluição, mantém 3 grupos 
de indústrias que são altamente poluentes do meio ambiente. O índice de poluição 
aceitável varia de 0,05 até 0,29. Se o índice sobe para 0,3 as indústrias do 1º grupo 
são intimadas a suspenderem suas atividades, se o índice crescer para 0,4 as 
industrias do 1º e 2º grupo são intimadas a suspenderem suas atividades, se o índice 
atingir 0,5 todos os grupos devem ser notificados a paralisarem suas atividades. Faça 
um programa que leia o índice de poluição medido e emita a notificação adequada 
aos diferentes grupos de empresas. 
 
7. Desenvolva um algoritmo que efetue a leitura de três valores para os lados de um 
triângulo, considerando lados como: A, B e C. O algoritmo deverá verificar se os 
lados fornecidos forma realmente um triângulo (cada lado é menor que a soma dos 
outros dois lados). Se for esta condição verdadeira, deverá ser indicado qual tipo de 
triângulo foi formado: isósceles (dois lados iguais e um diferente), escaleno (todos 
os lados diferentes) ou eqüilátero (todos os lados são iguais). 
 
Faça um algoritmo que leia o dia e o mês de nascimento de uma pessoa. Ao final do 
algoritmo retorne o seu signo de acordo com a tabela abaixo: 
 
Nascidos entre: Signo: 
20/03 a 20/04 Áries 
21/04 a 20/05 Touro 
21/05 a 20/06 Gêmeos 
21/06 a 21/07 Câncer 
22/07 a 22/08 Leão 
23/08 a 22/09 Virgem 
23/09 a 22/10 Libra 
23/10 a 21/11 Escorpião 
22/11 a 21/12 Sagitário 
22/12 a 20/01 Capricórnio 
21/01 a 18/02 Aquário 
19/02 a 19/03 Peixes 
 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 33 
Aula 9 
Avaliação I 
6. Introdução 
Aula destinada a apresentação do primeiro trabalho a ser desenvolvido na disciplina de 
lógica de programação. 
6.1. Tipo de avaliação 
Cabe ao professor decidir que tipo de avaliação será proposta, podendo esta ser um 
teste, trabalho para se entregar no mesmo dia ou um trabalho para ser entregue 
posteriormente. 
6.2. Continuação dos exercícios 
No caso da avaliação ser um trabalho a ser entregue posteriormente, utilize essa aula 
para dar continuidade nos exercícios. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 34 
Aula 10 
Algoritmos de Repetição (Laços – Loops) 
7. Introdução 
Como visto anteriormente, dentro de um algoritmo existem vários tipos de estruturas 
que podem ser utilizadas. Até o momento estudamos estruturas seqüenciais e 
condicionais. 
Dentro de nossos algoritmos vai ser comum encontrarmos trechos de código que 
precisam ser executados várias vezes em seqüência (para validações, por exemplo). Para 
este tipo de problema, ao invés de repetirmos seguidamente o código fonte, podemos 
utilizar instruções de repetição que fazem justamente o papel de re-executar um 
determinado bloco de algoritmo. 
As instruções que permitem repetição de código são três: 
7.1. WHILE (ENQUANTO) 
 Laço de repetição que executa um determinado bloco de instruções enquanto sua 
condição lógica for verdadeira. 
 Sempre testa sua condição lógica antes de executar. 
 Após a execução do código, retorna para a condição e repete o teste. 
Sintaxe: 
while (condição lógica) 
 { 
 <instruções que serão executadas enquanto a condição for verdadeira>; 
 } 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 35 
Exemplo: 
#include <stdio.h> 
void main() 
{ 
 int valor, soma; 
 valor = 5; 
 soma = 0; 
 while (valor <= 8) 
 { 
 soma = soma + valor; 
 valor = valor + 1; 
 } 
 printf("%d\n", soma); 
 system("PAUSE"); 
} 
 
Este algoritmo irá executar as instruções “soma = soma + valor;” e “valor = valor + 1;” 
enquanto o conteúdo da variável valor for menor ou igual a 8. Sendo que quando esta 
condição for falsa o programa irá exibir essa soma na tela e encerrar. 
7.2. DO – WHILE (FAÇA ENQUANTO) 
 Possui comportamento similar ao while. 
 Laço de repetição que executa um determinado bloco de instruções enquanto sua 
condição lógica for verdadeira. 
 Sempre testa sua condição lógica depois de executar o bloco de instruções. 
 Executa pelo menos uma vez as instruções de seu bloco. 
Sintaxe: 
do 
 { 
 <instruções que serão executadas> 
 } while (condição lógica); 
 
Exemplo: 
#include <stdio.h> 
void main() 
{ 
 int valor, soma; 
 valor = 5; 
 soma = 0; 
 do 
 { 
 soma = soma + valor; 
 valor = valor + 1; 
 } while (valor<=8); 
 printf("%d\n", soma); 
 system("PAUSE"); 
} 
 
Repare que este código retorna o mesmo valor que o exemplo anterior, porém o teste é 
feito apenas no final da execução da primeira volta do laço. Este tipo de abordagem é 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 36 
muito comum quando utilizamos menus, onde as opções devem ser exibidas na tela 
enquanto não for feita uma escolha válida. 
7.3. FOR (PARA) 
 Laço de repetição contado. 
 Executa enquanto sua condição for verdadeira. 
 O controle de voltas do laço é feito pelo próprio laço. 
Esta instrução de repetição é muito comum de ser utilizada quando sabemos exatamente 
o número de voltas que nosso bloco de instruções irá fazer. 
Sintaxe: 
for (variável = valor inicia; condição de execução; valor de incremento para a variável) 
 { 
 <instruções que serão repetidas>; 
 } 
 
Exemplo: 
#include <stdio.h> 
void main() 
{ 
 int valor, soma; 
 valor = 5; 
 soma = 0; 
 for (valor = 5; valor<=8; valor = valor +1) 
 { 
 soma = soma + valor; 
 } 
 printf("%d\n", soma); 
 system("PAUSE"); 
} 
 
Utilizando este tipo de abordagem, reparem que não foi necessário incrementar a 
variável valor dentro do bloco do for. 
7.4. Tipos de Variáveis 
Implementado laços de repetição em nossos códigos, devemos reparar que algumas 
variáveis possuem um comportamento diferente do que estamos acostumados, onde elas 
mesmas servem de base para o seu próximo valor. 
7.4.1. Variáveis Contadoras 
Tipo de variável que tem por comportamento principal sofrer alteração nos seus dados 
de maneira constante. Nos exemplos anteriores a variável “valor” possui um 
comportamento de contadora. 
7.4.2. Variáveis Acumuladoras 
Tipo de variável que tem por comportamento principal sofrer alteração nos seus dados 
de maneira variável. Nos exemplos anteriores a variável “soma” possui um 
comportamento de acumuladora. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 37 
7.4.3. Lixo de Memória 
Na grande maioria das linguagensde programação, quando declaramos uma variável 
esta possui um valor aleatório inicial chamado lixo de memória, de modo que se 
mantermos este valor na variável, teremos um programa que retornará valores 
incorretos. Para eliminar o problema do lixo de memória, devemos explicitamente dar 
um valor inicial para as variáveis. 
Todas as variáveis consideradas contadoras ou acumuladoras devem ser 
inicializadas pelo programador. 
7.5. Modificações do Sinal de Atribuição 
O símbolo de atribuição “=” dentro da linguagem C pode sofrer algumas 
transformações que visam diminuir o número de caracteres digitados dentro do código. 
Sendo amplamente utilizados na manipulação de contadores e acumuladores. 
 
Símbolo Exemplo Similar 
+= A += 3; A = A + 3; 
-= A -= 3; A = A – 3; 
*= A *= 3; A = A * 3; 
/= A /= 3; A = A / 3; 
%= A %= 3; A = A % 3; 
++ A ++ A = A + 1; 
-- A -- A = A -1; 
 
A partir de agora, utilizaremos estes operadores sempre que possível. 
7.6. Loops Infinitos 
Um algoritmo entra em Loop, quando ocorre uma situação tal que o mesmo entra em 
um laço e não consegue sair deste. Este erro deve ser evitado a todo o custo dentro de 
nossos programas. Para uma visualização prática sobre um programa em loop, remova a 
linha “valor = valor + 1;” de qualquer um dos exemplos acima citados e veja o 
resultado. 
7.7. Exercícios Propostos 
1. Faça um algoritmo que calcule a soma de todos os valores inteiros existentes entre 1 
e 100. Faça esse algoritmo três vezes, uma para cada laço de repetição. 
 
2. Faça um algoritmo que leia um valor inteiro e calcule a soma de todos os valores 
inteiros entre 1 e o valor informado. Faça esse algoritmo três vezes, uma para cada 
laço de repetição. 
 
3. Faça um algoritmo que leia um valor inteiro e calcule o seu fatorial. O fatorial de 
um número é o resultado da multiplicação deste próprio número pelos seus valores 
menores parando no 1. Exemplo: 5! = 5x4x3x2x1 = 120. Faça esse algoritmo três 
vezes, uma para cada laço de repetição. 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 38 
Aula 11 
Continuação dos exercícios 
 
4. Faça um programa que leia um número qualquer e calcule a tabuada desse número. 
A tabuada deve ser exibida ao usuário no seguinte formato (considerando a leitura 
do número 2): 
2 X 1 = 2 
2 X 2 = 4 
2 X 3 = 6 
... 
2 X 10 = 20 
 
5. Faça um algoritmo que leia dois valores (X e Y) e calcule XY. Obs.: Não utilize a 
função “pow”. 
 
6. Faça um algoritmo que leia dois valores positivos (A e B) e calcule a multiplicação 
de A por B. Obs.: Não utilize o operador aritmético “*”. 
 
7. Faça um algoritmo que resolva a seguinte situação. 
“A empresa de João tem um quadro de 36 funcionários, sendo que a cada ano são 
contratados 5 novos colaboradores. Enquanto que a empresa de Joaquim possui um 
quadro de 50 funcionários e a cada ano são contratados 3 novos funcionários. 
Quantos anos serão necessários para que João ultrapasse Joaquim?” 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 39 
Aula 12 
Continuação dos exercícios (leitura de dados dentro dos laços) 
 
8. Faça um algoritmo que leia um número indeterminado de valores reais e quando for 
digitado um valor negativo, exiba a soma destes valores. 
 
9. Faça um algoritmo que leia 25 valores inteiros. Logo após a leitura dos valores, 
exiba a média entre os valores. 
 
10. Faça um algoritmo que leia um número indeterminado de valores. E quando for 
digitado 0 (zero) exiba a quantidade de números pares e ímpares digitados. 
 
11. Faça um algoritmo que leia 15 valores reais e ao final da leitura exiba o maior valor 
informado. 
 
12. Faça um algoritmo que leia 10 nomes e idades. Ao final da leitura exiba o nome da 
pessoa mais velha. 
 
13. Faça um algoritmo que leia 50 valores inteiros e logo após a leitura exiba o 
percentual de valores múltiplos de 5 digitados. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 40 
Aula 13 
Continuação dos exercícios 
 
14. Faça um algoritmo que leia um valor inteiro e retorne se este valor é perfeito ou não. 
Obs.: Números perfeitos são aqueles cujo a soma de seus divisores (excluindo o 
próprio número) formam exatamente o valor original. Exemplo: 6 (1+2+3 = 6) 
 
15. Faça um algoritmo que leia um usuário e senha digitados pelo usuário. O programa 
deve exibir a mensagem “Bem Vindo” caso o usuário digitado seja “aluno” e a 
senha digitada seja “segredo”. O programa deve avisar quando o login não for 
efetuado e emitir um aviso de bloqueio caso o usuário erre seu login três vezes. 
 
16. Faça um programa que leia o Nome, Valor Hora, Total de Horas Trabalhadas e a 
idade de 50 funcionários. Após a leitura dos dados exiba: 
a) A média salarial bruta da empresa 
b) O nome e a idade do funcionário mais velho 
c) O nome e o salário do funcionário que tiver a maior renda. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 41 
Aula 14 
Continuação dos exercícios (desafios) 
 
17. Faça um algoritmo que leia um número inteiro qualquer e retorne se este número é 
primo ou não. Obs.: Números primos são aqueles divisíveis apenas por 1 (um) e por 
eles mesmos. 
 
18. Faça um algoritmo que leia 3 valores inteiros e exiba o MMC (Mínimo Múltiplo 
Comum) entre estes valores. 
 
19. Faça um algoritmo que leia o Nome, Idade e Sexo de 50 pessoas. Retorne ao final o 
nome da mulher mais velha e do homem mais jovem. 
 
20. Faça um algoritmo que imprima na tela os 10 primeiros valores da seqüência de 
Fibonacci. (1, 1, 2, 3, 5, 8, 13, 21, 34 e 55). Obs.: Utilizar laços para gerar a 
seqüência. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 42 
Aula 15 
Revisão Geral Para a Prova I 
Aula destinada a revisão de todo o conteúdo desenvolvido até o momento, bem como 
conclusão de exercícios. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 43 
Aula 16 
Prova I 
Boa prova a todos. 
 Lembrem-se sempre de ler com atenção todas as questões da prova. 
 Faça primeiro as questões que você considerar mais fáceis. 
 Não fique com dúvidas em relação à interpretação da prova. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 44 
Aula 17 
Considerações sobre a prova 
Aula destinada a correção da prova e tirar dúvidas em relação a avaliação. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 45 
Aula 18 
Variáveis Homogêneas Unidimensionais (Vetores) 
8. Introdução 
A partir deste ponto do curso iremos quebrar o paradigma de que uma variável só pode 
armazenar um valor por vez. 
8.1. O que são vetores? 
Vetores são variáveis como quaisquer outras. Devem possuir nome, tipo de dado e seu 
conteúdo pode sofrer alteração durante a execução do programa. Porém, diferente de 
uma variável convencional, vetores podem armazenar mais de um valor ao mesmo 
tempo. Desde que estejam em posições diferentes. 
8.2. Representação Gráfica 
Um vetor pode ser representado como uma tabela de apenas uma linha ou coluna. 
 
 
 
Na linguagem C, a primeira posição de um vetor é sempre a posição 0 (zero), sendo 
crescente a partir deste ponto. 
Sendo assim, um vetor de 6 posições possui índice variando entre 0 e 5. 
8.3. Utilidade para Vetores 
Vetores são de grande utilidadequando precisamos armazenar dados de forma a não 
perdermos os dados anteriormente digitados. 
8.4. Declarando Vetores 
Declarar vetores na linguagem C é relativamente simples. 
Sintaxe: 
<Tipo de dado> <Nome do vetor> [número de posições]; 
Exemplos: 
int vetor1[10]; 
float vetor2[15]; 
 
Quando o vetor a ser declarado for de tipo char, devemos informar primeiro o número 
de caracteres que cada posição irá armazenar e logo após o número de posições. 
Exemplo: 
char vetor3[20] [12]; 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 46 
8.5. Exemplo Prático 
Desenvolver um programa que leia um vetor inteiro de 5 posições e exibir a soma deste 
vetor. 
#include <stdio.h> 
 
int main() 
{ 
 int vetor[5]; 
 int i; 
 float soma; 
 
 for (i = 0; i<5; i++) 
 { 
 printf ("Digite um valor: "); 
 scanf ("%d", &vetor[i]); 
 } 
 soma = 0; 
 for (i = 0; i<5; i++) 
 { 
 soma = soma + vetor[i]; 
 //ou soma += vetor[i]; 
 } 
 
 printf ("A soma do vetor é: %f \n", soma); 
 system("PAUSE"); 
 return 0; 
} 
 
Explicando o código: 
 O primeiro laço faz a leitura de dados do vetor de forma seqüencial (posição por 
posição) onde a variável “i” serve de índice para o vetor. 
 O segundo laço faz o que chamamos de varredura no vetor (passar por todas as 
posições) de modo que na variável soma seja acumulado o valor de cada posição 
do vetor. 
 O programa poderia ser desenvolvido em apenas um laço, mas está disposto 
desta maneira justamente para demonstrar que os dados continuam armazenados 
no vetor, mesmo quando a leitura de informações já está posicionada em outra 
linha. 
 Se em algum momento for necessário recuperar alguma informação digitada, 
será possível. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 47 
8.6. Exercícios Propostos 
1. Faça um algoritmo que leia um vetor de 11 posições de tipo real. Logo após a leitura 
dos dados, exiba a média do vetor. 
 
2. Faça um algoritmo que leia um vetor inteiro de 10 posições. Ao final da leitura, 
exiba a quantidade de valores pares existentes no vetor. 
 
3. Faça um algoritmo que leia um vetor real de 6 posições e retorne a média dos 
valores positivos do vetor. 
 
4. Faça um algoritmo que leia dois vetores reais de 5 posições. Gere um terceiro vetor 
de mesmo tamanho e tipo que obedeça a seguinte regra de formação: 
a) Na primeira posição do vetor 3 será armazenada a multiplicação entre a primeira 
posição do vetor 1 e a primeira posição do vetor 2. 
b) Na segunda posição do vetor 3 será armazenada a multiplicação entre a segunda 
posição do vetor 1 e a segunda posição do vetor 2. 
c) ... 
 
5. Faça um algoritmo que leia um vetor string de 10 posições. Após a leitura de todo o 
vetor o usuário deve informar mais uma palavra. Seu programa deve exibir quantas 
vezes esta palavra existe no vetor. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 48 
Aula 19 
Continuação dos Exercícios 
 
6. Faça um algoritmo que leia dois vetores string de 10 posições equivalentes a grade 
de respostas de um aluno e o gabarito da mesma prova feita pelo professor. Seu 
programa deve informar a nota do aluno sabendo que cada acerto equivale a 1 ponto. 
Seu programa também deve retornar uma mensagem para o usuário de acordo com o 
seu número de acertos 
a) Até 3 acertos: PRECISA MELHORAR 
b) Até 5 acertos: REGULAR 
c) Até 7 acertos: BOM 
d) Acima de 8 acertos: CONTINUE ASSIM. 
 
7. Faça um algoritmo que leia um vetor inteiro de 10 posições. Logo após a leitura de 
todo o vetor, inverta os valores de todo o vetor. 
 
8. Faça um algoritmo que leia um vetor real de 8 posições. Logo após a leitura exiba o 
maior valor digitado no vetor. 
 
9. Faça um algoritmo que gere um vetor de 10 posições contendo os primeiros 10 
valores da seqüência Fibonacci. 
 
10. Faça um algoritmo que leia um vetor de 6 posições inteiro e reorganize os dados 
deste vetor de modo que seus dados sejam exibidos de maneira crescente. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 49 
Aula 20 
Aula destinada à correção dos exercícios e remoção de dúvidas. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 50 
Aula 21 
Variáveis Homogêneas Multidimensionais (Matrizes) 
9. Introdução 
Dentro da programação, vetores não são a única forma de se armazenar múltiplos 
valores dentro de uma variável. 
9.1. O que são Matrizes? 
Matrizes possuem rigorosamente a mesma definição de vetores. Porém os seus dados 
podem ser armazenados em uma estrutura de dados que possua mais de uma dimensão. 
9.2. Representação Gráfica 
A representação gráfica de uma matriz depende do número de dimensões que ela 
possuir. A forma mais comum de encontrarmos uma matriz é no formato de duas 
dimensões. 
 
 
 
 
É indiferente pensarmos que cada posição da matriz é indexada pelo número de sua 
coluna seguido por sua linha ou o seu inverso. Para uma maior facilidade de 
compreensão, iremos trabalhar com o sistema de linha x coluna. 
9.3. Declarando Matrizes. 
A declaração de matrizes é similar a declaração de vetores. 
Sintaxe: 
<Tipo de dado> <Nome da matriz> [número de linhas] [número de colunas]; 
Exemplos: 
int matriz1[10][5]; 
float matriz2[6][6]; 
 
Quando a matriz a ser declarada for de tipo char, devemos informar primeiro o número 
de caracteres que cada posição irá armazenar e logo após o número de linhas e colunas. 
Exemplo: 
char matriz3[20][8][5]; 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 51 
9.4. Exemplo Prático 
#include <stdio.h> 
 
int main() 
{ 
 int matriz[3][3]; 
 int linha,coluna; 
 float soma; 
 
//Leitura dos dados 
 for (linha = 0; linha<3; linha++) 
 { 
 for (coluna = 0; coluna<3; coluna++) 
 { 
 printf ("Digite um valor: "); 
 scanf ("%d", &matriz[linha][coluna]); 
 } 
 } 
//Soma e exibição da matriz 
 soma = 0; 
 for (linha = 0; linha<3; linha++) 
 { 
 for (coluna = 0; coluna<3; coluna++) 
 { 
 printf ("%d ", matriz[linha][coluna]); 
 soma = soma + matriz[linha][coluna];//ou soma +=matriz[linha][coluna]; 
 } 
 printf("\n"); 
 } 
 printf("\n A soma da matriz é: %f",soma); 
 
 system("PAUSE"); 
 return 0; 
} 
 
Explicando o código 
 Agora a entrada de dados é feita utilizando dois laços e não apenas um. 
 Repare que para cada volta do laço de linha, o laço de coluna faz três voltas. 
 Para a varredura da matriz o processo se repete 
 Para visualizarmos a matriz é interessante que a cada linha seja feita uma quebra 
de linha (“\n”) entre os laços. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 52 
9.5. Exercícios Propostos 
1. Faça um algoritmo que leia uma matriz 4x4 de tipo real e exiba ao final a sua média. 
 
2. Faça um algoritmo que leia uma matriz 3x5 de tipo inteiro e exiba quantos valores 
pares existem na matriz. 
 
3. Faça um algoritmo que leia uma matriz 5x5 de tipo real e exiba a soma das linhas 
pares e a média das linhas ímpares. 
 
4. Faça um algoritmo que leia uma matriz 2x8 e coloque seus valores em uma matriz

Outros materiais