Buscar

Slides Algoritmos e Lógica

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 259 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 259 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 259 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

Algoritmos e Lógica 
de Programação
Prof. Priscilla Cunha
LÓGICA E ALGORITMOS
• O processamento de dados pode ser
representado da seguinte maneira:
3
Entrada Processamento Saída
• O processamento de dados é uma atividade que
consiste na entrada de dados, no tratamento desses
dados e na apresentação dos resultados, sendo que
tais resultados finais podem ser diferentes ou iguais
aos dados.
• Já o processamento eletrônico de dados é realizado
por um equipamento eletrônico tal como o
computador, sendo que o uso do computador para o
processamento de dados tem sido preferido devido
a sua rapidez e precisão.
4
• Dados – conjuntos de informações brutas que
se transformam em informação.
• Processamento – conjunto de operações
lógicas e aritméticas que são aplicadas sobre
os dados com o auxílio de equipamentos
informáticos.
• Informação – conjunto de resultados que são
obtidos após um processamento de dados.
5
PROGRAMAS E 
LINGUAGENS DE 
PROGRAMAÇÃO
Linguagem de Programação
• Ferramentas usadas para que se possa
escrever instruções que serão executadas pelo
computador.
• Existem muitas linguagens de programação e
muitas maneiras de fazer um programa, e elas
se classificam em:
• Linguagens de alto nível;
• Linguagens de baixo nível.
7
Linguagens de Baixo Nível
• As linguagens de baixo nível são aquelas mais
próximas do código de máquina
• Com elas é preciso ter o conhecimento direto
da arquitetura do computador
• Exemplo: Assembly.
8
Linguagens de Alto Nível
• As linguagens de alto nível são legíveis por seres
humanos.
• Algumas são altamente declarativas.
• Elas possuem um nível de abstração que faz com
que você entenda aquele código mais facilmente.
• Não é preciso conhecer coisas
como registradores ou instruções do processador
9
• Alguns exemplos de linguagens de alto nível:
• JavaScript
• Python
• PHP
• Java
• Ruby
10
Programa de Computador (Software)
• Um programa é um conjunto de instruções que determinam quais funções e em qual 
sequência o computador deve executar para a solução de um problema.
11
• Para cada passo é feita uma operação lógica
ou aritmética
• Para cada operação, um conjunto de sinais de
controle diferente é necessário
• O processador de um computador digital só
reconhece 2 níveis de sinais elétricos: 0 e 1
12
• Esses programas nada mais são que arquivos,
onde temos nossas instruções escritas por pessoas
desenvolvedoras de software em linguagens de
programação.
• Este arquivo recebe o nome de código fonte.
• Para que o computador execute aquilo que
escrevemos, em uma linguagem de alto nível,
precisamos transformar isso em código de máquina.
Este processo de transformação pode ser através
da interpretação ou compilação do código fonte.
13
• Os circuitos de um computador (hardware)
reconhecem e executam um conjunto limitado e
simples de instruções (linguagem de máquina-
binária), como:
• Soma;
• Subtração;
• Comparação;
• Transferência de dados de uma parte da memória
para outra.
14
• A linguagem de máquina (binária - baixo nível)
está muito distante de uma linguagem natural
(humana - alto nível).
• O que os usuários precisam fazer é, em geral,
complexo, e o que o computador é capaz de
fazer acaba sendo muito simples.
15
• Exemplo:
• O usuário quer calcular a correção trajetória de um
foguete até a lua.
• Como o usuário pode fazer isso em linguagem de
máquina?
• Solução
• Criar uma hierarquia de abstrações de níveis mais
altos baseadas nos níveis mais baixos.
• Criar uma organização estruturada de
computadores para facilitar a comunicação
homem-máquina.
16
LÓGICA DE 
PROGRAMAÇÃO
O que é Lógica
CONJUNTO DE REGRAS E 
PRINCÍPIOS QUE 
ORIENTAM, IMPLÍCITA OU 
EXPLICITAMENTE, O 
DESENVOLVIMENTO DE 
UMA ARGUMENTAÇÃO OU 
DE UM RACIOCÍNIO, A 
RESOLUÇÃO DE UM 
PROBLEMA, ETC.
A CIÊNCIA QUE ESTUDA 
AS LEIS E CRITÉRIOS DE 
VALIDADE QUE REGEM O 
PENSAMENTO E A 
DEMONSTRAÇÃO, OU 
SEJA, CIÊNCIA DOS 
PRINCÍPIOS FORMAIS DO 
RACIOCÍNIO.
ESQUEMA SISTEMÁTICO 
QUE DEFINE AS 
INTERAÇÕES DE SINAIS 
NO EQUIPAMENTO 
AUTOMÁTICO DO 
PROCESSAMENTO DE 
DADOS.
Lógica de 
Programação
• A lógica de programação no
desenvolvimento de sistemas e
programas, pois permite definir a
sequência lógica para o desenvolvimento.
• Lógica de programação é a técnica de
encadear pensamentos para atingir
determinado objetivo.
19
Sequência Lógica
• Os “pensamentos” acima citados podem
ser descritos como uma sequência de
instruções, que devem ser seguidas para
se cumprir uma determinada tarefa.
• Sequência Lógica são passos executados
até atingir um objetivo ou solução de um 
problema.
20
Instruções
• Na linguagem comum, entende-se por
instruções “um conjunto de regras ou normas
definidas para a realização ou emprego de
algo”.
• Em informática, porém, instrução é a
informação que indica a um computador uma
ação a executar.
• Uma ordem isolada não permite realizar o
processo completo, para isso é necessário um
conjunto de instruções colocadas em ordem
sequencial lógica.
21
• Lógica de Programação
• Técnica de encadear pensamentos para atingir um
objetivo.
• Sequência Lógica
• Passos executados para atingir o objetivo ou
solução do problema.
• Instruções
• Conjunto de regras para realizar algo.
22
Algoritmo
• Sequência finita de passos que levam a
execução de uma tarefa.
• Sequência de instruções que dão cabo de
uma meta específica, devendo ser claras e
precisas.
23
• Os algoritmos são descritos em uma linguagem
chamada pseudocódigo.
• Este nome é uma alusão à posterior
implementação em uma linguagem de
programação, ou seja, quando formos
programar em uma linguagem, por exemplo
Java, estaremos gerando código em Java.
24
• Os algoritmos são independentes das
linguagens de programação.
• O algoritmo deve ser fácil de se interpretar e
fácil de codificar.
• Ele deve ser o intermediário entre a linguagem
falada e a linguagem de programação.
25
• Passos para a construção de um algoritmo
• Identificar o problema
• Obter as entradas de dados, ou seja, identificar os
dados que devem ser fornecidos e, a partir deles,
verificar se desenvolverão os
cálculos/processamento
• Obter as saídas de dados que devem ser gerados;
• Determinar o que deve ser feito para processar as
entradas em saídas;
• Construir o algoritmo;
• Testar a solução.
26
Exemplos de Algoritmos
• Construir um algoritmo para
fazer um suco de laranja.
• Problema : Fazer um suco
de laranja
• Entrada: Laranja e Copo
• Processamento:
• Cortar a laranja
• Espremer a laranja sobre o
copo
• Saída: suco de laranja
• Teste: experimentar o suco
• Construir um algoritmo para
somar dois números
• Problema : Somar dois
números
• Entrada:
• Primeiro número
• Segundo número
• Processamento: somar o
primeiro número com o
segundo número
• Saída: resultado da soma
• Teste: verificar o resultado
da soma
27
• Imagine o seguinte problema:
• Calcular a média final dos alunos da 3ª série.
Os alunos realizarão quatro provas: N1, N2, N3
e N4.
• O cálculo da média se dá pela fórmula:
Média final = (N1 + N2 + N3 + N4) / 4
28
• Para montar o algoritmo proposto, faremos três
perguntas:
1. Quais são os dados de entrada?
• N1, N2, N3, N4
2. Qual será o processamento a ser utilizado?
• Somar N1, N2, N3 e N4 e depois dividir a soma por
4
3. Quais serão os dados de saída?
• Média final
29
• Algoritmo
ALGORITMO MÉDIA
Receba nota 1
Receba nota 2
Receba nota 3
Receba nota 4
Some todas as notas e divida o resultado por 4
Mostre o resultado da divisão
30
FORMAS DE 
REPRESENTAÇÃO DA 
LÓGICA DE 
PROGRAMAÇÃO
Representação de Algoritmos
• Existem 3 formas de se representar os
algoritmos:
• Descrição narrativa
• Fluxograma
• Pseudocódigo
32
• Como exemplo, para melhor entender o assunto,
usaremos o exercício a seguir:
• Fazer um algoritmo que troca o conteúdo entre duas
variáveis.
• Suponha-se que tenhamos uma variável A cujo conteúdo seja
o número 2 e tenhamos outra variável B cujo conteúdo seja o
número 4.
• O objetivo é colocar onúmero 4 na variável A e o número 2
na variável B.
33
Descrição Narrativa
34
Os algoritmos são expressos 
de maneira direta
É usada linguagem natural
• Passo 0: A tem como conteúdo “2” e B “4”.
• Passo 1: providenciar mais uma variável “C”.
• Passo 2: colocar o conteúdo da variável B na
variável C.
• Passo 3: colocar o conteúdo da variável A na
variável B.
• Passo 4: colocar o conteúdo da variável C na
variável A.
• Passo 5: agora A tem como conteúdo: “4” e B “2”.
35
Fluxograma
36
Tem o objetivo de descrever 
graficamente a solução lógica do 
problema
Possibilita o planejamento da estrutura 
do programa
Facilita a validação da estrutura 
planejada
Cada operação é representada por um 
símbolo cuja forma representa o 
processo envolvido
37
Símbolos Básicos
38
Pseudocódigo
39
Usa linguagem intermediária entre a linguagem falada e a 
linguagem de programação
É independente da linguagem de programação
• Estrutura:
programa <identificador_do_programa>
<declaração>
inicio
<instruções>
fim
• Onde:
• <identificador_do_programa> - nome do algoritmo
• <declaração> - onde são declaradas variáveis,
constantes e tipos de dados
• <instruções> - onde ocorrem as entradas de dados, os
cálculos, o processamento necessário, as saídas são
exibidas
40
programa troca;
var
a, b, c: inteiro;
inicio
a 2;
b 4;
escreva “a = ”,a, “ e b = ”,b;
c b;
b a;
a c;
escreva “Trocamos e agora a = ”,a, “ e b = ”,b;
fim
41
Cabeçalho 
São criadas 3 variáveis do tipo inteiro
Inicia-se o bloco principal, onde vamos colocar a lógica 
São atribuídos valores para as variáveis a e b
Mensagem mostrando a e b em tela
É feita a troca de valores entre a, b e c 
Mensagem mostrando os valores finais e a e b
Fim do bloco principal 
Exemplo - algoritmo que faz a soma de 
dois números inteiros quaisquer
• Descrição narrativa
Passo 0: ler n1
Passo 1: ler n2
Passo 2: somar n1 + n2
Passo 3: colocar a soma em resultado
Passo 4: exibir o resultado
42
• Fluxograma
43
• Pseudocódigo
programaSoma
var n1, n2, resultado: inteiro;
início
leia (n1)
leia (n2)
resultado n1 + n2
escreva (resultado)
fim
44
• Linguagem de Programação – C
#include <stdio.h>
int main()
{
int n1, n2, resultado;
printf ("Digite o primeiro valor: ");
scanf ("%d", &n1);
printf ("\nDigite o segundo valor: ");
scanf ("%d", &n2);
resultado = n1 + n2;
printf ("\n O resultado da soma é: %d.", resultado);
return 0;
}
45
Biblioteca de tratamento de entrada/saída 
Declaração das variáveis
Exibir na tela
Ler o que foi digitado
Cálculo a ser efetuado
Mostrar resultado
TIPOS DE DADOS
• Quando um programa está sendo executado
pelo computador, as células de memória
armazenam dados, e esses dados são
classificados de acordo com seu tipo.
• É preciso, no programa, informar ao
computador que tipo de dado vai ser
armazenado e/ou manipulado, para que se
saiba quais operações são permitidas.
48
• Por exemplo: em dados numéricos, aplicamos
operações aritméticas; em dados booleanos
aplicamos operações lógicas.
• O tipo de dado determina quantas células de
memória são necessárias para que ele seja
armazenado.
49
• Existem 2 tipos básicos:
• Tipos simples
• Tipos estruturados (vetor, registro, etc.)
50
Tipo de dados simples
Numérico
Inteiro
Real
Caractere Lógico
• Quando estamos desenvolvendo um programa,
e precisamos usar variáveis, é preciso declarar
o tipo dessas variáveis.
• Temos 4 tipos básicos, como vimos no gráfico
anterior:
• Inteiro
• Real
• Caractere
• Lógico
51
• Inteiro
• Conjunto de números positivos, negativos e nulos
sem fração decimal.
• Aloca dois bytes de memória
• Pode ser um número entre -32768 e 32768
• Corresponde a 65536 possibilidades de valores
• Exemplos: 1; -3; 0; 235; 5673
52
• Real
• Conjunto de números positivos, negativos e nulos
com fração decimal.
• Aloca quatro bytes de memória
• Pode ser um número entre 3.4e-38 e 3.4e+38
• Exemplos: 1; 2,34; -0,56; 24,69; 1245,55
53
• Caractere
• Conjunto de dados alfanuméricos
• Podem ser letras (a ... z, A ... Z), números (0 ... 9),
espaço em branco ( ), e caracteres especiais (~; !;
?; #; $; %; @; &; etc.)
• SEMPRE deve estar delimitado por aspas duplas (“
”)
• Pode alocar de 1 a 255 bytes de memória
• Exemplos: “a”; “carro”; “5,67”; “Rua dos Alfeneiros,
nº 4”)
54
• Lógico
• Contém os valores booleanos VERDADEIRO ou
FALSO
• Como não representa ambos os valores ao mesmo
tempo, apenas um byte de memória é alocado
• Exemplos: 0 ou 1; V ou F; true ou false; sim ou não
55
• Usamos inteiro para:
• Quantidade de pessoas
• Idade
• Quantidade de objetos
• Número de uma casa
• Para que se faça a escolha adequada do tipo de
operador, é necessário entender bem o que seu programa
precisa.
• Usamos real para:
• O peso de uma pessoa
• O preço de um produto
• Um percentual
• Uma nota ou média
56
• Usamos caractere para:
• Um nome
• Um endereço
• Usamos lógico para:
• Identificar se alguém foi aprovado
• Identificar se uma condição é
verdadeira ou falsa
• Em linguagem C, os tipos mais comuns são:
• int: armazena valores numéricos inteiros
• char: armazena caracteres
• float: armazena números com ponto flutuante
(reais) com precisão simples
• double: armazena números com ponto flutuante,
com precisão dupla, ou seja normalmente possui o
dobro da capacidade de uma variável do tipo float
57
VARIÁVEIS E 
CONSTANTES
• Como já falamos, os dados são armazenados
nas células de memória do computador, e
enquanto um programa está sendo executado,
elas podem ou não mudar.
• Assim, os programas possuem variáveis e
constantes para armazenarem esses valores.
59
Variáveis 
60
Células de memória que são alocadas
para armazenar dados de qualquer tipo
Esses dados podem ser alterados
durante a execução do programa por
meio de comandos de atribuição ou
entrada de dados
• A variável pode receber diversos valores ao longo
da execução de um programa, mas só pode receber
um valor por vez.
• Quando um novo valor é atribuído à variável, o
anterior é substituído.
• A variável sempre recebe o mesmo tipo de dado, de
acordo com o que foi definido na criação do
programa.
• A linguagem C é “case sensitive”, isto é as letras
maiúsculas e minúsculas fazem diferença, pois sãos
tratadas como caracteres diferentes.
61
Sintaxe para criação de variável em 
C
62
<tipo><nome_da_variável>;
int contador;
float nota1, nota 2, media;
Pode-se declarar 
múltiplas 
variáveis do 
mesmo tipo 
juntas
Constantes 
63
Células de memória que são alocadas para
armazenar dados de qualquer tipo
Esses dados não podem ser alterados
durante a execução do programa
Sintaxe para criação de sintaxe em C
64
#define <nome_da_constante> <valor>
#define ICMS 0.18
#define ERRO "Erro!!!"
Recomenda-se 
deixar o nome da 
variável todo em 
maiúscula para 
facilitar sua 
identificação e 
diferenciá-la das 
variáveis
• Geralmente, variáveis e constantes são criadas
de acordo com algumas recomendações
básicas:
• Usar somente letras e números
• O primeiro caractere deve ser uma letra
• Não se pode usar caracteres especiais, apenas
underline _
65
• Na hora de criar nomes de variáveis e
constantes, também recomenda-se que elas
façam sentido no programa.
66
float media, nota1, nota2; float banana, uva, morango;
Exemplo de Código com Variável e 
Constante
#include <stdio.h>
#define PI 3.14
int main ()
{
float raio, area;
printf ("Valor do raio: ");
scanf ("%f", &raio);
area = PI * raio * raio;
printf ("\n Resultado: %0.2f", area);
return 0;
}
67
Declaração de Constante
Declaração de Variáveis
68
ENTRADA, ATRIBUIÇÃO E 
SAÍDA DE DADOS
• Como já falamos anteriormente, o
processamento de dados pode ser
representado da seguinte maneira:
70
Entrada Processamento Saída
• Entrada de dados
• São dados / informações enviados pelo usuário
para o computador
• Esses dados são armazenados nas variáveis
• A sintaxe para leitura de variáveis em
pseudocódigo é:
leia <variável>
• Em linguagem C usamos a função scanfpara ler
dados de entrada
71
• Processamento
• Durante o processamento dos dados, são
realizadas todas as tarefas de modificações nos
dados de entrada, preparação e geração de novos
dados
• Depois de processados, os dados são enviados
para a saída de dados
• A sintaxe para atribuição de variáveis em
pseudocódigo é:
<variável> <valor> * <expressão>
<variável> <variável> + <variável>
72
• Saída de dados
• São dados / informações enviados pelo computador
para o usuário
• Esses dados são tem como fonte as variáveis,
expressões ou constantes e em geral resultam do
processamento
• A sintaxe para leitura de variáveis em pseudocódigo é:
escreva <variável>
escreva <constante>
• Em linguagem C usamos a função printf para ler
dados de entrada
73
Exemplo: algoritmo para transformar uma velocidade 
fornecida em m/s pelo usuário para km/h. OBS: para isso, 
multiplicar a velocidade por 3,6
• Pseudocódigo
programa_km_hora
velocidade: real
início
escreva (“Digite a velocidade em m/s: “)
leia (velocidade)
velocidade velocidade * 3,6
escreva (“A velocidade em km/h é: “,
velocidade)
fim
• Linguagem C
#include <stdio.h>
#include <conio.h>
int main ()
{
float velocidade;
printf ("Digite a velocidade em m/s: ");
scanf ("%f", &velocidade);
velocidade = velocidade * 3.6;
printf ("\n Velocidade em km/h: %0.2f",
velocidade);
return 0;
}
74
75
Função SCANF()
76
Permite que um valor digitado pelo 
usuário no teclado seja lido e 
armazenado em uma variável
Sintaxe: cadeia de formatação + lista 
de argumentos, que são as variáveis 
para onde os dados serão enviados
scanf(“formatação”, arg1, arg2, ..., argn);
• A cadeia de formatação é composta pelos
especificadores de formato, que indicam a
quantidade e os tipos dos dados que serão
lidos pela função.
• Exemplo:
int idade, ano;
float nota;
char nome;
...
scanf (“%d, %f, %s, %d”, &idade, &nota, &nome, &ano);
77
• Repare que cada especificador de formato
corresponde a uma variável.
• O operador & é obrigatório, e é usado para
informar o endereço de memória de uma
determinada variável.
78
79
ESPECIFICADORES DE FORMATO
Especificador O que ele representa
%c Um caractere único
%o, %d, %x Um número inteiro octal, decimal ou 
hexadecimal
%ld Um número inteiro longo em base decimal
%f, %lf Um número real de precisão simples ou dupla
%s Uma cadeia de caracteres (string)
%% Um único sinal de porcentagem
Função PRINTF
80
Permite que informações sejam exibidas em tela 
para o usuário.
Sintaxe: cadeia de formatação + lista de 
argumentos. Aqui, os argumentos são os valores 
a serem exibidos, e não seu endereço de 
memória
printf(“formatação”, arg1, arg2, ..., argn);
• Na área destinada para formatação também é
possível exibir um texto fixo juntamente de
caracteres de controle, que causam alguns
efeitos na tela.
• Exemplo:
int idade, ano;
float nota;
char nome;
...
scanf (“%d, %f, %s, %d”, &idade, &nota, &nome, &ano)
printf (“\n O nome é: ”, nome, “ e a idade é: “, idade);
81
82
CARACTERES DE CONTROLE
Caractere O que ele representa
\a Soa um alarme do computador
\f Alimenta uma página na impressora
\n O cursor vai para a próxima linha. Equivalente a
um <ENTER>
\t O cursor avança para a próxima marca de
tabulação. Equivalente a um <TAB>
\” Exibe uma única aspa
\’ Exibe um único apóstrofe
\\ Exibe uma única barra
• Quando usamos o printf, é possível formatar a
informação que está sendo exibida para o
usuário.
• As formatações mais usadas são o
preenchimento com zeros à esquerda, para
números inteiros, e a especificação do
quantidade de casas decimais, para reais.
83
Exemplo
int var1;
float var2;
...
var1 = 345;
var2 = 1.299;
...
printf("|%5d| \n",var1);
printf("|%06d| \n",var1);
printf("|%7.3f| \n",var2);
printf("|%7.2f| \n",var2);
...
• A saída será:
| 345|
|000345|
| 1.346|
| 1.35|
84
85
OPERADORES
• Os operadores são muito usados na etapa de
processamento dos dados.
• É na fase de processamento que efetivamente
os dados são manipulados, as operações
necessárias são realizadas e as entradas são
transformadas em saídas.
87
• Muitas vezes, ao desenvolver algoritmos, é
comum utilizar expressões matemáticas para a
resolução de cálculos.
• Bastante comuns em cálculos matemáticos
onde são utilizados tarefas como comparações
e expressões, são necessários os operadores
para que possamos realizar algumas tarefas.
88
• Existem 3 tipos de operadores:
1. Aritméticos
2. Relacionais
3. Lógicos
• Uma expressão correta é aquela em que
variáveis e operadores são corretamente
associados. Isso depende muito do tipo de
dado que está sendo manipulado.
89
Operadores Aritméticos
• Quando precisamos fazer cálculos em um
algoritmo / programa, usamos os operadores
aritméticos.
90
Operadores Aritméticos
OPERADOR AÇÃO PRIORIDADE
EXEMPLOS
MATEMÁTICA ALGORITMO LINGUAGEM C RESULTADO
^
** Exponenciação 1 2
3 2 ^ 3
2 ** 3
Implementado pela
função pow, da
biblioteca math.h
8
* Multiplicação 2 2 . 3 2 * 3 2 * 3 6
/ Divisão 2 4 / 2 4 / 2 4 / 2 2
MOD
%
Resto da divisão 
(módulo) 2 10 / 3 10 MOD 3 10 % 3 2
+ Adição 3 4 + 1 4 + 1 4 + 1 5
- Subtração 3 4 – 1 4 – 1 4 – 1 3
• Nas linguagens de programação e, portanto,
nos exercícios de algoritmos, as expressões
matemáticas sempre obedecem às regras
matemáticas comuns:
• As expressões dentro de parênteses são sempre
resolvidas antes das expressões fora dos
parênteses.
92
• Quando existem vários níveis de parênteses, ou
seja, um parêntese dentro de outro, a solução
sempre inicia do parêntese mais interno até o mais
externo (“de dentro para fora”).
• Quando duas ou mais expressões tiverem a
mesma prioridade, a solução é sempre iniciada da
expressão mais à esquerda até a mais à direita
(“da esquerda para a direita”).
93
• Em algumas linguagens de programação é
comum que os operadores possuam pequenas
diferenças na sua forma de expressar, mas
normalmente são parecidos e fáceis de
interpretar.
94
Operadores Relacionais
• Um algoritmo / programa pode realizar
comparações entre valores de mesmo tipo, seja
constantes, variáveis ou resultados de expressões.
• Para isso, são usados os operadores relacionais.
• O resultado de uma operação usando operadores
relacionais sempre será do tipo lógico, ou seja,
verdadeiro ou falso.
95
Operadores Relacionais
96
OPERADOR AÇÃO EXEMPLO
Algoritmo Linguagem C Resultado
< Menor que 5 < 2 5 < 2 F ou 0
> Maior que 5 > 2 5 > 2 V ou 1
<= Menor ou igual a 5 <= 2 5 <= 2 F ou 0
>= Maior ou igual a 5 >= 2 5 >= 2 V ou 1
==
=
Igual 5 = 2 5 == 2 F ou 0
!=
<>
Diferente 5 <> 2 5 != 2 V ou 1
Operadores Relacionais - Exemplos
• Sabendo que A=3, B=7 e C=4, informe se as
expressões abaixo são verdadeiras ou falsas.
a) (A + C) > B
b) B > = (A + 2)
c) (B + A) <= C
d) (C + A) < C
e) C == (B – A)
97
FALSO
VERDADEIRO
FALSO
FALSO
VERDADEIRO
• A implementação a seguir, do site
http://linguagemc.com.br/ mostra esses
operadores em um programa.
98
http://linguagemc.com.br/
• Depois de ver essa implementação, façam a
implementação de vocês, mas dessa vez,
pedindo ao usuário que digite 2 números
inteiros, e em seguida, fazendo todas as
comparações possíveis com operadores
relacionais.
101
102
Operadores Lógicos
• Além destes operadores, temos ainda os
operadores lógicos, usados para muitas rotinas
de programação em softwares.
• Eles combinam resultados lógicos, gerando
novos valores lógicos (verdadeiro ou falso).
• São usados na análise de 2 ou mais condições,
de forma que uma decisão seja tomada.
103
Operadores Lógicos
104
OPERADOR AÇÃO PRIORIDADE
Não (not)
! Negação 1
E (and)
&& Conjunção 2
OU (or)
|| Disjunção 3
• Os resultados de uma operação lógica se dão
com base nas tabelas verdade.
• Para o operador && (E) o resultado será
verdadeiro caso todas as comparações sejam
verdadeiras.
105
A B A && B
0 0 0
0 1 0
1 0 0
1 1 1
• Usando o operador || (OU) o resultado será
verdadeiro bastando apenas uma das
comparações ser verdadeira.
106
A B A || B
0 0 0
0 1 1
1 0 1
1 1 1• O operador de negação ! (NÃO) é utilizado para
inverter o resultado de uma determinada
condição. Ou seja, se a condição for verdadeira
esta torna-se falsa, e se a condição for falsa ela
torna-se verdadeira.
107
A !A
0 1
1 0
• A seguir podemos ver uma tabela verdade com
todas as operações, e com algumas hipóteses.
108
Prioridade dos Operadores
• Como vimos, os operadores possuem suas
prioridades específicas.
• Quando parênteses são usados, eles alteram a
ordem de execução (executamos primeiro o
que está dentro dos parênteses) e podemos
usar quantos forem necessários.
109
• Caso uma expressão tenha operadores com a
mesma prioridade, o computador vai realiza-las
da esquerda para a direita.
• Quando uma expressão possui vários
parênteses, eles são avaliados e processados
dos mais internos para os mais externos.
110
• Ordem de prioridade:
1. Expressões dentro de parênteses
2. Operadores aritméticos e suas prioridades
3. Operadores relacionais
4. Operadores lógicos e suas prioridades
• Analise as operações a seguir. Qual o seu
resultado?
a) 10 – 4 * 2 + 1 =
b) (10 – 4) * (2 + 1) =
c) (10 – 4) * 2 + 1 =
d) 10 – 4 * (2 + 1) =
111
3
18
13
-2
ESTRUTURAS DE 
DECISÃO
Estruturas de Decisão
• Comandos de decisão ou desvio fazem parte das
técnicas de programação, para construir estruturas
de algoritmos que não são totalmente sequenciais.
• Com as instruções de desvio pode-se fazer com
que o algoritmo proceda de uma ou outra maneira,
de acordo com as decisões lógicas tomadas em
função dos dados ou resultados anteriores.
113
• Na teoria, temos 3 tipos de estrutura de decisão:
simples, composta e seleção encadeada.
• A seleção simples é quando temos uma condição
simples antes de executar uma ação.
• A seleção composta é quando temos situações em
que duas alternativas dependem de uma mesma
condição, uma onde a condição pode ser verdadeira e
outra onde a condição pode ser falsa.
• A seleção encadeada é quando necessitamos agrupar
várias seleções formando uma série de testes.
Normalmente utilizada quando existe um grande
conjunto de possibilidades ou combinações de
situações.
114
• As principais estruturas de decisão são:
• SE...ENTÃO (simples)
• SE...ENTÃO...SENÃO (composta)
• SE...ENTÃO...SENÃO (ENCADEADO)
(encadeada)
115
• if ...
• Executa algo somente quando uma condição é
verdadeira
• if... else
• Bifurca a execução do código em função de uma
condição
• if... else... if... else...
• Executa apenas o bloco em que a condição é
verdadeira
116
Estruturas de Decisão Simples
• Uma estrutura de decisão permite a escolha de
um bloco (grupo de ações) a ser executado
quando determinadas condições,
representadas por expressões lógicas ou
relacionais, são ou não satisfeitas.
• Quando se deseja testar uma condição antes
de executar uma ação, usa-se uma decisão
simples.
117
• Pseudocódigo:
se <condição> então
<instruções>
fim_se
• Linguagem C:
if (condição)
{
<instruções>;
}
118
Se a condição for verdadeira, vai 
executar as instruções, senão, encerra 
a estrutura SE e não executa nada
119
• Porque usar?
• Usada para decidir se um conjunto de ações
opcionais deve ser executado ou não, dependendo
do valor de algum dado ou de algum resultado que
já tenha sido calculado no algoritmo. O valor do
dado ou do resultado anterior será testado na
operação lógica.
120
• Executa o bloco de instruções somente se a
condição for verdadeira
• A condição é uma expressão booleana que
pode fazer uso de quaisquer operadores
• O bloco de instruções é delimitado por chaves
em linguagem C
• Se for apenas uma instrução não precisa das
chaves
121
Cálculo de média: 4 números tipo 
real
• Pseudocódigo
programa media
var n1, n2, n3, n4, media: real
início
leia (n1, n2, n3, n4)
media (n1+n2+n3+n4)/4
se media >= 7 então
escreva (“aluno aprovado com nota”,
media)
fim_se
fim
• Linguagem C
#include <stdio.h>
#include <conio.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "Portuguese");
float n1, n2, n3, n4, media;
printf ("Forneça as 4 notas: \n");
scanf ("%f %f %f %f", &n1, &n2, &n3, &n4);
media = (n1+n2+n3+n4)/4;
if (media >=7)
{
printf ("\naluno aprovado com nota: %.2f",media);
}
return 0;
}
122
if com 
instrução 
simples
123
Programa para somar dois números, 
se o usuário desejar
124
if com bloco 
de 
instruções
125
Estrutura de Decisão Composta
• Quando temos uma situação em que duas
alternativas dependem de uma mesma
condição, uma alternativa se a condição for
verdadeira e outra se a condição for falsa,
usamos a estrutura de decisão composta.
126
• Pseudocódigo:
se <condição> então
<instruções>
senão
<instruções>
fim_se
• Linguagem C:
if (condição)
{
<instruções>;
}
else
{
<instruções>;
}
127
Se a condição for verdadeira, vai executar 
um grupo de instruções, e se for falsa, vai 
executar as instruções da cláusula senão
128
• Porque Usar?
• Para decidir entre duas alternativas de ações. Um
dos dois conjuntos de ações será executado e o
outro não, dependendo do valor de algum dado ou
de algum resultado que já tenha sido calculado no
algoritmo. O valor do dado ou do resultado anterior
será testado na operação lógica, determinando
qual conjunto de ações será executado.
129
• Executa um ou o outro bloco de instruções em
função da condição ser verdadeira ou falsa
• Valem as mesmas regras para if...
• Qualquer combinação de instrução individual ou
em bloco é aceita no corpo do if ou do else
• Podem ser aninhados com outras estruturas
130
Cálculo de média: 4 números tipo 
real
• Pseudocódigo
programa media
var n1, n2, n3, n4, media: real
início
leia (n1, n2, n3, n4)
media (n1+n2+n3+n4)/4
se media >= 7 então
escreva (“aluno aprovado com nota”, media)
senão
escreva (“aluno reprovado com nota”, media)
fim_se
fim
• Linguagem C
(...)
int main()
{
setlocale(LC_ALL, "Portuguese");
float n1, n2, n3, n4, media;
printf ("Forneça as 4 notas: \n");
scanf ("%f %f %f %f", &n1, &n2, &n3, &n4);
media = (n1+n2+n3+n4)/4;
if (media >=7)
{
printf ("\naluno aprovado com nota: %.2f",media);
}
else
{
printf ("\naluno reprovado com nota: %.2f",media);
}
return 0;
}
131
132
Estrutura de Decisão Encadeada
• Em algumas situações, temos que agrupar
várias decisões
• Isso recebe o nome de decisão encadeada ou
decisão aninhada.
• Apenas o bloco no qual a condição é
verdadeira é executado
133
• Podemos ter quantos if... else forem
necessários
• É possível adicionar um else ao final de tudo
• Nesse caso, se nenhuma condição for verdadeira,
o bloco do else será executado
134
• Pseudocódigo:
Programa MaiorNumero;
Var
N1,N2: Inteiro;
Inicio
Escreva("Digite o primeiro número: ");
Leia(N1);
Escreva("Digite o segundo número: ");
Leia(N2);
Se (N1 == N2) então
Escreva ("Os números são iguais”);
Senão
Se (N1 > N2) então
Escreva("O maior valor é = ",N1);
Senão
Escreva("O maior valor é = ",N2);
Fim.
• Linguagem C:
(...)
int main()
{
setlocale(LC_ALL, "Portuguese");
int N1, N2 ;
printf("Digite o primeiro numero: ");
scanf("%d", &N1);
printf("Digite o segundo numero: ");
scanf("%d", &N2);
if (N1 == N2)
printf("Os numeros sao iguais!");
else
if (N1 > N2)
printf("O maior valor e = %d", N1);
else
printf("O maior valor e = %d", N2);
return (0);
}
135
136
137
Uso do if com operadores lógicos
• Junto com as estruturas de decisão, pode-se usar
os operadores lógicos para podermos ampliar a
avaliação das condições que são testadas.
• Por exemplo, se quiséssemos avaliar duas
condições ao mesmo tempo no comando if e
imprimir algo na tela do usuário não teríamos como
fazer isto de forma prática sem os operadores
lógicos.
138
• Lembrando:
• And (&&): operador que une duas condições e
retorna verdadeiro quando as duas forem
verdadeiras
• Or (||): operador que une duas condições e retorna
verdadeiro quando pelo menos uma condição for
verdadeira
• Not (!): inverte o resultado de uma expressão lógica
139
• Podemos combinar estes operadores em um
programa com as estruturas de decisão que
acabamosde ver
• O resultado serão programas capazes de
avaliar várias condições simultaneamente.
140
ESTRUTURA DE 
SELEÇÃO
Estrutura de Seleção
• Estrutura que permite que seja executado um
único conjunto de instruções entre vários, de
acordo com o valor de um objeto.
• Substitui a ocorrência de vários SE-ENTÃO-
SENÃO
• Não aceita expressões, apenas constantes
142
• Pseudocódigo
Caso <variável>
seja <valor 1> faça <instrução 1>
seja <valor 2> faça <instrução 2>
seja <valor 3> faça <instrução 3>
Senão
<instrução>
Fim_caso
143
Variável a ser controlada
Valores possíveis na variável
Instruções a serem 
executadas quando o valor 
atender a variável
Instruções a serem executadas caso nenhum 
valor seja igual a variável de comparação
• Linguagem C
switch (<variável>)
{
case <valor1>:
<instrução 1>;
break;
case <valor2>:
<instrução 2>;
break;
case <valor3>:
<instrução 3>;
break;
default:
<instrução>;
break;
}
144
•Usada para:
•Escolher apenas um conjunto de ações
dentre vários alternativos.
•Aqui o teste não é mais uma operação
lógica: o próprio valor de algum dado ou
resultado anterior (que pode ser de outros
tipos além do lógico) é que vai determinar
qual desses conjuntos de ações será
executado.
145
146
• A opção default é opcional, não obrigatória, e
pode aparecer em qualquer local do switch, não
obrigatoriamente no final, embora usemos
sempre no fim a título de organização
• O comando break não faz parte do comando
switch, embora sejam usados em conjunto.
147
• Se você tiver 2 cases que não são separados
por um comando break, dizemos que o controle
"vaza" de um case para o outro, ou seja,
quando o primeiro case é selecionado para
execução, não apenas o comando associado a
ele é executado, mas também o comando
associado ao segundo.
148
• Se você tiver mais de um case com a mesma
ação, pode colocá-los juntos:
Switch
case 0:
case 2:
case 4:
printf("\nPar");
break;
149
Exemplo: digitar um dia da semana e 
escrever na tela que dia da semana é
150
151
ESTRUTURAS DE 
REPETIÇÃO
Estruturas de Controle e Repetição
• Estruturas de controle e repetição são utilizadas
quando desejamos criar blocos controlados em
nossos programas.
• As estruturas de repetição (também conhecidas
como loop) são necessárias quando se tem que
repetir uma determinada instrução, que
represente um comportamento padrão, várias
vezes
153
• Com essas estruturas, escreve-se a instrução
uma única vez e ela pode ser executada várias
vezes.
• Repetições podem ser controladas por:
• Condição
• Contador
154
• Quando o controle é por contador, a interrupção
é prevista no instante em que é iniciada a
execução da estrutura de controle de
repetições.
• Quando o controle é por condição, deverá
haver uma expressão lógica, e a interrupção
será controlada por meio do resultado dessa
expressão.
• É imprescindível que haja uma instrução dentro do
bloco de instruções que permita a alteração do
valor lógico da condição
155
• Algumas dessas estruturas são de Controle e
Repetição, como While e For. Elas são
estruturas que criam blocos em laço, ou seja,
em loopings no programa.
• Já estruturas If e o Switch (que vimos nas aulas
anteriores) são apenas blocos condicionais sem
looping.
156
ESTRUTURA FOR (PARA)
• O For é uma estrutura de repetição que usamos
quando queremos definir o número de vezes
em que um bloco será repetido.
• Usamos o for com um contador, que permite
executar uma ou mais instruções por um
determinado número de vezes.
158
• Para controlar o número de repetições,
empregamos uma variável do tipo numérico
inteiro
• Comumente, um loop For possui uma parte
inicial com o contador, seguida por uma
condição, que determina o limite do laço e
depois a parte final com o incremento ou
decremento das variáveis do laço.
159
• Ao encontrar a instrução FOR, é atribuído à
variável o valor de início declarado.
• A partir daí, a sequência de comandos é
executada repetidamente, até que a variável
atinja o valor de fim.
• A cada vez que a sequência de comandos é
executada, a variável é incrementada
automaticamente.
160
• Essa estrutura só pode ser utilizada em
repetições controladas por um contador.
• Isto é, aquelas repetições que sabemos o
número de vezes que acontecerá quando
iniciamos sua execução.
• Trata-se de um loop com número de iterações
pré-definido.
161
162
• Pseudocódigo
Para (valor inicial até condição_final passo n)faça
Inicio
Instruções;
Fim;
• Onde:
• valor_inicial é uma instrução de atribuição do valor
inicial do laço para a variável de controle.
• condição final é uma condição que controla o laço.
• passo é o incremento do laço.
163
Condições do For
164
Muito útil quando se sabe de antemão
quantas vezes a repetição deverá ser
executada
Este laço utiliza uma variável para controlar
a contagem do loop, bem como seu
incremento
A própria estrutura faz a inicialização,
incremento e encerramento do laço
For em Linguagem C
for(valor_inicial; condição_final; valor_incremento)
{
instruções;
}
165
#include <stdio.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "Portuguese");
int contador;
for(contador = 1; contador <= 10; contador++)
{
printf("%d ", contador);
}
return(0);
}
166
contador foi inicializado com 
um valor determinado
testamos se a condição que 
envolve o contador é 
verdadeira
em caso afirmativo, a 
repetição continua; caso 
contrário, ela será encerrada
A cada nova repetição a 
variável do contador é 
incrementada
167
• Em certos casos, ao invés de incrementar,
podemos decrementar a variável de controle e
construir um laço com contagem decrescente.
• Para tanto, devemos inicializar a variável de
controle com um valor adequado e construir a
condição necessária para que o laço seja
finalizado.
168
169
ESTRUTURA WHILE 
(ENQUANTO)
• É uma estrutura de repetição com condição que
permite executar uma ou mais instruções um
determinado número de vezes.
• O bloco será executado enquanto o resultado
da <expressão lógica> for verdadeiro.
171
• Se já da primeira vez o resultado for falso, os
comandos não são executados nenhuma vez.
• Portanto, a quantidade de repetições é
indeterminada nessa estrutura.
• Permite executar diversas vezes um trecho do
algoritmo, porém, sempre verificando antes de
cada execução se é permitido executar o
trecho.
172
• O fluxo nesse comando é o seguinte:
• A primeira vez que se chega ao comando de
repetição, é feito o teste da <expressão lógica>,
que determina se deve ou não entrar no bloco.
• Se entrar, ao final do bloco volta-se para a primeira
linha do bloco e então testa-se novamente a
<expressão lógica>.
173
• Esta estrutura de repetição é também chamada
de loop pré testado, pois a expressão booleana
é verificada antes da primeira execução.
• Como já foi dito, se inicialmente ela já resultar
em FALSO, as instruções que estão dentro do
bloco não são executadas nenhuma vez.
174
• Quando utilizar?
• Quando não há necessidade de inicializar ou
atualizar variáveis contadoras.
• Quando as etapas de inicialização ou atualização
requerem muitas instruções e não caberiam
elegantemente numa única linha do for.
• Quando as informações necessárias para avaliar a
condição não dependem de uma variável
contadora ou são obtidas durante a execução do
bloco.
175
• É uma estrutura de repetição que inicia seu
bloco com uma condição.
• Caso a condição seja satisfeita (seja
verdadeira), o bloco inteiro será executado,
caso contrário, o bloco será desconsiderado e o
fluxo normal do programa será desviado para o
final do bloco.
• A estrutura While é a estrutura Enquanto,
utilizada em algoritmos com o Português-
Estruturado.
177
• Pseudocódigo
iniciar a variável de controle
enquanto <expressão lógica>
faça
<instrução 1>
<instrução 2>
<instrução n>
Atualizar a variável de controle;
fim_enquanto
178
Lembre-se: em uma 
<expressão lógica>, o 
resultado deve ser 
verdadeiro ou falso
Condições do While
179
Variável de controle é aquelaque é testada na condição
Para que seja possível fazer o teste, a variável de controle deve ter sido inicializada 
previamente
O teste da condição ocorre no início do laço
Enquanto a condição permanecer verdadeira, as instruções são executadas
Quando a condição se tornar falsa, o processamento será desviado para fora do laço
Caso a condição seja falsa logo no início, as instruções do laço são ignoradas
While em Liguagem C
while (condição)
{
Instrução ou bloco de instruções;
}
180
#include <stdio.h>
int main(void)
{
int contador = 1;
while (contador <= 10)
{
printf("%d ", contador);
contador++;
}
return 0;
}
181
variável de controle denominada 
contador foi declarada e 
inicializada com o valor 1
teste da condição while é 
realizado
como o contador é menor que 
10, então a condição é 
verdadeira
Como a condição é verdadeira, o 
programa entra dentro do corpo do 
laço e executa o printf, exibindo o 
valor da variável contador
Após executar o comando 
printf, o contador é 
incrementadoDepois do incremento, a condição é testada novamente e 
enquanto for verdadeira, os comandos são executados de 
novo, até que a condição se torne falsa. A condição falsa 
faz com que o laço seja encerrado
182
ESTRUTURA DO... WHILE
• Essa estrutura de repetição, garante que o
bloco de instruções seja executado no mínimo
uma vez, já que a condição que controla o laço
é testada apenas no final do comando.
• A diferença entre o comando while e o
do…while é justamente o local onde a condição
que controla o laço é testada.
184
• No comando while a condição é testada antes
do bloco de instruções, e caso a condição seja
falsa a repetição não será executada.
• No do…while o bloco de comandos é
executado pelo menos uma vez de forma
obrigatória, independente do resultado da
expressão lógica
185
• O fluxo nesse comando é:
• A primeira vez que se chega ao comando de
repetição, entra-se no bloco
• Ao final do bloco, testa-se a condição e volta para a
primeira linha do bloco se a condição for falsa
• O bloco será executado sempre que o resultado da
<expressão lógica> for verdadeiro
• No momento em que se tornar falso a ação
subsequente ao comando “até que” será
executada.
186
• Pseudocódigo
faça
<instrução 1>
<instrução 2>
<instrução n>
enquanto <expressão lógica>
188
Lembre-se: em uma 
<expressão lógica>, o 
resultado deve ser 
verdadeiro ou falso
#include <stdio.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL,
"Portuguese");
float nota1=0,nota2=0,media=0;
int cont;
do
{
printf("\nDigite a primeira nota:
");
scanf("%f",&nota1);
printf("Digite a segunda nota:
");
scanf("%f",&nota2);
media = (nota1 + nota2)/2;
printf("Media do aluno =
%f\n\n",media);
printf("Digite 1 para continuar
ou 2 para sair: ");
scanf("%d", &cont);
}while (cont==1);
return 0;
}
189
190
Comparação entre as Estruturas de Repetição
191
VETOR
• Quando precisamos armazenar uma
quantidade de informações e acessá-las
posteriormente, não é possível apenas com
estruturas de repetição.
• Os vetores possuem uma característica
bastante interessante, pois podem armazenar
uma grande quantidade de informação dentro
de uma única variável.
193
• Os vetores nada mais são do que matrizes
unidimensionais, é uma estrutura de dados
muito utilizada na programação.
• Quando trabalhamos com vetores (assim como
matrizes), todos os elementos devem ser do
mesmo tipo.
• Vetores são objetos mutáveis, isto é, podem ser
alterados na memória.
194
• O vetor é uma variável que possui vários
elementos internos, sendo acessados através
de seu índice para poderem ser utilizados.
• O índice é um valor numérico inteiro e positivo
e corresponde ao endereço de alocação de
uma unidade do vetor, ou seja, o índice é um
número que identifica de qual posição dentro do
vetor estamos falando.
195
• Quando se trabalha com vetores, é importante
se atentar ao fato de que estamos trabalhando
com uma quantidade grande de elementos, que
só poderão ser acessados na íntegra com as
funções apropriadas para vetores.
196
• Nos referimos a cada posição do vetor usando
seu nome, seguido de seu índice, delimitado
pelos caracteres de colchetes [ ]
• Quando trabalhamos com linguagem C, os
índices de um vetor vão de 0 até n-1, onde n é
a quantidade total de posições do vetor.
197
• Para se declarar um vetor podemos utilizar a
seguinte forma geral:
tipo_do_vetor nome_do_vetor [tamanho];
float vet_exemplo [8];
• Quando a linguagem C, vê uma declaração
como esta, ele reserva um espaço na memória
suficientemente grande para armazenar o
número de células especificadas em tamanho.
198
• Então, quando tivermos :
vet_exemplo[2];
• O vetor vai retornar o valor do índice 2, que
representa o terceiro item do mesmo
199
• Para acessar as posições desse vetor, vamos
escrever:
vet_exemplo[0];
vet_exemplo[1];
vet_exemplo[2];
vet_exemplo[3];
vet_exemplo[4];
vet_exemplo[5];
vet_exemplo[6];
vet_exemplo[7];
200
• Mas durante a programação, você pode colocar
vet_exemplo [24] por exemplo...
• A linguagem C não verifica se o índice que você
usou está dentro dos limites válidos. Este é um
cuidado que o desenvolvedor deve ter.
201
• Para atribuirmos valores ao nosso vetor,
devemos usar seu nome, a posição dentro dos
colchetes, o símbolo de igual, e o valor a ser
atribuído:
vet_exemplo [0] = 1;
vet_exemplo [1] = 5;
vet_exemplo [2] = vet_exemplo [0] + vet_exemplo [1];
vet_exemplo [3] = vet_exemplo [2] - 4;
202
• A forma mais comum de se entrar com dados
em vetores é usando o laço de repetição for:
...
for (i = 0; i <= 7; i++)
{
scanf (“%d”, &vet_exemplo [i]);
...
}
...
203
Exemplo 1
• Vamos fazer um programa que leia 5 notas de
alunos, mostre as 5 notas, calcule e mostre a
média
204
205
206
Exemplo 2
• Fazer um programa com 2 vetores com 5 valores reais
cada, previamente definidos, em que um terceiro vetor
é criado a partir da média entre os dois primeiros
vetores (média entre a posição 0 do primeiro com a
posição 0 do segundo; média entre a posição 1 do
primeiro e a posição 1 do segundo, e assim
sucessivamente). A seguir, fazer a média dos valores
contidos no terceiro vetor. Apresentar ao usuário os
valores contidos no terceiro vetor e sua média.
• Vetor 1: 33, 21, 45, 13, 3
• Vetor 2: 8, 4, 16, 28, 12
207
208
209
Exemplo 3
• Considerando um vetor que possa armazenar 5
valores inteiros, faça um programa em C que:
• Crie esse vetor
• Peça ao usuário para digitar os valores
• Armazene os valores no vetor
• Exiba os valores de acordo com o índice do vetor
em ordem crescente
• Exiba os valores de acordo com o índice do vetor
em ordem decrescente
210
211
212
SUB-ROTINAS
• Muitos problemas grandes e de solução
complexa geram problemas complexos, e
podem ser divididos em problemas menores e
com lógica mais simples e de compreensão
mais fácil, tornando a tarefa de
desenvolvimento e manutenção menos
desgastantes.
• Em vez de escrever um algoritmo grande,
podemos dividir o mesmo em vários algoritmos
menores.
214
• Chamamos essas divisões de sub-rotinas,
sendo que cada uma é, na verdade, um
programa, que por sua vez pode ser dividido
em outros tantos quanto forem necessários.
• Essas sub-rotinas podem ter variáveis próprias
ou usar as variáveis declaradas no programa
principal.
215
• De acordo com o contexto em que esta
inserida, uma variável pode ser considerada
uma variável local ou uma variável global.
216
217
• No contexto de programação, podemos definir
uma sub-rotina como sendo uma porção de
código que pode receber argumentos de
entrada (parâmetros), realizar procedimentos
específicos e retornar (ou não) um valor.
• A porção de código que define uma sub-rotina
possui um certo isolamento em relação ao
restante do código, e pode ser chamada um
número arbitrário de vezes em um programa.
218
• De maneira geral, uma sub-rotina é um
estrutura para agrupar um conjunto de
instruções que podem ser reutilizadas.
219
• Vantagens:
• Diferentespartes do algoritmo podem ser
independentes, de forma que possam ser escritas
e testadas separadamente
• Sub-rotinas podem ser escritas de forma a serem
reutilizadas em diferentes partes do algoritmo
• Algoritmos complexos podem ser elaborados a
partir de unidades menores já prontas
• Garante maior legibilidade
• Facilitam a manutenção e a correção de erros
220
221
222
Sub-rotinas são conhecidas 
por diversos nomes em 
linguagens de programação 
como funções, rotinas, 
procedimentos, métodos e 
subprogramas.
FUNÇÕES
• Existem, na maioria das linguagens de
programação, dois tipos de sub-rotinas: as que
não devolvem valor e as que devolvem valor.
• Em linguagem C, as sub-rotinas são chamadas
de função.
224
• Funções que não devolvem valor:
• Conjunto de comandos aos quais foi dado um
nome específico
• Nesse caso, separa-se um bloco de comandos
com o intuito de realizar alguma operação
• Funções que devolvem valor:
• Conjunto de comandos aos quais foi dado um
nome específico
• Nesse caso, separa-se um bloco de comandos
com o intuito de realizar alguma operação e
retornar um valor.
225
• A maioria das linguagens de programação
possui algumas funções pré-definidas,
facilitando o trabalho de todos os
programadores.
• A linguagem C é uma linguagem procedural, ou
seja, é baseada em funções (procedimentos).
• Todo programa escrito em linguagem C precisa
ter, no mínimo, a função main ()
226
• O uso dos parênteses após o nome da função é
o que efetivamente faz a mesma ser chamada
a executar seu procedimento.
• Dentro do parênteses, passamos os
argumentos de entrada para a função.
• Uma determinada função pode ser chamada a
qualquer hora durante a execução de um
programa a partir de outras funções ou por si
mesma.
227
Sintaxe de uma Função em C
<tipo de dado> <identificador da função>
(<parâmetros>)
{
<instruções>
}
228
Escopo de Variáveis
• Por escopo de uma variável entende-se o bloco
de código onde esta variável é válida.
229
• As variáveis valem no bloco que são definidas.
• As variáveis definidas dentro de uma função
recebem o nome de variáveis locais.
• As variáveis definidas fora de qualquer função
(no começo, com a importação das bibliotecas),
são chamadas de variáveis globais.
• Uma variável definida dentro de uma função
não é acessível em outras funções, MESMO
QUE ESTAS VARIÁVEIS TENHAM NOMES
IDÊNTICOS
230
Função que não devolve valor
• O objetivo de se declarar uma função é
associá-la a um identificador para que a mesma
possa ser “chamada” por um comando em
outra função.
231
• Quando uma função que não devolve valor é
criada, devemos usar o void no <tipo de dado>
do cabeçalho da função.
232
• A chamada, ou ativação, da função que não
devolve valor é feita referenciando-se seu
nome, seguido de abre e fecha parênteses, no
local do programa onde a mesma deve ser
ativada.
• Ao terminar a execução dos comandos da
função, a sequencia do programa retorna
sempre à instrução seguinte que provocou sua
chamada.
233
Exemplo de função que não devolve 
valor
234
Exemplo de função que não devolve 
valor
• Cálculo da soma de dois números utilizando o
conceito de função que não devolve valor.
235
236
237
Função que devolve valor
• Distingue-se da função que não devolve valor pela
característica de retornar um valor.
• O objetivo de se declarar uma função que devolve valor é
associá-la a um identificador para que a mesma possa ser
ativada em uma expressão em uma outra função.
238
• Funções desse tipo devem ser chamadas
dentro de expressões:
x = função ();
239
Exemplo de função que não devolve 
valor
240
Exemplo de função que devolve 
valor
• Cálculo da soma de dois números utilizando o
conceito de função que devolve valor.
241
242
243
Localização da Função
• A princípio podemos tomar como regra a seguinte
afirmativa toda função deve ser declarada antes de
ser usada.
• Alguns programadores preferem que o início do
programa seja a primeira parte de seu programa.
244
• Para isto a linguagem C permite que
se declare uma função, antes de defini-la.
• Esta declaração é feita através do protótipo da
função, que nada mais é que o trecho de
código que especifica o nome e os parâmetros
da função.
245
246
Passagem de Parâmetros
• Algumas vezes, temos que enviar valores do
programa principal para uma função. Esses
valores são chamados de parâmetros.
247
• O parâmetro pode ser real ou formal:
• Parâmetro real: variáveis, expressões ou valores
usados na chamada da função, também chamado
de argumento;
• Parâmetro formal: identificadores usados no
cabeçalho da função, também chamados de
parâmetros apenas.
• Existem dois tipos de passagem de parâmetros:
• Passagem por valor
• Passagem por referência
248
Passagem de Parâmetro por Valor
• Na passagem por valor, o que é passado para a
função é o valor da variável usada como parâmetro
real.
• A função copia o valor do parâmetro real para a
variável declarada como parâmetro formal.
249
• Qualquer alteração no conteúdo de um
parâmetro formal, dentro de uma função, não
será refletido no parâmetro real.
• Um parâmetro formal é considerado uma
variável local, deixando de existir ao término da
função.
250
251
252
Exemplo de Passagem de Parâmetro 
por Valor
253
Exemplo de Passagem de Parâmetro 
por Valor
254
Exemplo de Passagem de Parâmetro 
por Valor
255
Passagem de Parâmetro por 
Referência
• Na passagem por referência, o que é passado para a
função não é o valor de uma variável, mas o seu
endereço.
• Lembre-se que uma variável é uma entidade que
possui um endereço de memória e um valor
armazenado.
256
• A função faz com que a variável do parâmetro
formal passe a ter o mesmo endereço da variável
do parâmetro real.
• A alteração no conteúdo de um parâmetro formal,
dentro de uma função, reflete no parâmetro real, ou
seja, as alterações feitas dentro da função tem
efeito direto nas variáveis passadas como
argumentos na chamada.
• Isto proporciona a oportunidade de retornar vários
valores em uma única função já que as alterações
ocorrem diretamente nas variáveis.
257
Exemplo de Passagem de Parâmetro 
por Referência
258
Exemplo de Passagem de Parâmetro 
por Referência
259
	Número do slide 1
	LÓGICA E ALGORITMOS
	Número do slide 3
	Número do slide 4
	Número do slide 5
	PROGRAMAS E LINGUAGENS DE PROGRAMAÇÃO
	Linguagem de Programação
	Linguagens de Baixo Nível
	Linguagens de Alto Nível
	Número do slide 10
	Programa de Computador (Software)
	Número do slide 12
	Número do slide 13
	Número do slide 14
	Número do slide 15
	Número do slide 16
	LÓGICA DE PROGRAMAÇÃO
	O que é Lógica
	Lógica de Programação
	Sequência Lógica
	Instruções
	Número do slide 22
	Algoritmo
	Número do slide 24
	Número do slide 25
	Número do slide 26
	Exemplos de Algoritmos
	Número do slide 28
	Número do slide 29
	Número do slide 30
	FORMAS DE REPRESENTAÇÃO DA LÓGICA DE PROGRAMAÇÃO
	Representação de Algoritmos
	Número do slide 33
	Descrição Narrativa
	Número do slide 35
	Fluxograma
	Número do slide 37
	Símbolos Básicos
	Pseudocódigo
	Número do slide 40
	Número do slide 41
	Exemplo - algoritmo que faz a soma de dois números inteiros quaisquer� 
	Número do slide 43
	Número do slide 44
	Número do slide 45
	Número do slide 46
	TIPOS DE DADOS
	Número do slide 48
	Número do slide 49
	Número do slide 50
	Número do slide 51
	Número do slide 52
	Número do slide 53
	Número do slide 54
	Número do slide 55
	Para que se faça a escolha adequada do tipo de operador, é necessário entender bem o que seu programa precisa.
	Número do slide 57
	VARIÁVEIS E CONSTANTES
	Número do slide 59
	Variáveis 
	Número do slide 61
	Sintaxe para criação de variável em C
	Constantes 
	Sintaxe para criação de sintaxe em C
	Número do slide 65
	Número do slide 66
	Exemplo de Código com Variável e Constante
	Número do slide 68
	ENTRADA, ATRIBUIÇÃO E SAÍDA DE DADOS
	Número do slide 70
	Número do slide 71
	Número do slide 72
	Número do slide 73
	Exemplo: algoritmo para transformar umavelocidade fornecida em m/s pelo usuário para km/h. OBS: para isso, multiplicar a velocidade por 3,6
	Número do slide 75
	Função SCANF()
	Número do slide 77
	Número do slide 78
	Número do slide 79
	Função PRINTF
	Número do slide 81
	Número do slide 82
	Número do slide 83
	Exemplo
	Número do slide 85
	OPERADORES
	Número do slide 87
	Número do slide 88
	Número do slide 89
	Operadores Aritméticos
	Operadores Aritméticos
	Número do slide 92
	Número do slide 93
	Número do slide 94
	Operadores Relacionais
	Operadores Relacionais
	Operadores Relacionais - Exemplos
	Número do slide 98
	Número do slide 99
	Número do slide 100
	Número do slide 101
	Número do slide 102
	Operadores Lógicos
	Operadores Lógicos
	Número do slide 105
	Número do slide 106
	Número do slide 107
	Número do slide 108
	Prioridade dos Operadores
	Número do slide 110
	Número do slide 111
	ESTRUTURAS DE DECISÃO
	Estruturas de Decisão
	Número do slide 114
	Número do slide 115
	Número do slide 116
	Estruturas de Decisão Simples
	Número do slide 118
	Número do slide 119
	Número do slide 120
	Número do slide 121
	Cálculo de média: 4 números tipo real
	Número do slide 123
	Programa para somar dois números, se o usuário desejar
	Número do slide 125
	Estrutura de Decisão Composta
	Número do slide 127
	Número do slide 128
	Número do slide 129
	Número do slide 130
	Cálculo de média: 4 números tipo real
	Número do slide 132
	Estrutura de Decisão Encadeada
	Número do slide 134
	Número do slide 135
	Número do slide 136
	Número do slide 137
	Uso do if com operadores lógicos
	Número do slide 139
	Número do slide 140
	ESTRUTURA DE SELEÇÃO
	Estrutura de Seleção
	Número do slide 143
	Número do slide 144
	Número do slide 145
	Número do slide 146
	Número do slide 147
	Número do slide 148
	Número do slide 149
	Exemplo: digitar um dia da semana e escrever na tela que dia da semana é
	Número do slide 151
	ESTRUTURAS DE REPETIÇÃO
	Estruturas de Controle e Repetição
	Número do slide 154
	Número do slide 155
	Número do slide 156
	ESTRUTURA FOR (PARA)
	Número do slide 158
	Número do slide 159
	Número do slide 160
	Número do slide 161
	Número do slide 162
	Número do slide 163
	Condições do For
	For em Linguagem C
	Número do slide 166
	Número do slide 167
	Número do slide 168
	Número do slide 169
	ESTRUTURA WHILE (ENQUANTO)
	Número do slide 171
	Número do slide 172
	Número do slide 173
	Número do slide 174
	Número do slide 175
	Número do slide 176
	Número do slide 177
	Número do slide 178
	Condições do While
	While em Liguagem C
	Número do slide 181
	Número do slide 182
	ESTRUTURA DO... WHILE
	Número do slide 184
	Número do slide 185
	Número do slide 186
	Número do slide 187
	Número do slide 188
	Número do slide 189
	Número do slide 190
	Comparação entre as Estruturas de Repetição
	VETOR
	Número do slide 193
	Número do slide 194
	Número do slide 195
	Número do slide 196
	Número do slide 197
	Número do slide 198
	Número do slide 199
	Número do slide 200
	Número do slide 201
	Número do slide 202
	Número do slide 203
	Exemplo 1
	Número do slide 205
	Número do slide 206
	Exemplo 2
	Número do slide 208
	Número do slide 209
	Exemplo 3
	Número do slide 211
	Número do slide 212
	SUB-ROTINAS
	Número do slide 214
	Número do slide 215
	Número do slide 216
	Número do slide 217
	Número do slide 218
	Número do slide 219
	Número do slide 220
	Número do slide 221
	Número do slide 222
	FUNÇÕES
	Número do slide 224
	Número do slide 225
	Número do slide 226
	Número do slide 227
	Sintaxe de uma Função em C
	Escopo de Variáveis
	Número do slide 230
	Função que não devolve valor
	Número do slide 232
	Número do slide 233
	Exemplo de função que não devolve valor
	Exemplo de função que não devolve valor
	Número do slide 236
	Número do slide 237
	Função que devolve valor
	Número do slide 239
	Exemplo de função que não devolve valor
	Exemplo de função que devolve valor
	Número do slide 242
	Número do slide 243
	Localização da Função
	Número do slide 245
	Número do slide 246
	Passagem de Parâmetros
	Número do slide 248
	Passagem de Parâmetro por Valor
	Número do slide 250
	Número do slide 251
	Número do slide 252
	Exemplo de Passagem de Parâmetro por Valor
	Exemplo de Passagem de Parâmetro por Valor
	Exemplo de Passagem de Parâmetro por Valor
	Passagem de Parâmetro por Referência
	Número do slide 257
	Exemplo de Passagem de Parâmetro por Referência
	Exemplo de Passagem de Parâmetro por Referência

Continue navegando