Buscar

SLIDES GERAL - LOGICA DE PROGRAMAÇÃO E ALGORITMOS

Prévia do material em texto

1
Prof. Sandro de Araujo
Lógica de Programação e Algoritmos
Aula 1
Conversa Inicial
A aula apresenta-se com a
seguinte estrutura de conteúdo:
1. Introdução à lógica 
2. Introdução aos algoritmos
3. Formas de representação de algoritmos
4. Construção de algoritmos 
O objetivo da aula é introduzir os principais 
conceitos e temas das abordagens sobre 
lógica de programação e algoritmos para
a resolução de diferentes problemas, bem 
como entender os tipos de algoritmos
a serem utilizados nessa disciplina
Introdução à lógica
Antes de começarmos nossos estudos sobre 
lógica de programação faremos uma reflexão 
sobre o significado da palavra lógica:
Afinal, o que é lógica?
2
Arte de pensar
Rafael Ramirez Lee/shutterstock
Colocar em ordem os pensamentos
A lógica baseia-se em argumentos compostos 
por premissas e conclusões. Exemplo:
A seguir temos em p e q as
premissas e em r a conclusão:
a. p: Sei que a camisa está no guarda-roupas
q: Sei que o guarda-roupas está fechado
r: Logo, concluo que tenho de abrir o 
guarda-roupas para pegar a camisa
Embora o uso do raciocínio lógico pareça 
simples, é uma tarefa bastante complexa, 
que exige muita prática 
Faça uma reflexão e análise de todos os
passos envolvidos na troca de 
um pneu. Percebeu que essa 
tarefa não se resume a tirar 
um pneu e colocar outro?
Se detalharmos um pouquinho os passos 
para a troca do pneu, teremos algo como:
Passo 1 –
O estepe está cheio o suficiente?
Passo 9 –
Parafusar todos os parafusos
Passo 2 –
Se o estepe estiver cheio
Passo 10 –
Abaixar o macaco
Passo 3 –
Pegar o macaco no porta-malas
Passo 11 –
Guardar o macaco no porta-malas
Passo 4 –
Posicionar o macaco no lugar adequado
Passo 12 –
Guardar o pneu furado no porta-malas
Passo 5 –
Suspender o carro
Passo 13 –
Fechar o porta-malas
Passo 6 –
Retirar todos os parafusos
Passo 14 –
Entrar no carro
Passo 7 –
Retirar o pneu
Passo 15 –
Ligar o carro
Passo 8 –
Colocar o estepe
Passo 16 –
Dirigir até encontrar uma borracharia
3
Introdução aos algoritmos
Algoritmo é uma sequência
lógica de passos que levam
a um determinado objetivo
Sabemos o que é e como
construir algoritmos
Se não fosse verdade, ninguém 
decidiria qual o melhor caminho 
para chegar a um lugar
Um fator importante é que às 
vezes um problema pode ser 
resolvido de diversas maneiras, 
porém, gerando a mesma 
resposta/resultado, ou seja, 
podem existir vários algoritmos 
para solucionar o mesmo problema
IR À ESCOLA
Ônibus
(mais barato)
Caminhando
(mais saudável)
Carro
(mais confortável)
INÍCIO INÍCIO INÍCIO
1. Caminhar até o ponto 
de ônibus
1. Colocar um calçado
adequado para caminhada
1. Entrar no carro
2. Esperar o ônibus
2. Mapear os trajetos até a 
escola
2. Mapear os trajetos 
até a escola
3. Entrar no ônibus 3. Escolher o trajeto 3. Escolher o trajeto
4. Descer no ponto mais 
próximo da escola
4. Caminhar até a escola 4. Dirigir até a escola 
5. Caminhar até a escola 5. Chegar à escola 5. Sair do carro
6. Chegar à escola 6. Chegar à escola
FIM FIM FIM
Formas de representação
de algoritmos 
Diagrama Nassi-Shneiderman
4
Fluxograma
Início
1. Acionar o interruptor
2. Se a lâmpada não acender:
2.1. Pegue uma escada
(...)
Pseudocódigo
(...)
2.2. Coloque a escada
embaixo do soquete
2.3. Busque uma lâmpada nova
2.4. Suba na escada
2.5. Retire a lâmpada queimada
2.6. Coloque a lâmpada nova
Fim
Pseudocódigo
Construção de algoritmos
Conforme conceituado anteriormente, um 
algoritmo é uma sequência finita de passos 
que levam à execução de uma tarefa
Podemos pensar em algoritmo como
uma receita de uma pizza marguerita.
Essa sequência finita de instruções em
forma de receita dá cabo de uma meta 
específica, que é o preparo de uma
deliciosa pizza marguerita
1. Entender o problema a ser resolvido, 
destacar os pontos mais importantes
e os objetivos que o compõem
2. Definir os dados de entrada, ou seja, quais 
dados serão fornecidos e quais objetivos 
fazem parte do cenário do problema
(...)
Para construir um algoritmo é preciso 
seguir os seguintes passos:
5
(...)
3. Definir o processamento, ou seja,
quais operações serão executadas e
quais as restrições para essas operações; o 
processamento deve transformar os dados de 
entrada em dados de saída e também verificar 
quais objetos são responsáveis pelas atividades
4. Definir os dados de saída, ou seja, quais
dados gerados depois do processo
(...)
Para construir um algoritmo é preciso 
seguir os seguintes passos:
(...)
5. Construir o algoritmo utilizando um dos três 
tipos apresentados anteriormente (diagrama 
N-S, fluxograma ou pseudocódigo)
6. Testar o algoritmo realizando simulações
7. Corrigir possíveis erros e voltar ao item 5 
Para construir um algoritmo é preciso 
seguir os seguintes passos:
algoritmo “nome” /* Tem como objetivo 
identificar o algoritmo; deve-se utilizar
um nome o mais significativo possível,
para facilitar a identificação */
var /* Seção de declarações – Neste ponto 
são informadas quais variáveis e seus 
respectivos tipos que serão utilizados
no algoritmo */
(...)
Estrutura de um algoritmo em pseudocódigo
(...)
inicio /* Seção de comandos – Aqui será 
escrita a sequência de comandos que
deve ser executada para solucionar
o problema em questão */ 
fimalgoritmo // Marca o final do algoritmo
Estrutura de um algoritmo em pseudocódigo
Observa-se agora um pseudocódigo que 
recebeu um valor inteiro, fornecido pelo 
usuário, e o retornou no monitor
algoritmo “exemplo 1” 
var x: inteiro 
inicio
leia (x) 
escreva (x) 
fimalgoritmo
Nesse exemplo, o algoritmo que recebe um 
valor inteiro acresce duas unidades a este,
e exibe o resultado desta manipulação
algoritmo “exemplo 2” 
var n: inteiro 
inicio
escreva (“Digite um número inteiro: ”) 
leia (n) n <- n+2 
escreval (“Resultado (número + 2): ”, n) 
fimalgoritmo
6
Nesse exemplo o algoritmo que recebe um valor 
inteiro, acresce duas unidades a este, e exibe o 
resultado desta manipulação
algoritmo “exemplo 3” 
var n1, n2, res: inteiro 
inicio
escreva (“Digite o multiplicando inteiro: ”) 
leia (n1) 
escreva (“Digite o multiplicador inteiro: ”) 
leia (n2) res <- n1 * n2 
escreva (“Resultado da multiplicação: ”, res) 
fimalgoritmo
1
Prof. Sandro de Araújo
Lógica de Programação de Algoritmos
Aula 2
Conversa Inicial
Conceitos básicos de algoritmos – dados, 
tipos de dados, variáveis, constantes, 
operadores
Esta aula apresenta a seguinte estrutura de 
conteúdo:
1. Definição de dados
2. Tipos de dados
3. Variáveis
4. Constantes
5. Operadores
O objetivo desta aula é apresentar os 
principais conceitos de dados, tipos de dados, 
variáveis, constantes e operadores de 
atribuição, aritméticos, relacionais e lógicos
Definição de dados
2
O dado é uma sequência de símbolos
quantificados ou quantificáveis
São valores fornecidos pelo usuário do 
programa, podendo ser obtidos com base em
processamentos, arquivos, banco de dados 
ou outros programas
Para garantir a integridade do resultado
obtido com processamento, os dados devem
ser classificados de acordo com o tipo do 
valor a ser armazenado na variável, evitando
problemas ocasionados pelo fornecimento de 
valores inadequados à operação realizada
Número inteiro com inteiro
Número flutuante com flutuante
Tipos de dados Ao desenvolver um algoritmo, é necessário
que se tenha conhecimento prévio do tipo de 
dado que será utilizado para resolver o 
problema proposto. Então, escolhe-se o tipo
de dado adequado para a variável que 
representará esse valor
Alguns tipos são formados por números
inteiros e reaisque suportam operações
matemáticas como adição, subtração, 
multiplicação, entre outros. Esses tipos são
particularmente importantes, visto que o 
computador trabalha naturalmente com 
números
Também podemos considerar as letras como
um tipo de dado em que poderíamos definir
operações como escrever, ler, concatenar, 
entre outros
3
A maioria das linguagens de programação
tipifica os dados em um grupo chamado de 
tipos primitivos: 
Numéricos
Lógicos
Literais ou caracteres
Tipos primitivos numéricos:
Dividem-se em dois grupos: inteiros e reais
Os inteiros: 
Positivos e negativos
Não apresentam parte fracionária
Exemplo: -357, -23, 0, 98, 237
Tipos primitivos numéricos:
Dividem-se em dois grupos: inteiros e reais
Os reais:
Positivos e negativos
Apresentam parte fracionária
Exemplo: - 23.45, -5.6, 0.0, 32.55, 
222.02
Tipos primitivo lógicos:
São também chamados de booleanos e 
podem assumir os valores verdadeiro ou
falso – o número 0 para falso e 1 para 
verdadeiro
Tipos primitivos literais ou caracteres:
São dados formados por um único caractere
ou por uma cadeia de caracteres. Esses
caracteres podem ser:
O alfabeto, com maiúsculos e minúsculos
Os números, que não poderão ser usados
para cálculos, pois não são valores
Os caracteres especiais, 
como @,#,$,?, +
Variáveis
4
Uma variável pode ser entendida como uma
Posição identificada na memória:
Que contém dados
Que pode ser modificada durante a 
execução do programa
Pode assumir qualquer valor de um 
conjunto de valores
Variável
A altura de uma pessoa
A cotação do bitcoin
A velocidade de um carro
Nesses exemplos, os valores dos dados 
sofrem alterações ou são dependentes da 
execução em certo instante ou circunstância
Exemplos de variáveis
Toda variável deve receber um nome ou 
identificador e estar de acordo com algumas 
regras:
Não utilizar espaços entre as letras
Por exemplo, em vez de nome do cliente, o 
correto seria nome_do_cliente ou 
nomeDoCliente
O caractere "underline", representado por 
"_", pode ser utilizado para substituir o 
espaço entre as letras
Identificação das variáveis
Não iniciar o nome da variável com 
algarismos (números)
Por exemplo: não usar 2valor; o correto
seria valor2
Identificação das variáveis
Não utilizar palavras reservadas, isto é, 
palavras que são utilizadas nos algoritmos
para representar ações específicas. Por
exemplo:
se (if na linguagem C) é uma palavra usada
para representar uma condição ou teste 
lógico
Identificação das variáveis
var: palavra para representar a área de 
declaração de variáveis (em pseudocódigo)
Cada linguagem de programação tem sua
sintaxe para declaração de variável
Identificação das variáveis
5
Exemplo: na linguagem de programação C 
devemos listar primeiro o tipo, depois o nome 
da variável
Identificação das variáveis
Sintaxe em pseudocódigo Sintaxe em linguagem C
<indicador de variáveis>
var 
<nome_da_variável> : <tipo>
matricula_aluno : inteiro
<tipo> 
<nome_da_variável>;
int matricula_do_aluno;
Onde:
 var Indica onde as variáveis serão 
declaradas
 matricula_do_aluno é o nome da 
variável
 inteiro é o tipo da variável
Onde:
 int é o tipo da variável 
(inteiro)
 matricula_do_aluno é o 
nome da variável 
Não utilizar caracteres especiais, como
acentos, símbolos (?, /, :, @, # etc.), ç, entre 
outros
Exemplo:
m@tricula, #nome_aluno, $erviço, 
numeração, entre outros
Identificação das variáveis
Não utilizar nomes iguais para representar
variáveis diferentes
Utilizar duas variáveis com o mesmo nome
em um mesmo escopo não é possível
Identificação das variáveis
Ser conciso e utilizar nomes coerentes
Vou criar uma variável para guardar a 
matrícula do aluno e denominei como:
altd3241 : interio
altd3241 não faz sentido para quem vai ler
o código
Já matricula_do_aluno faz todo o sentido
para quem o lê
Identificação das variáveis
Constantes
6
Uma constante segue as mesmas regras de 
variável, mas com a certeza de que o dado ou
valor não será alterado durante a execução
do programa e de que será sempre o mesmo, 
sendo obrigatória a atribuição de um valor no 
momento da declaração
Constante
Um exemplo de uma constante matemática é 
o número PI, que é um valor fixo de 
aproximadamente 3,1415 , e que continuará
assim até o final da execução
Constante
Operadores
Os operadores são utilizados para 
representar expressões de cálculo, 
comparação, condição e atribuição. Para a 
construção de algoritmos temos os seguintes
tipos de operadores: 
De atribuição
Aritméticos
Relacionais
Lógicos
Operadores
Um dos operadores mais utilizados na
programação é o operador de atribuição, 
representado no pseudocódigo pela seta ←
nomeDaVariavel ← expressão
Operadores de atribuição
Exemplos:
nomeDoCliente ← “Joãozinho da Silva”
resultado ← a + 5
valor ← 3.5
Operadores de atribuição
7
Para a linguagem C, o sinal de atribuição é 
representado pelo “=”, 
nomeDaVariavel = expressão
Exemplos:
nomeDoCliente = “Joãozinho da Silva”
resultado = a + 5
valor = 3.5
Operadores de atribuição
Chamamos de operadores aritméticos o 
conjunto de símbolos que representa as 
operações básicas da matemática
Operadores de atribuição
OPERADOR NOTAÇÃO ALGORÍTMICA
Incremento Utiliza-se uma expressão. Exemplo: a ← a + 1
Decremento Utiliza-se uma expressão. Exemplo: a ← a - 1
Adição +
Subtração -
Multiplicação *
Divisão /
Exponenciação ^ ou ** Exemplo: pot ← 2**3 ou 2^3, raiz ← 4**(½) ou raiz ← 4^(½)
Módulo Mod Exemplo: resto ← a mod b
Chamamos de operadores aritméticos o 
conjunto de símbolos que representa as 
operações básicas da matemática
Operadores lógicos
Operador
Representação 
algorítmica
Notação 
para C
Descrição para linguagem C
E .e. &&
Realiza a operação E, exemplo: 
(x >= 0 && x <= 8)
OU .ou. ||
Realiza a operação OU, exemplo: 
(a == ‘G’ || b != 33)
NÃO .não. !
Realiza a operação OU, exemplo:
!(x == 11)
Como resultado, dessas operações teremos
como retorno:
O valor UM (1), se a expressão relacional
for verdadeira
o valor ZERO (0), se a expressão relacional
for falsa
Operadores lógicos
8
Na tabela verdade é expresso o conjunto de 
possibilidades existentes para a combinação
de variáveis ou expressões e operadores
lógicos
Operadores lógicos
a b a .e. b
(a && b)
a .ou. b
(a | | b)
.não. a
falso falso falso falso verdadeiro
falso verdadeiro falso verdadeiro verdadeiro
verdadeiro falso falso verdadeiro falso
verdadeiro verdadeiro verdadeiro verdadeiro falso
GUEDES, S. Lógica de programação 
algorítmica. São Paulo: Pearson, 2014.
MEDINA, M.; FERTING, C. Algoritmos e 
programação: teoria e prática. São Paulo: 
Novatec, 2006.
PUGA, S.; RISSETTI, G. Lógica de 
programação e estruturas de dados. São 
Paulo: Pearson, 2016.
1
Prof. Sandro de Araújo
Lógica de
Programação e Algoritmos
Aula 3
Conversa Inicial
O objetivo desta aula é conhecer os 
principais conceitos das estruturas: 
sequencial e de seleção, tanto em 
pseudocódigo como na linguagem de 
programação C
Estudaremos como representar os algoritmos 
nas diferentes estruturas para resolver 
problemas computacionais
A aula apresenta a seguinte estrutura de 
conteúdo:
Estrutura sequencial
Estrutura de seleção
Estrutura de seleção simples ou se-então
Estrutura de seleção composta ou se-então-
senão
2
Estrutura de seleção encadeada ou se-
então-senão-se-então-senão
Estrutura de seleção de múltipla escolha ou 
escolha-caso
Estrutura sequencial
e estrutura de seleção 
É aquela que realiza um conjunto 
predeterminado de instruções de forma 
sequencial, de cima para baixo, na ordem em 
queforam declarados
Estrutura sequencial
Considere um algoritmo que irá somar dois 
números inteiros quaisquer
Para esse exemplo, temos como entrada dois 
números inteiros (numero1 e numero2) e como 
saída um número inteiro (resultado) que recebe 
o resultado de numero1 + numero2
Exemplo de estrutura sequencial
3
Pseudocódigo
1.algoritmo “exemplo1” 
2.var numero1, numero2, resultado: inteiro 
3.inicio 
4. leia (numero1) 
5. leia (numero2) 
6. resultado ← numero1 + numero2
7. escreval (“A soma dos dois números 
é: “, resultado) 
8. fimalgoritmo
Linguagem C
1. #include <stdio.h>
2. int main ()
3. {
4. int numero1, numero1, resultado;
5. scanf("%d", &numero1);
6. scanf("%d", &numero2);
7. resultado = numero1 + numero2;
8. printf("A soma dos dois números é: %d\n", 
resultado);
9. system("pause");
10. return(0);
11. }
Uma estrutura de seleção permite a escolha 
de um grupo de ações (bloco) a ser 
executado quando determinadas condições 
representadas por expressões lógicas ou 
relacionais são ou não satisfeitas
Estrutura de seleção
Temos os seguintes tipos de seleção: 
Simples
Composta
Encadeada
De múltipla escolha
Estrutura de seleção
simples ou se-então
As estruturas de seleção simples são 
utilizadas para testar certa condição antes de 
executar determinada ação
4
Se a condição for atendida, um conjunto de 
instruções deverá ser executado. Se não for 
atendida, o fluxo da execução do algoritmo 
seguirá após o fim do bloco de decisão
Pseudocódigo: sintaxe
1. Inicio
2. Se (<condição>) entao
3. <comandos>
4. Fimse
5.
6. Fimalgoritmo
Linguagem C: sintaxe
1. if (<condição>)
2. {
3. <comandos>
4. }
Considerar um algoritmo que vai pegar dois 
números inteiros. Comparar se o primeiro 
número é maior que o segundo e imprimir na 
tela uma mensagem informando o resultado 
da comparação
Exemplo de estrutura de seleção simples
Para esse exemplo temos como entrada dois 
números inteiros (a e b) e como saída uma 
mensagem de texto
5
Pseudocódigo
1.algoritmo “estruturaSimples”
2.
3.var a, b: inteiro
4.a ← 8
5.b ← 3
6.
7.inicio
8. Se (a > b) então
9. escreval("O número da variável a é maior 
que o número da variável b“) 
10. Fimse
11. fimalgoritmo
Linguagem C
1. ...
2.{
3. int a = 8, b = 3;
4. if (a > b)
5. {
6. printf(" O nº da variável a é maior 
que o nº da variável b\n");
7. }
8. system ("pause");
9. return(0);
10. }
Estrutura de seleção
composta ou se-então-senão
A estrutura de seleção composta prevê dois 
conjuntos de instruções. Após a avaliação da 
condição, um conjunto caso a resposta da 
condição resulte em verdadeiro e outro caso 
a condição resulte em falso
Fonte: Adaptado de Guedes (2014)
6
Pseudocódigo: sintaxe
1. Inicio
2. Se <condição> entao
3. <Primeiro conjunto de Instruções>
4. Senao
5. <Segundo conjunto de Instruções>
6. Fimse
7. Fimalgoritmo
Linguagem C: sintaxe
1. ...
2.if (<condição>)
3. {
4. < Primeiro conjunto de Instruções>
5. }
6.else
7. {
8. <Segundo conjunto de Instruções>
9. }
10. ...
Considerar um algoritmo que vai pegar dois 
números inteiros, comparar se o primeiro 
número é diferente do segundo e imprimir na 
tela uma mensagem com o resultado dessa 
comparação
Exemplo de estrutura de seleção composta
Pseudocódigo
1. ... 
2. var a, b: inteiro
3. inicio 
4. escreval(“Digite um número inteiro“) 
5. leia(a)
6. escreval(“Digite outro número inteiro“) 
7. leia(b)
8. Se (a <> b) então
9. escreval(“Os números são diferentes“) 
10. Senao
11. escreval(“Os números são iguais“)
12. Fimse
13.fimalgoritmo
Linguagem C
1. #include <stdio.h> 12. }
2. int main() 13. else
3. { 14. {
4. int a, b; 15. printf("a é igual a b \n”);
5. printf("Digite um número inteiro 
\n"); 16. }
6. scanf("%d", &a); 17. system ("pause");
7. printf("Digite outro número inteiro 
\n"); 18. return(0);
8. scanf("%d", &b); 19. }
9. if (a != b)
10. {
11. printf("a é diferente de b
\n");
7
Estrutura de seleção encadeada
ou se-então-senão-se-então-senão
Uma estrutura de seleção encadeada é 
formada pela combinação de estruturas de 
seleção simples e compostas, uma dentro da 
outra, não havendo limite para o número de 
combinações, podendo, em alguns casos, 
gerar um código bastante complexo
Fonte: Puga e Rissetti (2016)
Pseudocódigo: sintaxe
1.Inicio
2. Se (<condição1>) entao
3. Se (<condição2>) entao
4. <Primeiro conjunto de Instruções>
5. Senao
6. <Segundo conjunto de Instruções>
7. Fimse
8. Senao
9. <Terceiro conjunto de Instruções>
10. Fimse
11. Fimalgoritmo
Linguagem C: sintaxe
1. ... 
2. if (<condição1>){
3. if (<condição2>){
4. <Primeiro conjunto de Instruções>
5. }
6. else{
7. <Segundo conjunto de Instruções>
8. }
9. }
10. else{
11. <Terceiro conjunto de Instruções>
12. }
13. ...
Considerar que o algoritmo vai pegar dois 
números inteiros e testar para ver se o 
primeiro número é igual ao segundo
Exemplo de estrutura de seleção encadeada
8
Caso seja verdadeiro, ele vai imprimir uma 
mensagem na tela do usuário. A segunda 
condição só entrará em ação caso o resultado 
da primeira condição seja falso
Pseudocódigo
1. algoritmo 
“estruturaEncadeada”
2. var numero1, numero2: inteiro
3. inicio 
4. escreval("Digite o primeiro 
número: ") 
5. leia(numero1)
6. escreval("Digite o segundo 
número: ") 
7. leia(numero2)
8. se (numero1 = numero2) então
9. escreval("Os números são 
iguais!") 
10. senao
11. se (numero1 > numero2) 
entao
12. escreval("O maior valor é 
=", numero1)
13. senao
14. escreval("O maior valor é 
=", numero1)
15. fimse
16. fimse
17. fimalgoritmo
Linguagem C
1. ...
2. int numero1, numero2;
3. printf("Digite o primeiro 
número: ");
4. scanf("%d", & numero1);
5. printf("Digite o segundo 
número: ");
6. scanf("%d", & numero2);
7. if (numero1== numero2)
8. printf("Os números são 
iguais!");
9. else
10. if (numero1> numero2)
11. printf("O maior valor é = 
%d", numero1);
12. else
13. printf("O maior valor é = 
%d", numero2);
14. ...
Estrutura de seleção de
múltipla escolha ou escolha-caso
Uma estrutura de seleção de múltipla escolha 
é uma solução bem-posta quanto se tem 
várias estruturas de decisão (se-então-
senão)
9
A estrutura escolha-caso permite ir direto ao 
bloco de instruções desejado, submetendo-se 
ao valor de uma variável de verificação
Fonte: Puga e Rissetti (2016)
Pseudocódigo: sintaxe
1.escolha <expressão>
2.
3.caso <valor1>
4. <comandos>
5. caso <valor2>
6. <comandos>
7. outrocaso
8. <comandos>
9.
10. fimescolha
Linguagem C: sintaxe
1. switch (<expressão>)
2. {
3. case <valor1> :
4. <comandos>
5. break;
6. case <valor2> :
7. <comandos>
8. break;
9. default :
10. <comandos>
11. }
Considere um algoritmo que vai pegar um 
número e vai retornar o dia da semana 
equivalente ao número
Exemplo de estrutura de
seleção de múltipla escolha 
10
Pseudocódigo
1....
2. escreval("Digite um número de 1 a 7 ")
3. leia(numero1)
Pseudocódigo
4. escolha numero1
5. caso "1"
6. escreval("O dia escolhido foi Domingo")
7. caso "2"
8. escreval("O dia escolhido foi Segunda-feira")
9. ...
10. caso "7"
11. escreval("O dia escolhido foi Sábado")
12. outrocaso
13. escreval("Não existe dia da semana para 
esse número")
14....
Linguagem C
1....
2.{
3. int opcao;
4. printf ("Digite um número de 1 a 7: ");
5. scanf("%d", &opcao);
Linguagem C
1. switch (opcao)
2. {
3. case 1:
4. printf ("O dia escolhido foi Domingo\n");
5. break;
6.
7. case 2:
8. printf ("O dia escolhido foi Segunda-feira\n");
9. break;
10.... 
11. case 7:
12. printf ("O dia escolhido foi Sábado\n");
13. break;
14. default:
15. printf ("Não existe diada semana para esse 
número\n");
16....
11
1
Prof. Sandro de Araujo
Estrutura de Repetição
Aula 4
Conversa Inicial
Estrutura de repetição
Estrutura de repetição while (enquanto)
Estrutura de repetição do-while (repita-até)
Estrutura de repetição for (para)
Estrutura de repetição aninhada
Essa aula apresenta a seguinte estrutura de 
conteúdo:
O objetivo desta aula é conhecer os 
principais conceitos e aplicações das 
estruturas de repetições, como: while
(enquanto), do-while (repita-até) e for
(para). Também é objetivo representá-los 
em fluxograma, pseudocódigo e linguagem C 
para resolver problemas computacionais
Estrutura de repetição
Também é conhecida como laços (loops) a 
repetição de um conjunto de ações uma 
vez, várias vezes ou nenhuma vez
Depende de uma condição verdadeira ou 
falsa
Condicionada a um controle ou condição 
de parada
Estrutura de repetição
2
Inicialização – determina a condição inicial 
da repetição
Condição – é a expressão booleana que avalia 
após cada leitura do corpo e determina se 
uma nova leitura deverá ser feita ou se a 
estrutura de repetição pode ser encerrada
Quatro elementos fundamentais de uma 
estrutura de repetição
Corpo – formado por todas as instruções que 
serão executadas repetidamente
Iteração – é a repetição de um conjunto de 
instruções juntamente com a condição de 
terminação do laço
Quatro elementos fundamentais de uma 
estrutura de repetição
Exemplo - estrutura de repetição
Fonte: Elaboração própria (2018).
<INICIALIZAÇÃO 
DO CONTADOR>
cont  0
<CONDIÇÃO>
cont<10
<INCREMENTA O 
CONTADOR>
cont  cont+1
<INSTRUÇÕES>
Não
Sim
INÍCIO DO LAÇO
cont = 0
cont = 1
cont = 2
cont = 3
...
cont = 9
Terminou de contar!
Como resultado do contador, teremos...
Estrutura de repetição while
(enquanto)
Na estrutura de repetição while (enquanto), 
a execução de loop depende de uma condição 
que é verificada no início do laço
Enquanto o resultado da condição for 
verdadeiro, o bloco de instruções é 
executado; caso contrário, ocorre o desvio 
para a primeira linha após esse bloco
Estrutura de repetição while (enquanto)
3
Exemplo - estrutura de repetição 
while (enquanto)
Fonte: Elaboração própria (2018).
<INSTRUÇÕES> <CONDIÇÃO>
SIM
NÃO
Pseudocódigo - Sintaxe
1. enquanto <EXPRESSÃO BOOLEANA> faca
2. <comandos>
3. Fimenquanto
Linguagem C - Sintaxe
1. while (<condição>)
2. {
3. <comandos>
4. }
Considere um algoritmo que vai imprimir na 
tela o número de vezes que foi executado o 
loop usando a estrutura de repetição while
Exemplo - estrutura de repetição 
while (enquanto)
Fonte: Elaboração própria (2018).
INÍCIO
cont  0
cont>10
cont  cont+1
“Total de 
loops é”, cont
FIM
NÃO
SIM
Pseudocódigo
1. algoritmo "Exemplo1"
2. var
3. cont : inteiro
4. inicio
5. cont  0
6. enquanto cont < 10 faca
7. escreval (Total de loops é: ”, cont)
8. cont  cont + 1 
9. fimenquanto
10.fimalgoritmo
Linguagem C
1. ...
2. {
3. int cont = 0; //declarando e inicializando a variável de controle
4.
5. while (cont < 10) // Testando a condição
6. {
7. printf(“Total de loops é: %d ", cont); //Instruções do laço 
8.
9. cont++; //atualizando a variável de controle
10. }
4
Estrutura de repetição 
do-while (repita-até)
É bastante similar ao laço while (enquanto)
Utilizada em simulações em que se faz 
necessário executar o corpo antes do 
teste, para ter garantia de que o laço 
será executado uma vez
Estrutura de repetição do-while (repita-até)
Fonte: Elaboração própria (2018).
<INSTRUÇÕES>
<CONDIÇÃO>
SIM
NÃO
Pseudocódigo - Sintaxe
1. repita
2. <INSTRUÇÕES
3. ate <EXPRESSÃO BOOLEANA>
Linguagem C - Sintaxe
1. do{
2. <comandos>
3. } while (<condição>);
Considere um algoritmo que vai pegar dois 
números inteiros, comparar se o primeiro 
número é diferente do segundo e imprimir na 
tela uma mensagem com o resultado dessa 
comparação
Exemplo - estrutura de repetição 
do-while (repita-até)
Fonte: Elaboração própria (2018).
“O valor 
de a:”, a
a=10
a<=40
FIM
SIM
NÃO
INÍCIO
5
Pseudocódigo
1. ... 
2. var
3. a : inteiro
4. inicio
5. a <- 10
6. repita
7. escreval ("O valor de a: ", a)
8. a <- a+1
9. ate ( a <= 40 )
10. fimalgoritmo
Linguagem C
1. ... 
2. int a = 10;
3. do {
4. printf("O valor de a: %d\n", a);
5. a = a + 1; //ou a++;
6. } while( a <= 40 );
7. ...
Estrutura de repetição for (para)
A estrutura de repetição for (para) é uma 
estrutura que reúne no cabeçalho os 
elementos de inicialização, condição e 
iteração 
No for, o laço vai repetir se o resultado da 
condição for verdadeira
Estrutura de repetição for (para)
Fonte: Elaboração própria (2018).
<INICIALIZAÇÃO 
DO CONTADOR>
<CONDIÇÃO> <INCREMENTA CONTADOR>
<INSTRUÇÕES>
SIM
NÃO
Pseudocódigo - Sintaxe
1. para <variável> de <início> ate <fim><passo +1> faca
2. <instruções>
3. fimpara
Linguagem C - Sintaxe
for (inicialização ; teste; interação)
{
<instruções>;
}
6
Considere um algoritmo que faz a contagem 
decrescente de 1 até 30 e imprime na tela o 
resultado
Exemplo - estrutura de repetição 
for (para)
Fonte: Elaboração própria (2018).
cont>=1 cont=cont-1
cont=30
cont
FIM
SIM
NÃO
INÍCIO
Pseudocódigo
1. ... 
2. var
3. cont: inteiro
4. inicio
5. para cont de 30 ate 1 passo -1 faca
6. escreval (cont)
7. fimpara
8. fimalgoritmo
Linguagem C
1. ... 
int cont;
for (cont = 30; cont >= 1; cont--)
{
printf("%d\n", cont);
}
system("pause");
return 0;
}
Estrutura de repetição aninhada A linguagem C permite a utilização de um laço dentro de outro laço
Quando um laço faz parte do corpo de outro 
laço, dizemos que o laço interno é um laço 
aninhado (Mizrahi, 2008)
Estrutura de repetição aninhada
7
Sintaxe while
1. while (<condição>)
2. {
3. while (<condição>)
4. {
5. <comandos>
6. }
7. <comandos>
8. }
Sintaxe do-while
1. do
2. {
3. <comandos>
4. do
5. {
6. <comandos>
7. } while (<condição>);
8. } while (<condição>);
Sintaxe for
1. for (<valor inicial>; <condição>; <incremento>)
2. {
3. for (<valor inicial>; <condição>; <incremento>)
4. {
5. <instruções>;
6. }
7. <instruções>;
8. }
Referências
MIZRAHI V. V. Treinamento em Linguagem C. 
2. ed. São Paulo: Makron Books, 2008. 
1
Prof. Sandro de Araujo
Lógica de Programação e Algoritmos
Aula 5
Conversa Inicial
Esta aula apresenta a seguinte
estrutura de conteúdo:
Vetor e matriz
Declarar e inicializar vetores
Declarar e inicializar matrizes
Cadeia de caracteres 
Inicializar uma cadeia de caracteres
O objetivo dessa aula é conhecer os 
principais conceitos e aplicações dos vetores, 
matrizes e cadeias de caracteres – e de que 
forma declará-los e inicializá-los – bem como 
representá-los em pseudocódigo e linguagem 
C para resolver problemas computacionais
Vetor e matriz
Variável composta homogênea 
unidimensional
Conjunto de dados do mesmo tipo
Possuem o mesmo identificador (nome)
Acessados por um número
inteiro chamado de índice
Tipo_de_dado + Nome_do_Vetor +
[Posições - Índices] 
Vetor ou array
2
Fonte: Puga e Rissetti, 2016.
Índice: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
Nome: temp 18 17 20 26 32 29 15 12 16 21
É um vetor de vetores
Acessado também por índice
Estrutura de dados com duas
ou mais dimensões
Estrutura composta por linhas e colunas
Tipo_de_dado + Nome_da_Matriz +
[Qtde Linhas] + [Qtde Colunas]
Matriz
COLUNAS
LI
N
H
A
S 0,0 0,1
1,0 1,1
19 21
33 581
Índices Dados
[0,0] 
[0,1] 
[1,0] 
[1,1] 
19
21
33
581
Declarar e inicializar vetores
A declaração de um vetor
deveconter três informações: 
1. Nome do vetor (identificador)
2. Número de posições (tamanho)
3. Tipo de dado que será armazenado
3
Pseudocódigo
nomeDoVetor: vetor [início..final]
de tipoDoVetor
nota: vetor[1..4] de Inteiro
Linguagem C
tipoDoVetor nomeDoVetor
[QuantidadeDeElementos]
int nota [4]
Sintaxe pseudocódigo e linguagem C
Também é possível inicializar um vetor sem 
especificar a quantidade de elementos:
Ou seja:
Declarar e inicializar vetores
int números[6] = {1,2,3,0,0,0}
int números[ ] = {3,6,7};
números[0] = 3;
números[1] = 6;
números[2] = 7;
int números[6] = {1,2,3};
Pseudocódigo
...
var
nota: vetor[1..4] de real
inicio
nota[1] <- 7.6 
nota[2] <- 8.9
nota[3] <- 9 
nota[4] <- 9.9
escreval ("Exibindo os Valores
das Notas")
escreval (" NOTA 1:", nota[1])
escreval (" NOTA 2:", nota[2])
escreval (" NOTA 3:", nota[3])
escreval (" NOTA 4:", nota[4])
fimalgoritmo
...
{
float nota[4] = {7.6, 8.9, 9, 9.9}; 
printf("Exibindo os Valores das Notas \n\n");
printf(" NOTA 1: %.1f\n", nota[0]);
printf(" NOTA 2: %.1f\n", nota[1]);
printf(" NOTA 3: %.1f\n", nota[2]);
printf(" NOTA 4: %.1f\n", nota[3]);
...
Linguagem C
Declarar e inicializar matrizes
A declaração de uma matriz
deve conter quatro informações: 
1. Nome da matriz (identificador)
2. Número de linhas (tamanho)
3. Número de colunas (tamanho)
4. Tipo de dado que será armazenado
4
Pseudocódigo
nomeDaMatriz: vetor[início..final, 
inicio..final] de tipoDoVetor
nota: vetor[1..4,1..4] de Inteiro
Linguagem C
tipoDaMatriz nomeDaMatriz
[QtdeLinhas][QtdeColunas];
int nota [4][4];
Sintaxe pseudocódigo e linguagem C
Para declarar uma matriz 2X4 e inicializá-la, 
devemos colocar cada linha entre chaves {},
e separar elas por vírgulas:
Exemplo:
int numeros[2][4] = { {11, 22, 35, 54 },
{5, 9, 16, 8 } };
Declarar e inicializar vetores
11 22 35 54
Duas linhas
5 9 16 8
Quatro colunas
...
var
tabela: vetor[1..3,1..2] de inteiro
linha,coluna: inteiro
(...)
Pseudocódigo (...)
inicio
tabela[0,0] <- 1
tabela[0,1] <- 8
tabela[1,0] <- 3
tabela[1,1] <- 9
tabela[2,0] <- 6
tabela[2,1] <- 78955
escreval ("Imprimindo a matriz tabela:")
escreval (" ")
para linha de 0 até 2 faca
para coluna de 0 até 1 faca
escreval("tabela[",linha,"][",coluna,"]=",tab
ela[linha,coluna])
fimpara
fimpara
escreval (" ")
escreval
("**********************************
***")
escreval (" ")
escreval("O conteúdo da tabela[2][1] é: 
",tabela[2,1])
fimalgoritmo
5
int main()
{
int tabela[3][2] = {{1,8},{3,9},{6,78955}};
int linha,coluna;
Linguagem C (continuação) printf("Imprimindo a matriz tabela: \n\n");
for(linha=0;linha<3;linha++)
{
for(coluna=0;coluna<2;coluna++)
{
printf("tabela[%d][%d]=%d",linha,coluna,tabela
[linha][coluna]);
printf("\n");
}
}
printf("\n");
printf("*************************************");
printf("\n\n");
printf("O conteudo da tabela[2][1] e: %d\n\n",tabela[2][1]);
system("pause");
return 0;
}
Linguagem C
Pseudocódigo Linguagem C
Cadeias de caracteres É uma variável usada para armazenar cadeia 
de caracteres com conteúdo que pode ser 
alterado ou substituído por outros elementos 
para formar uma nova cadeia de caracteres
Cadeia de caracteres (string)
6
A linguagem C não possui um tipo
de dado similar à string. Em vez disso,
para armazenar uma cadeia de caracteres, 
utiliza vetores (matrizes unidimensionais)
char NomeDaString[NúmeroDeElementos]
char nome[8];
A palavra "UNINTER", na linguagem de 
programação C, é um array que contém oito 
[8] posições, conforme mostrado abaixo:
char nome [8] = { ‘U’, ‘N’, ‘I’, ‘N’, ‘T’, ‘E’, 
‘R’, '\0' };
Inicializar uma cadeia de caracteres
Uma string pode ser inicializada 
automaticamente pelo programa ou pode 
receber um valor por meio do teclado
Usam-se as duas formas para
inicializar uma string em C:
char nome [ ] = “UNINTER”;
char nome [ ] = { ‘U’, ‘N’, ‘I’, ‘N’, ‘T’, ‘E’, ‘R’, 
'\0' };
Exemplo 1
char nome [ ] = “UNINTER”;
char nome [ ] = { ‘U’, ‘N’, ‘I’, ‘N’, ‘T’, ‘E’, ‘R’, 
'\0’ };
Exemplo 2
char [ ] = “12345”;
char [ ] = {‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘\0’};
Não é possível fazer cálculos 
matemáticos com números do tipo 
caractere
algoritmo "exemploString"
var
nome1 : caractere
nome2 : caractere
nome3 : caractere
asteriscos : caractere
Pseudocódigo
7
(...)
inicio
nome1 <- "Centro Universitário"
nome2 <- "Internacional"
nome3 <- "UNINTER"
asteriscos <-
"********************************************"
escreval(asteriscos)
escreval(" ",nome1," ",nome2," ",nome3)
escreval(asteriscos)
fimalgoritmo
escreval(asteriscos)
escreval(" ",nome1," ",nome2," ",nome3)
escreval(asteriscos)
fimalgoritmo
#include<stdio.h>
#include<conio.h>
#include <locale.h>
int main()
{
char nome1[ ]= "Centro Universitário";
char nome2[ ]= "Internacional";
char nome3[ ]= "UNINTER";
char asteriscos[]= 
"\n***********************************\n";
Linguagem C (...)
printf("%s",asteriscos);
printf("%s %s %s", nome1,nome2,nome3, 
setlocale(LC_ALL,""));
printf("%s\n\n",asteriscos);
system("pause");
return 0;
}
printf("%s",asteriscos);
printf(" %s %s %s", nome1,nome2,
nome3, setlocale(LC_ALL,""));
printf("%s",asteriscos);
system("pause");
return 0;
}
Pseudocódigo
Linguagem C
8
1
Prof. Sandro de Araújo
Lógica de Programação e 
Algoritmos
Aula 6
Conversa Inicial
Esta aula apresentará a seguinte estrutura de 
conteúdo:
Procedimento
Função
Declaração de uma função
Parâmetros
Passagem de parâmetros
O objetivo desta aula é conhecer os principais 
conceitos e aplicações de procedimentos
e funções e fazer uma introdução de como
declará-los nas construções de algoritmos
para resolver problemas computacionais
Procedimento
Procedimentos são estruturas que juntam um 
conjunto de comandos, que são executados
no momento em que são chamados
O procedimento é identificado com o nome 
<identificador> acompanhado de parênteses
() e pode possuir ou não parâmetros
(Puga e Rissetti, 2016)
Procedimento
2
Quando o programa principal chama um 
procedimento, por meio do seu identificador, 
o controle do fluxo de execução do programa 
passa para o procedimento e, no momento 
em que o procedimento finalizar a tarefa,
o controle do fluxo de execução
retornará ao programa principal
Procedimento Para criar um procedimento em pseudocódigo
utiliza-se a seguinte estrutura:
procedimento <nome-de-procedimento> 
[(<declarações-de-parâmetros>)]
var
// Seção de declarações internas
início
// Seção de comandos
fimprocedimento
Na linguagem de programação C, um 
procedimento é uma função sem retorno
e, para criar um procedimento,
utiliza-se a seguinte estrutura:
void nome<identificador>( )
{
// Seção de Comandos 
return; /* retorno de uma função void */
}
Exemplo:
Considere um algoritmo que somará dois 
números, usando um procedimento, e 
mostrará o resultado no programa principal
algoritmo "CalculaSoma“
procedimento SOMA
var
resultado,a,b:real
início
escreva("ABAIXO A ROTINA DA SOMA")
escreva("*** Digite o primeiro número: ")
leia(a)
Pseudocódigo
escreva("*** Digite o segundo numero: ")
leia(b)
resultado<-a+b
escreva("")
escreva("A soma dos dois valores 
é:",resultado)
escreva("")
fimprocedimento
3
(...)
início //programa principal
SOMA
fimalgoritmo
Pseudocódigo
#include <stdio.h>
#include <conio.h>
void SOMA()
{
float resultado, a, b;
printf("ABAIXO A ROTINA DA SOMA");
printf("\n*** Digite o primeironúmero: ");
Linguagem C
scanf("%f", &a);
printf("*** Digite o segundo número: ");
scanf("%f", &b);
resultado = a + b;
printf("\n A soma dos dois valores digitados é: 
%.2f\n", resultado);
return;
}
Linguagem C
Linguagem C
#include <stdio.h>
#include <stdlib.h>
int main() //programa principal
{
SOMA();
return 0;
}
4
Função A função é um tipo especial de procedimento. 
Também conhecida como sub-rotina, ela é um 
conjunto de instruções construídas para cumprir 
uma tarefa específica e agrupada numa unidade
Função
Para criar uma função em pseudocódigo utiliza-
se a seguinte estrutura:
função<nome-função>[(<declarações-
parâmetros>)]:<tipo-de-dado>
// Seção de declarações internas
início
// Seção de comandos
retorne valor_de_retorno
fimfuncao
Para criar uma função na linguagem C, utiliza-se 
a seguinte estrutura:
<tipo> nome<identificador> 
(<tipo>parâmetro,<tipo>parâmetro, …)
{
// Seção de comandos 
return valor_de_retorno;
}
Exemplo:
Considere um algoritmo que terá uma 
rotina da qual recebe um número do tipo 
inteiro e calcula o seu quadrado
algoritmo "CalculaQuadrado"
var
n1, a, resultado: inteiro
função calcula_quadrado(a : inteiro): inteiro
var retorna: inteiro
Pseudocódigo
5
início
retorna <- a*a
retorne retorna
fimfuncao
Pseudocódigo
início
escreva ("Digite um número inteiro: ")
leia (n1)
escreva ("O quadrado do número é: ", 
calcula_quadrado(n1))
fimalgoritmo
Pseudocódigo
int quadrado(int n1);
int main()
{
int número, resultado;
printf("Digite um número inteiro: \n");
scanf("%d", &número);
Linguagem C
printf("O quadrado do número é: %d", 
quadrado(numero));
return 0;
}
int quadrado(int n1)
Linguagem C
{
resultado = n1*n1;
return resultado;
}
Linguagem C
6
Declaração de uma função
Na chamada de uma função, o compilador 
necessita que sejam informados corretamente o 
tipo de retorno e os parâmetros da função, para 
que ele possa manipulá-los
Declaração de uma função Declaração de uma função
O valor de retorno da função se dá com o 
comando return. Esse comando é sempre
o último a ser executado por uma função, 
finalizado o bloco de instruções
O tipo void representa o "sem retorno", ou
seja, um retorno com conteúdo indeterminado
Declaração de uma função
Parâmetros
7
Os parâmetros podem ser divididos em duas 
categorias
Formais: que correspondem aos parâmetros 
utilizados na descrição da função
Reais: que correspondem aos parâmetros 
especificados na instrução de chamada
Parâmetros Parâmetros
Os parâmetros formais só existem para
o programa no momento da execução
da função. Após sua execução
eles deixam de existir
Diferentemente, os parâmetros reais podem 
ser usados na chamada da função e também 
em outros momentos no programa principal
Parâmetros
int soma (int x, int y);
int main()
{
int a = 6, b = 5, c;
c = a - b; // Parâmetros reais usados para 
subtração
printf("Soma = %d\n", soma(a,b)); 
//Parâmetros reais
Parâmetros
printf("Subtração = %d\n\n", c);
system("pause");
return 0;
}
Parâmetros
int soma (int x, int y) // Parâmetros formais
{
int z;
z = x + y;
return z;
}
Parâmetros
8
Passagem de parâmetros
Por valor – uma cópia do parâmetro é feita, 
um valor da expressão é calculado e o valor 
resultante é passado para a execução da 
função
Passagem de parâmetros
Por referência – o endereço de um parâmetro 
é passado na chamada da função. Com isso, a 
função pode modificar a variável diretamente
Passagem de parâmetros
void soma_mais_1(int num);
int main()
{
int a = 8;
printf("Antes da função: a = %d\n",a); 
//Impressão de “a”
soma_mais_1(a); //A função recebe o 
parâmetro de “a”
Exemplo de passagem por valor
printf("Depois da função: a = %d\n",a); // 
Impressão de “a”
system("pause");
return 0;
}
Exemplo de passagem por valor
9
void soma_mais_1(int num){ // Cópia do dado 
de "a" em “num"
num = num + 1;
printf("Dentro da função: a = %d\n", num); 
}
Exemplo de passagem por valor Exemplo de passagem por valor
void soma_mais_1(int num);
int main()
{
int a = 8;
printf("Antes da função: a = %d\n",a); 
//Impressão de “a”
soma_mais_1(a); //A função recebe o 
parâmetro de “a”
Exemplo de passagem por valor
printf("Depois da função: a = %d\n",a); // 
Impressão de “a”
system("pause");
return 0;
Exemplo de passagem por valor
}
void soma_mais_1(int num){ // Cópia do dado 
de "a" em “num"
num = num + 1;
printf("Dentro da função: a = %d\n", num); 
}
Exemplo de passagem por valor
10
Passagem por valor
Passagem por referência
Na passagem por valor, o parâmetro formal
comporta-se como uma variável local e as 
alterações feitas nesta variável não
terão efeito sobre o parâmetro real
Na passagem por referência, o parâmetro formal
comporta-se como se fosse uma variável global, 
em que todas as alterações feitas, nesta
variável, são feitas no parâmetro real
Passagem de parâmetros

Continue navegando