Escolar Documentos
Profissional Documentos
Cultura Documentos
de
Programação
Prof.
Alexandre
Mignon
(amignon@uninove.br)
1
Introdução
à
Lógica
de
Programação
2
Introdução
à
Lógica
de
Programação
• Um
computador
é
uma
ferramenta
para
solucionar
problemas
que
envolvam
a
manipulação
de
informações.
– Dois
Ipos
básicos:
dados
e
instruções
• Um
programa
de
computador
é
uma
sequência
de
ações
(instruções)
inseridas
na
máquina
que
permite
ao
computador
realizar
determinadas
tarefas.
3
Introdução
à
Lógica
de
Programação
• Lógica
é
a
técnica
de
encadear
pensamentos
para
aIngir
determinado
objeIvo.
• Seqüência
Lógica
são
passos
executados
até
aIngir
um
objeIvo
ou
solução
de
um
problema.
• Instruções
são
um
conjunto
de
regras
ou
normas
definidas
para
a
realização
ou
emprego
de
algo.
Em
informáIca,
é
o
que
indica
a
um
computador
uma
ação
elementar
a
executar.
4
Introdução
à
Lógica
de
Programação
• A
Lógica
de
Programação
é
a
fase
de,
a
parIr
de
um
problema,
formular
soluções
que
gerem
um
programa
de
computador.
• Programar
é
basicamente
construir
algoritmos.
• Programas
são
algoritmos
escritos
em
uma
linguagem
de
programação
(C,
Pascal,
Java,
etc.)
e
que
são
interpretados
e
executados
por
uma
máquina.
5
Algoritmo
6
Algoritmo
-‐
Exemplo
• Algoritmo
para
reIrar
a
devolução
do
imposto
de
renda:
INÍCIO
1. Sair
de
casa
2. Ir
ao
banco
3. Dirigir-‐se
ao
balcão
4. Já
chegou
a
devolução
do
imposto
de
renda?
5. Sim:
Vá
para
o
passo
11
6. Não:
Voltar
para
casa
7. Esperar
um
dia
8. É
sábado,
domingo
ou
feriado?
9. Sim:
Vá
para
o
passo
7
10. Não:
Vá
para
o
passo
1
11. ReIrar
o
dinheiro
12. Voltar
para
casa
FIM
7
Fases
para
Montar
um
Algoritmo
• Para
montar
um
algoritmo,
é
necessário
dividir
o
problema
apresentado
em
três
fases
fundamentais:
9
Organização
Básica
de
um
Computador
• Um
computador
é
consItuído
de
quatro
unidades
básicas:
unidade
de
entrada,
unidade
de
saída,
unidade
de
processamento
central
e
memória.
• Unidade
de
entrada
é
um
disposiIvo
que
permite
que
o
usuário
interaja
com
um
computador,
fornecendo-‐lhe
dados
e
informações.
Por
exemplo,
teclado
e
mouse.
10
Organização
Básica
de
um
Computador
• Unidade
de
saída
serve
para
que
sejam
fornecidos
ao
usuário
do
computador
os
resultados
do
processamento
realizado.
Por
exemplo,
monitor
de
vídeo
e
impressora.
• Unidade
Central
de
Processamento
(CPU
–
Central
Processing
Unit)
é
responsável
por
todo
processamento
requerido.
Nela
são
realizadas,
por
exemplo,
operações
aritméIcas
e
lógicas.
11
Organização
Básica
de
um
Computador
• A
memória
armazena
dados
e
informações
que
serão
uIlizados
no
processamento,
além
dos
programas
que
vão
manipular
estes
dados
e
estas
informações.
• A
memória
é
dividida
em
partes,
chamadas
posições
de
memória,
sendo
associada
a
cada
uma
delas
um
endereço,
o
qual
é
uIlizado
para
se
ter
acesso
a
posição.
12
Organização
Básica
de
um
Computador
• Muitas
vezes,
essa
unidade
é
chamada
memória
RAM
(Random
Access
Memory
–
Memória
de
Acesso
Aleatório)
• Qualquer
armazenamento
na
memória
de
um
computador
é
temporário,
pois
quando
o
computador
é
desligado
tudo
o
que
está
armazenado
desaparece.
13
Tipos
de
Dados
14
Tipos
de
Dados
• Os
dados
são
representados
por
elementos
advindos
do
mundo
externo,
os
quais
representam
as
informações
que
os
seres
humanos
manipulam.
Eles
devem
ser
abstraídos
para
serem
processados
por
um
computador
• São
caracterizados
por
três
Ipos
básicos:
– Numéricos
(inteiros
ou
reais)
– Caracteres
– Lógicos
15
Inteiros
• Dados
numéricos
posiIvos
ou
negaIvos
• Exclui
qualquer
valor
numérico
fracionário
• Exemplo:
35,
234,
-‐56,
-‐9,
0
16
Reais
• Dados
numéricos
posiIvos,
negaIvo
e
números
fracionários
• Exemplo:
35,
234,
-‐56,
-‐9,
-‐45.99,
4.5,
0
17
Caracteres
• Seqüência
de
valores
delimitados
por
aspas
• Formadas
por:
letras,
números
e
símbolos
• Também
conhecido
como:
alfanumérico,
string,
literal,
cadeia
• Exemplo:
“Programação”,
“10a”,
“10”,
“
”
18
Lógicos
• Dados
com
valores
que
sugerem
uma
única
opção
entre
duas
possibilidades
existentes
• Representação:
verdadeiro
ou
falso,
0
(zero)
ou
1
(um),
sim
ou
não
• Também
conhecido
como
booleano
19
Variáveis
e
Constantes
20
Variáveis
• Variável
é
tudo
aquilo
que
é
sujeito
a
variações,
que
é
incerto,
instável
ou
inconstante.
• Como
referenciar
a
armazenar
os
dados
armazenados
em
um
computador?
• Os
valores
são
armazenados
na
memória
• Cada
Ipo
de
dado
diferente
ocupa
um
número
específico
de
bytes
na
memória
• Para
recuperar
um
valor
é
necessário
saber
o
seu
Ipo
e
o
endereço
do
byte
inicial
ocupado
na
memória
21
Variáveis
• De
formar
geral,
podemos
dizer
que
uma
célula
de
memória
está
associada
a
um
idenIficador
• O
termo
variável
é
freqüentemente
uIlizado
com
sinônimo
de
idenIficador
• Variável
é
uma
enIdade
que
guarda
valores
que
podem
ser
alterados
no
decorrer
de
um
algoritmo
• Embora
uma
variável
possa
assumir
diferentes
valores,
ela
só
pode
armazenar
um
valor
a
cada
instante
22
Variáveis
• Uma
variável
não
pode
armazenar
um
valor
de
Ipo
de
dado
diferente
daquele
para
o
qual
foi
criada
• Uma
variável
deve
possuir
um
nome
e
este
é
uIlizado
para
sua
idenIficação
e
representação
dentro
de
um
programa.
23
Variáveis
• Regras
de
definição
e
uso
de
variáveis:
– O
nome
de
idenIficação
de
uma
variável
pode
uIlizar
um
ou
mais
caracteres
– O
primeiro
caractere
de
idenIficação
do
nome
de
uma
variável
deve
sempre
ser
alfabéIco
(letras
maiúsculas
ou
minúsculas),
os
demais
podem
ser
alfanuméricos
(letras,
números
e
_)
– Na
definição
de
um
nome
composto
de
uma
variável
não
podem
exisIr
espaços
em
branco
entre
os
nomes
– Jamais
uma
variável
pode
ser
definida
com
o
mesmo
nome
de
uma
palavra
que
represente
os
comandos
de
uma
linguagem
de
programação
de
computadores,
ou
seja,
as
palavras
reservadas
de
uma
linguagem
de
programação
– Não
pode
ser
uIlizado
como
nome
de
variável
algum
que
já
tenha
sido
usado
para
idenIficar
o
nome
de
um
programa
24
Papéis
de
Variáveis
em
um
Programa
• Ação:
quando
seu
valor
inicial
é
modificado
ao
longo
da
execução
de
um
programa.
• Controle:
quando
seu
valor
é
vigiado
e
uIlizado
principalmente
em
operações
lógicas
de
decisão
ao
longo
de
um
programa.
25
Constantes
• Constante
é
tudo
que
é
fixo,
estável,
inalterável,
imutável,
conrnuo,
invariável,
de
valor
fixo
e
que
é
aplicado
sob
diversos
pontos
de
vista.
• Exemplo:
resultado
=
soma
*
1.23
26
Formas
de
Representação
da
Lógica
de
Programação
27
Formas
Básicas
de
Representação
da
Lógica
de
Programação
• Descrição
NarraIva
• Diagrama
de
Blocos
(Fluxograma)
• Português
Estruturado
(Pseudocódigo)
28
Descrição
NarraIva
• UIliza
linguagem
natural
para
especificar
os
passos
para
a
realização
das
tarefas.
• Como
dá
margem
a
interpretações
errôneas
e
ambiguidades,
inerentes
à
sua
caracterísIca
pouco
formal,
é
pouco
uIlizada
para
a
especificação
de
algoritmos.
29
Diagrama
de
Blocos
• Descreve
o
método
e
a
seqüência
das
ações
a
serem
estabelecidas
para
um
computador
• Usa
diversos
símbolos
geométricos
• Facilita
a
visualização
completa
e
imediata
da
linha
de
raciocínio
lógico
de
um
programador
• Os
diagramas
de
blocos
podem
ser
feitos
e
quebrados
e
vários
níveis
• Deve
ser
indicado
de
cima
para
baixo
• É
incorreto
e
“proibido”
ocorrer
o
cruzamento
de
linhas
de
fluxo
de
dados
entre
os
símbolos
30
Diagrama
de
Blocos
–
Símbolos
Básicos
31
Diagrama
de
Blocos
–
Símbolos
Especiais
32
Diagrama
de
Blocos
-‐
Exemplo
33
Português
Estruturado
• Linguagem
de
projeto
de
programação
• Notação
para
elaboração
de
algoritmos,
os
quais
serão
uIlizados
na
definição,
criação
e
desenvolvimento
de
documentação
genérica
do
código
de
um
programa
de
computador
• Normalmente
não
é
executada
por
um
computador.
34
Português
Estruturado
-‐
Exemplo
programa Soma
var
num1, num2, res : inteiro
inicio
leia num1, num2
res ! num1 + num2
escreva “Soma: ”, res
fim
35
Comandos
de
Leitura
e
Escrita
de
Dados
36
Comando
de
Atribuição
(Processamento
de
Dados)
• Um
comando
de
atribuição
permite-‐nos
fornecer
um
valor
a
uma
variável,
em
que
o
Ipo
deve
ser
comparvel
com
o
Ipo
da
variável.
• Sintaxe:
identificador ! expressão
• Exemplo:
A ! B
X ! 10
Y ! C + D + 1
SOMA ! A1 + A2 + 6 37
Comando
de
Leitura
(Entrada
de
Dados)
• Diagrama
de
Blocos
– Teclado
em
linha
ou
entrada
manual
<variável(is)>
• Português
Estruturado
– leia <variável(is)>
• Os
dados
lidos
por
um
algoritmo
devem
ser
armazenados
em
variáveis.
38
Comando
de
Leitura
Exemplo
• Diagrama
de
Blocos
raio
N1,
N2,
N3
• Português
Estruturado
leia raio
leia N1, N2, N3
• É
possível
ler
o
valor
de
vários
dados
em
uma
única
instrução,
para
isto,
basta
separar
cada
idenIficador
de
variável
por
39
vírgula.
Comando
de
Escrita
(Saída
de
Dados)
• Diagrama
de
Blocos
– Teclado
em
linha
ou
entrada
manual
<variável(is)
ou
informações>
• Português
Estruturado
– escreva <variável(is) ou informações>
• Os
dados
de
saída
de
um
algoritmo
podem
vir
de
variáveis,
expressões
ou
constantes.
40
Comando
de
Escrita
Exemplo
• Diagrama
de
Blocos
Apresenta
a
mensagem
Ola
“Ola
Mundo”
Mundo
na
tela
Apresenta
a
mensagem
“Soma:
”,
s
Soma:
e
o
valor
da
variável
s
na
tela
41
Comando
de
Escrita
Exemplo
• Português
Estruturado
escreva “Ola Mundo”
escreva res
escreva “Soma: ”, s
escreva N1, N2
• É
possível
escrever
o
valor
de
vários
dados
em
uma
única
instrução,
para
isto,
basta
separar
cada
dado
por
vírgula.
42
Comando
de
Leitura
e
Escrita
Exemplo
programa Exemplo
var
v1, res : inteiro
inicio
leia v1
res ! v1 * v1
escreva res
fim
43
Blocos
• Um
bloco
pode
ser
definido
como
um
conjunto
de
ações
com
uma
função
definida,
neste
caso
um
algoritmo
pode
ser
visto
como
um
bloco.
• Para
delimitar
um
bloco,
uIliza-‐se
os
delimitadores
início
e
fim.
44
Estrutura
Sequencial
• A
estrutura
sequencial
de
um
algoritmo
corresponde
ao
fato
de
que
o
conjunto
de
ações
primiIvas
será
executado
em
uma
sequência
linear
de
cima
para
baixo
e
da
esquerda
para
a
direita,
isto
é,
na
ordem
em
que
foram
escritas.
45
Introdução
à
Linguagem
C
46
Introdução
à
Linguagem
C
• A
linguagem
C
foi
primeiramente
criada
por
Dennis
M.
Ritchie
e
Ken
Thompson
no
laboratório
Bell
em
1972.
– A
definição
está
conIda
no
livro
The
C
Programming
Language
• C
é
uma
linguagem
uIlizada
como
ferramenta
na
programação
de
qualquer
Ipo
de
sistema
– Ex:
sistemas
operacionais,
planilhas
eletrônicas,
processadores
de
texto,
gerenciadores
de
banco
de
dados,
processadores
gráficos,
sistemas
de
transmissão
de
dados,
para
solução
de
problemas
de
engenharia
ou
ysica,
etc.
– O
sistema
operacional
UNIX
é
desenvolvido
e
C.
47
Introdução
à
Linguagem
C
• A
linguagem
C
foi
desenhada
para
que
o
usuário
possa
planejar
programas
estruturados
e
modulares.
– O
resultado
é
um
programa
mais
legível
e
documentado.
– Os
programas
em
C
tendem
a
ser
bastante
compactos
e
de
execução
rápida.
• Programas
em
C
podem
ser
desenvolvidos
em
partes
separadas
por
pessoas
disIntas
e
depois
unidos
num
produto
final,
o
que
significa
que
bibliotecas
de
funções
podem
ser
criadas
ou
usadas
sem
realmente
conhecer
o
código
de
cada
uma
delas.
48
Conceito
de
Compiladores
• Todo
programa
escrito
numa
linguagem
de
programação
de
alto
nível
precisa
ser
traduzido
para
a
linguagem
de
máquina,
para
que
o
computador
possa
executá-‐lo,
para
isso
existem
os
interpretadores
e
os
compiladores.
• Interpretador:
faz
a
análise
sintáIca
(verifica
se
o
programa
fonte
está
escrito
de
acordo
com
a
gramáIca
definida
pela
linguagem)
e
a
análise
semânIca
(verifica,
por
exemplo,
uma
mulIplicação
entre
Ipos
de
dados
diferentes).
Executa
o
programa
passo
a
passo.
• Compilador:
Tal
como
o
interpretador,
faz
a
análise
sintáIca
e
semânIca
do
programa
fonte.
O
compilador
lê
o
arquivo
contendo
o
programa
escrito
em
uma
dada
linguagem
de
programação
e
gera
um
programa
em
linguagem
de
máquina
que
seja
equivalente
ao
programa
inicial
de
tal
forma
que
o
computador
o
entenda.
49
Compilador
vs
Interpretador
Interpretador
Programa
Fonte
Interpretador
Saída
Dados
Compilador
Programa
Compilador
Fonte
50
Criação
de
um
Programa
em
Linguagem
C
• A
criação
de
um
programa
em
linguagem
C
segue
basicamente
três
passo:
– Criação
do
programa
fonte
(texto)
– Compilação
desse
programa,
para
a
sua
tradução
em
código
executável
– Execução
do
código
produzido
51
Estrutura
Básica
de
um
Programa
em
C
• Um
programa
em
C
consiste
em
uma
ou
várias
“funções”.
• Forma
geral
da
função
main:
main () {
// instruções
}
• Os
parênteses
após
o
nome
indicam
que
esta
é
uma
função.
– A
função
“main”
é
uIlizada
para
indicar
a
função
que
inicia
o
programa.
• Toda
função
C
deve
ser
iniciada
por
uma
chave
de
abertura,
{,
e
encerrada
por
uma
chave
de
fechamento,
}
• A
função
main()
deve
exisIr
em
algum
lugar
do
seu
programa
e
marca
o
ponto
de
início
da
execução
do
programa.
– Se
um
programa
for
consItuído
de
uma
única
função
esta
será
main()
52
O
Pré-‐Processador
C
• O
pré-‐processador
C
é
um
programa
que
examina
o
programa-‐fonte
em
C
e
executa
certas
modificações
nele,
baseado
em
instruções
chamadas
direIvas.
• O
pré-‐processador
faz
parte
do
compilador
e
pode
ser
considerado
uma
linguagem
dentro
da
linguagem
C.
Ele
é
executado
automaIcamente
antes
da
compilação.
DireIvas
do
pré-‐processador
seriam
instruções
desta
linguagem.
• Instruções
para
o
pré-‐processador
devem
fazer
parte
do
texto
que
criamos,
mas
não
farão
parte
do
programa
que
compilamos,
pois
são
reIradas
do
texto
pelo
compilador
antes
da
compilação.
53
O
Pré-‐Processador
C
• Todas
a
direIvas
do
pré-‐processador
são
iniciadas
com
o
símbolo
(#).
As
direIvas
podem
ser
colocadas
em
qualquer
parte
do
programa,
mas
é
costume
serem
colocadas
no
início
do
programa,
antes
de
main(),
ou
antes
do
começo
de
uma
função
parIcular.
• Não
há
ponto-‐e-‐vírgula
após
qualquer
direIva
do
pré-‐
processador.
54
A
DireIva
#include
• A
direIva
#include
causa
a
inclusão
de
um
programa-‐fonte
em
outro
Ela
diz
ao
compilador
para
incluir,
na
hora
da
compilação,
um
arquivo
especificado.
Sua
forma
geral
é:
#include “nome_do_arquivo” ou
#include <nome_do_arquivo>
• A
diferença
entre
usar
“
”
e
<
>
é
somente
a
ordem
de
procura
nos
diretório
pelo
arquivo
especificado.
Se
o
arquivo
esIver
nos
caminhos
de
procura
pré-‐especificados
do
compilador
(como
é
o
caso
do
arquivo
stdio.h)
use
<
>.
55
Variáveis
• As
variáveis
são
o
aspecto
fundamental
de
qualquer
linguagem
de
computador.
Uma
variável
em
C
é
um
espaço
de
memória
reservado
para
armazenar
um
certo
Ipo
de
dado
e
tendo
um
nome
para
referenciar
o
seu
conteúdo.
• Uma
variável
é
um
espaço
de
memória
que
pode
conter,
a
cada
tempo,
valores
diferentes.
56
Declaração
de
Variáveis
• Uma
declaração
de
variável
é
uma
instrução
para
reservar
uma
quanIdade
de
memória
apropriada
para
armazenar
o
Ipo
especificado.
• Uma
declaração
de
variável
consiste
no
nome
de
um
Ipo,
seguido
do
nome
da
variável.
• Exemplo:
int num;
• Em
C
todas
as
variáveis
devem
ser
declaradas.
• Se
você
Iver
mais
de
uma
variável
do
mesmo
Ipo,
poderá
declará-‐las
de
uma
única
vez,
separando
seus
nomes
por
vírgulas.
• Exemplo:
int aviao, foguete, helicoptero;
57
Nomes
de
Variáveis
• A
escolha
de
nomes
significaIvos
para
suas
variáveis
pode
ajudá-‐lo
a
entender
o
que
o
programa
faz
e
prevenir
erros.
• Pode-‐se
usar
quantos
caracteres
quiser
para
o
nome
de
uma
variável
• O
primeiro
caractere
deve
ser
obrigatoriamente
uma
letra
ou
o
caractere
de
sublinhar
(_).
• Os
demais
caracteres
podem
ser
letras,
números
ou
caracteres
de
sublinhar.
• Uma
variável
não
pode
ter
o
mesmo
nome
de
uma
palavra-‐
chave
de
C.
• Em
C
letras
minúsculas
e
maiúsculas
são
diferentes
– Exemplo:
PESO,
Peso,
peSo,
peso
58
Palavras-‐Chaves
em
C
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short
unsigned
continue for signed void
default goto sizeof volatile
do if static while
59
Tipos
de
Dados
• O
Ipo
de
uma
variável
informa
a
quanIdade
de
memória,
em
bytes,
que
esta
irá
ocupar
e
a
forma
como
o
seu
conteúdo
será
armazenado.
60
Modificadores
de
Tipos
• Com
exceção
de
void,
os
Ipos
de
dados
básicos
podem
estar
acompanhados
por
modificadores
na
declaração
de
variáveis.
Os
modificadores
de
Ipos
oferecidos
por
C
são:
– long ou long int (4 bytes)
– unsigned char (de 0 a 255)
– unsigned int (de 0 a 65535)
– unsigned long
– short (2 bytes no IBM-PC)
61
Inicializando
Variáveis
• É
possível
combinar
uma
declaração
de
variável
com
o
operador
de
atribuição
para
que
a
variável
tenha
um
valor
ao
mesmo
tempo
de
sua
declaração;
é
o
que
chamaremos
de
inicialização
de
variáveis.
int evento = 5;
char corrida = ‘C’;
float tempo = 27.25;
62
Atribuições
MúlIplas
• C
permite
que
você
atribua
o
mesmo
valor
a
muitas
variáveis
usando
atribuições
múlIplas
em
um
único
comando.
x = y = z = 10;
63
Função
de
Saída
de
Dados
• A
função
prinK()
é
uma
das
funções
de
E/S
(entrada
e
saída)
que
podem
ser
usada
em
C.
Ela
não
faz
parte
da
definição
de
C
mas
todos
os
sistemas
têm
uma
versão
de
prinK()
implementada.
• Esta
função
é
uIlizada
para
imprimir
dados
na
tela
do
computador.
Os
dados
a
serem
impressos
devem
ser
passados
como
argumentos
da
função
prinK().
• Sintaxe:
printf (“expr. de controle”, lista de argumentos);
64
Função
de
Saída
de
Dados
• Exemplo:
#include <stdio.h>
#include <stdlib.h>
main () {
printf (“Este e’ o numero dois: %d”, 2);
system (“PAUSE”);
}
• A
expressão
de
controle
pode
conter
caracteres
que
serão
exibidos
na
tela
e
códigos
de
formatação
que
indicam
o
formato
em
que
os
argumentos
devem
ser
impressos.
No
exemplo
acima,
o
código
de
formatação
%d
solicita
a
função
prinK()
imprimir
o
segundo
argumento
em
formato
decimal.
• prinK()
é
uma
função
da
biblioteca
padrão
do
C
(stdio.h).
Para
uIlizar
a
função
prinK()
a
biblioteca
stdio.h
deve
ser
incluída
com
a
direIva
#include.
65
Função
de
Saída
de
Dados
• Exemplo
2:
#include <stdio.h>
#include <stdlib.h>
main () {
printf (“Ola Mundo! \n”);
system (“PAUSE”);
}
• Neste
exemplo
a
expressão
de
controle
contém
apenas
os
caracteres
que
devem
ser
impressos
na
tela
e
um
caractere
especial
de
impressão
(“\n”)
que
indica
ao
programa
para
colocar
o
cursor
na
próxima
linha.
• Quando
não
temos
nenhum
código
de
formatação
na
expressão
de
controle,
não
deve
ser
passado
nenhum
outro
argumento
para
a
função
prinK().
66
Função
de
Saída
de
Dados
• Exemplo
3:
#include <stdio.h>
#include <stdlib.h>
main () {
int numInt = 10;
float numReal = 15.25;
printf (“%d %f”, numInt, numReal);
system (“PAUSE”);
}
67
Formatos
de
Impressão
• A
tabela
abaixo
apresenta
os
códigos
para
impressão
formatada
da
função
prinK():
Código
prinK()
Formato
%c
Caractere
Simples
%d
Decimal
%e
Notação
Cienrfica
%f
Ponto
Flutuante
(float)
%g
%e
ou
%f
(o
mais
curto)
%o
Octal
%s
Cadeia
de
Caracteres
%u
Decimal
sem
sinal
%x
Hexadecimal
%ld
Decimal
Longo
%lf
Ponto
Flutuante
Longo
(double)
%%
Um
único
sinal
de
porcentagem
68
Caracteres
Especiais
de
Impressão
• A
tabela
abaixo
apresenta
os
códigos
de
C
para
caracteres
que
não
podem
ser
inseridos
diretamente
pelo
teclado.
Códigos
Especiais
Significado
\n
Nova
linha
\r
Retorno
do
cursor
\t
Tab
\b
Retrocesso
\”
Aspas
\\
Barra
\f
Salta
página
de
formulário
\0
Nulo
69
Modificadores
de
Formato
• O
Especificador
de
Largura
Mínima
de
Campo
– Um
número
colocado
entre
o
símbolo
%
e
o
código
de
formato
age
como
um
especificador
de
largura
mínima
de
campo.
Isso
preenche
a
saída
com
espaços,
para
assegurar
que
ela
aInja
um
certo
comprimento
mínimo.
– Para
preencher
com
0s,
deve-‐se
colocar
um
0
antes
do
especificador
de
largura
mínima
de
campo.
Por
exemplo,
%05d
preencherá
um
número
de
menos
de
cinco
dígitos
com
0s
de
forma
que
seu
comprimento
total
seja
cinco.
70
Modificadores
de
Formato
• O
Especificador
de
Precisão
– O
especificador
de
precisão
segue
o
especificador
de
largura
mínima
de
um
campo
(se
houver
algum),
consisIndo
em
um
ponto
seguido
de
um
número
inteiro.
O
seu
significado
exato
depende
do
Ipo
de
dado
a
que
está
sendo
aplicado.
– Exemplo:
#include <stdio.h>
main () {
printf (“%.4f\n”, 123.1234567);
printf (“%6.4d\n”, 21);
printf (“%6.0d\n”, 21);
printf (“%.15s\n”, “Este e um teste simples”);
}
Saída: 123.1235
0021
21
Este e um teste 71
Função
de
Entrada
de
Dados
• A
função
scanf()
é
outra
das
funções
de
E/S
implementada
em
todos
os
compiladores
C.
Ela
é
o
complemento
de
prinK()
e
nos
permite
ler
dados
formatados
da
entrada
padrão
(teclado).
• Sua
sintaxe
é
similar
à
de
prinK(),
isto
é,
uma
expressão
de
controle
seguida
por
uma
lista
de
argumentos
separados
por
vírgula.
• A
principal
diferença
está
na
lista
de
argumentos.
Os
argumentos
de
scanf()
devem
ser
endereços
de
variáveis.
• Sintaxe:
scanf (“expr. de controle”, lista de argumentos);
72
Função
de
Entrada
de
Dados
• A
expressão
de
controle
pode
conter
códigos
de
formatação,
precedidos
por
um
sinal
%.
• A
lista
de
argumentos
deve
consisIr
nos
endereços
das
variáveis.
C
oferece
um
operador
para
Ipos
básicos
chamado
operador
de
endereço
e
referenciado
pelo
símbolo
&
que
resulta
o
endereço
do
operando.
• scanf()
é
uma
função
da
biblioteca
padrão
do
C
(stdio.h).
Para
uIlizar
a
função
scanf()
a
biblioteca
stdio.h
deve
ser
incluída
com
a
direIva
#include.
73
Função
de
Entrada
de
Dados
• Exemplo:
#include <stdio.h>
#include <stdlib.h>
main () {
float anos, dias;
printf (“Digite sua idade em anos: ”);
scanf (“%f”, &anos);
dias = anos * 365;
printf (“Sua idade em dias e’ %.0f.\n”, dias);
system (“PAUSE”);
}
74
O
Operador
de
Endereço
(&)
• Toda
variável
ocupa
uma
certa
localização
na
memória,
e
seu
endereço
é
o
do
primeiro
byte
ocupado
por
ela.
Um
inteiro
ocupa
2
bytes.
Se
você
declarou
uma
variável
n
como
inteira
e
atribui
a
ela
o
valor
2,
quando
n
for
referenciada
devolverá
2.
Entretanto,
se
você
referenciar
n
precedido
de
&
(&n)
devolverá
o
endereço
do
primeiro
byte
onde
n
está
guardada.
• Exemplo:
#include <stdio.h>
#include <stdlib.h>
main () {
int num = 2;
printf (“Valor=%d, endereco=%u”, num, &num);
system (“PAUSE”);
}
Saída:
Valor=2,
endereco=1370
• Um
endereço
de
memória
é
visto
como
um
número
inteiro
sem
sinal,
por
isso
usamos
%u.
75
Códigos
de
Formatação
de
scanf()
• A
tabela
abaixo
apresenta
os
códigos
de
formatação
da
função
scanf():
Código
Função
%c
Leia
um
único
caractere
%d
Leia
um
inteiro
decimal
%e
Leia
um
número
em
notação
cienrfica
%f
Leia
um
número
em
ponto
flutuante
%o
Leia
um
inteiro
octal
%s
Leia
uma
série
de
caracteres
%u
Leia
um
decimal
sem
sinal
%x
Leia
um
número
hexadecimal
%l
Leia
um
inteiro
longo
%lf
Leia
um
double
76
Exemplo
• Programa
que
calcula
e
apresenta
na
tela
a
soma
de
dois
números
inteiros.
#include <stdio.h>
#include <stdlib.h>
main () {
int num1, num2;
printf (“Digite o primeiro valor:”);
scanf (“%d”, &num1);
printf (“Digite o segundo valor:”);
scanf (“%d”, &num2);
int soma = num1 + num2;
printf (“Soma: %d”, soma);
system (“PAUSE”);
}
77
Exemplo
2
• Programa
que
calcula
e
apresenta
na
tela
a
área
de
um
círculo.
#include <stdio.h>
#include <stdlib.h>
main () {
float raio;
printf (“Digite o valor do raio:”);
scanf (“%f”, &raio);
float area = 3.1415 * raio * raio;
printf (“Area: %.2f”, area);
system (“PAUSE”);
}
78
Constantes
• O
qualificador
const
pode
ser
aplicado
à
declaração
de
qualquer
variável
para
especificar
que
seu
valor
não
deve
ser
mudado.
const float PI = 3.1415;
const float SALARIO_MINIMO = 350.00;
79
A
DireIva
#define
• A
direIva
#define
pode
ser
usada
para
definir
constantes
simbólicas
com
nomes
apropriados
• Exemplo:
#define PI 3.1415
• Quando
o
compilador
encontra
#define,
ele
subsItui
cada
ocorrência
de
PI
por
3.1415
• A
frase
à
esquerda
(PI),
que
será
procurada,
é
chamada
“idenIficador”.
A
frase
à
direita
(3.1415),
que
será
subsItuída,
é
chamada
“texto”.
Um
ou
mais
espaços
separam
o
idenIficador
do
texto.
• Por
convenção,
o
idenIficador
é
escrito
em
letras
maiúsculas.
• Só
é
permiIdo
escrever
um
comando
destas
por
linha.
80
Exemplo
• Programa
que
calcula
a
área
de
um
círculo.
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415
main () {
float raio;
printf (“Digite o valor do raio:”);
scanf (“%f”, &raio);
float area = PI * raio * raio;
printf (“Area: %.2f”, area);
system (“PAUSE”);
}
81
Comentários
• Comentários
podem
ser
colocados
em
qualquer
lugar
de
seu
programa.
• Comentários
começam
com
dois
caracteres,
chamados
símbolos
de
comentários,
barra-‐asterisco
(/*)
e
terminam
por
asterisco-‐barra
(*/).
Como
C
ignora
espaços,
os
comentários
podem
ser
escritos
em
vários
linhas.
/*
Aqui esta
um exemplo de
comentario em
multiplas linhas
*/
• Não
são
permiIdos
os
simbolos
de
/*
ou
*/
no
interior
de
um
comentário.
/* estou escrevendo /* um comentario ilegal */
82
Operadores
AritméIcos
83
Operadores
AritméIcos
• Duas
categorias:
unários
e
binários
• São
unários
quando
atuam
na
inversão
do
estado
de
um
valor
numérico
• São
binários
quando
uIlizados
em
operações
matemáIcas
de
divisão,
mulIplicação,
adição
e
subtração
• Em
uma
expressão
aritméIca,
caso
necessite
alterar
o
nível
de
prioridade
de
um
referido
cálculo,
ele
deve
ser
definido
por
meio
de
parênteses.
84
Operadores
AritméIcos
Operador
Operação
Categoria
Resultado
Prioridade
!
Atribuição
-‐
-‐
-‐
+
Manutenção
de
Unário
-‐
1
sinal
-‐
Inversão
de
sinal
Unário
-‐
1
↑
Exponenciação
Binário
Inteiro
ou
Real
2
↑(1/n)
Radiciação
de
n
Binário
Real
2
/
Divisão
Binário
Real
3
*
MulIplicação
Binário
Inteiro
ou
Real
3
div
Divisão
Binário
Inteiro
3
mod
Módulo
Binário
Inteiro
3
(Resto
da
divisão)
+
Adição
Binário
Inteiro
ou
Real
4
-‐
Subtração
Binário
Inteiro
ou
Real
4
85
Expressões
AritméIcas
• São
definidas
pelo
relacionamento
existente
entre
variáveis
e
constantes
numéricas
com
a
uIlização
dos
operadores
aritméIcos
• Exemplo
resultado ! 10 * (3 + v1)
86
Transformando
Expressões
MatemáIcas
em
Computacionais
• As
expressões
aritméIcas
em
computação
são
escritas
de
uma
forma
um
pouco
diferente
da
forma
conhecida
em
matemáIca:
– Expressão
matemáIca:
X
=
{43
.
[55
:
(30
+
2)
]
}
– Expressão
Computacional:
X
!
(43
*
(55
/
(30
+
2)
)
)
87
Transformando
Expressões
MatemáIcas
em
Computacionais
• Na
forma
computacional,
as
chaves
e
colchetes
são
abolidos,
uIlizando-‐se
em
seu
lugar
apenas
parênteses
• É
também
subsItuído
o
sinal
de
(=)
igual
pelo
sinal
de
(!)
implicado
ou
atribuído
• O
sinal
implicado
ou
atribuído
(!)
é
uIlizado
para
indicar
que
o
valor
de
uma
expressão
aritméIca
está
sendo
armazenado
em
uma
variável
88
Transformando
Expressões
MatemáIcas
em
Computacionais
• Exemplo:
fórmula
para
calcular
a
área
de
um
triângulo
– Expressão
matemáIca:
– Expressão
computacional:
A
!
(b
*
h)
/
2
89
Operadores
Relacionais
90
Operadores
Relacionais
• Uma
condição
é
o
estabelecimento
de
uma
relação
lógica
entre
dois
elementos
• Variável
x
Variável,
Variável
x
Constante
• Para
definir
uma
relação
lógica
é
necessário
usar
operadores
relacionais
• Uma
relação
lógica
retorna
somente
os
valores
verdadeiro
ou
falso
• Os
operadores
relacionais
possuem
o
mesmo
nível
de
prioridade
91
Operadores
Relacionais
Símbolo
Significado
=
Igual
a
>
Maior
que
<
Menor
que
>=
Maior
ou
igual
a
<=
Menor
ou
igual
a
<>
Diferente
de
92
Operadores
Lógicos
93
Operadores
Lógicos
• UIlizados
para
uma
mesma
tomada
de
decisão
que
necessite
de
mais
de
uma
condição
• Também
conhecidos
como
operadores
booleanos
Símbolo
Significado
e
Conjunção
ou
Disjunção
não
Negação
94
Operador
Lógico
E
• UIlizado
quando
duas
ou
mais
condições
necessitam
ser
verdadeiras
para
obter-‐se
um
resultado
lógico
verdadeiro.
Caso
contrário,
o
resultado
do
valor
lógico
será
falso.
95
Operador
Lógico
Ou
• UIlizado
quando
pelo
menos
uma
de
duas
ou
mais
condições
necessita
ser
verdadeira
para
obter-‐se
um
resultado
lógico
verdadeiro.
Caso
contrário
o
valor
lógico
será
falso
Condição
1
Condição
2
Resultado
Verdadeira
Verdadeira
Verdadeiro
Verdadeira
Falsa
Verdadeiro
Falsa
Verdadeira
Verdadeiro
Falsa
Falsa
Falsa
96
Operador
Lógico
Não
• Inverte
o
valor
lógico
de
uma
determinada
condição
Condição
Resultado
Verdadeira
Falso
Falsa
Verdadeira
97
Operadores
Lógicos
-‐
Prioridade
• Os
operadores
lógicos
possibilitam
o
uso
de
mais
de
uma
condição
para
a
tomada
de
uma
única
decisão
• É
necessário
levar
em
conta
a
ordem
de
prioridade
dos
operadores
lógicos
• Caso
necessite
alterar
o
nível
de
prioridade
de
uma
expressão
deve
ser
uIlizado
parênteses
Operador
Operação
Prioridade
não
Negação
1
e
Conjunção
2
ou
Disjunção
3
98
Operadores
Linguagem C
99
Operadores
AritméIcos
Linguagem
C
• C
oferece
6
operadores
aritméIcos
binários
(operam
sobre
dois
operandos)
e
um
operador
aritméIco
unário
(opera
sobre
um
operando).
• Binários
= Atribuição
+ Soma
- Subtração
* Multiplicação
/ Divisão
% Módulo (Resto da divisão inteira)
• Unário
- Menos unário (Indica a troca de sinal)
• Precedência
(mais
alta
-‐>
mais
baixa)
- (menos unário), * / %, + -
Para
alterar
a
ordem
de
precedência,
uIlize
parênteses.
100
Operadores
de
Incremento
(++)
e
Decremento
(-‐-‐)
• Considere
os
operadores
abaixo
que
não
são
comuns
em
outras
linguagens:
++ incrementa de 1 seu operando
-- decrementa de 1 seu operando
• O
operador
de
incremento
(++)
incrementa
de
um
seu
operando.
Este
operador
trabalha
de
dois
modos:
– O
primeiro
modo
é
chamado
pré-‐fixado
e
o
operador
aparece
antes
do
nome
da
variável.
– O
segundo
é
o
modo
pós-‐fixado
em
que
o
operador
aparece
seguindo
o
nome
da
variável.
• Em
ambos
os
casos,
a
variável
é
incrementada.
Porém
quando
++n
é
usado
numa
instrução,
n
é
incrementada
antes
de
seu
valor
ser
usado,
e
quando
n++
esIver
numa
instrução,
n
é
incrementada
depois
de
seu
valor
ser
usado.
• Os
operadores
de
incremento
e
decremento
tem
precedência
sobre
todos
os
operadores
aritméIcos.
101
Operadores
de
Incremento
(++)
e
Decremento
(-‐-‐)
• Exemplo
1:
Se
as
seguintes
linhas
de
programa
forem
executadas:
n = 5;
x = n++;
printf (“x = %d n = %d”, x, n);
a
saída
será: x = 5 n = 6
• Exemplo
2:
Se
as
seguintes
linhas
de
programa
forem
executadas:
n = 5;
x = ++n;
printf (“x = %d n = %d”, x, n);
a
saída
será: x = 6 n = 6
102
Operadores
AritméIcos
de
Atribuição
• Operadores
AritméIcos
de
Atribuição
+=, -=, *=, /=, %=
• Cada
um
destes
operadores
é
usado
com
um
nome
de
variável
à
sua
esquerda
e
uma
expressão
à
sua
direita.
A
operação
consiste
em
atribuir
um
novo
valor
à
variável
que
dependerá
do
operador
e
da
expressão
à
direita.
• Se
x
é
uma
variável,
exp
uma
expressão
e
op
um
operador
aritméIco
(+,
-, *, / ou %),
então
x op= exp;
equivale
a
x = (x) op (exp);
• Exemplos:
i += 2; equivale
a
i = i + 2;
x *= y + 1; equivale
a x = x * (y + 1)
t /= 2.5; equivale
a t = t / 2.5;
p %= 5; equivale
a p = p % 5;
d -= 3; equivale
a d = d – 3; 103
Operadores
Relacionais
Linguagem
C
Símbolo
Significado
==
Igual
a
>
Maior
que
<
Menor
que
>=
Maior
ou
igual
a
<=
Menor
ou
igual
a
!=
Diferente
de
104
Operadores
Lógicos
Linguagem
C
105
Precedência
dos
Operadores
Linguagem
C
Operadores
Tipos
! - ++ -- unários;
não
lógico
e
menos
aritméIco
* / % aritméIcos
+ - aritméIcos
< > <= >= relacionais
== != relacionais
&& lógico
E
|| lógico
OU
= += -= *= /= %= aritméIcos
de
atribuição
106
Desvio
Condicional
Simples
107
Desvio
Condicional
Simples
• Recurso
para
tomada
de
decisão
simples
• Deve
ser
uIlizado
caso
seja
necessário
executar
instruções
somente
se
uma
condição
for
verdadeira
• A
tomada
de
decisão
simples
uIliza
a
instrução
se...então...fim_se.
Nesta
instrução,
se
a
condição
estabelecida
for
verdadeira,
são
executadas
todas
as
instruções
definidas
entre
se...então
e
fim_se,
depois
são
executadas
todas
as
condições
existentes
após
fim_se.
Se
a
condição
estabelecida
for
falsa,
são
executadas
as
instruções
que
estão
definidas
após
a
instrução
fim_se
108
Desvio
Condicional
Simples
Diagrama
de
Blocos
Português
Estruturado
se condição então
instruções
fimse
Linguagem C
if (condição){
instruções;
}
109
Desvio
Condicional
Simples
Exemplo
• Ler
dois
valores
numéricos,
efetuar
a
adição
e
apresentar
o
seu
resultado
caso
o
valor
somando
seja
maior
que
10.
• Diagrama
de
Blocos:
110
Desvio
Condicional
Simples
Exemplo
• Português
Estruturado:
programa SOMA_NUMEROS
var
A, B, X : inteiro
inicio
escreva “Digite dois numeros inteiros”
leia A, B
X ! A + B
se X > 10 então
escreva X
fimse
fim
111
Desvio
Condicional
Simples
Exemplo
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
main () {
int a, b, x;
printf (“Digite dois numeros inteiros \n“);
scanf (“%d%d”, &a, &b);
x = a + b;
if (x > 10) {
printf (“Soma: %d \n”, x);
}
system (“PAUSE”);
}
112
Desvio
Condicional
Composto
113
Desvio
Condicional
Composto
• se...então...senão...fimse
• Deve
ser
uIlizado
caso
seja
necessário
executar
instruções
se
uma
condição
for
verdadeira
ou
executar
outras
instruções
se
a
condição
for
falsa
• Nesta
instrução,
se
a
condição
estabelecida
for
verdadeira,
são
executadas
todas
as
instruções
definidas
entre
se...então
e
senão.
Se
a
condição
estabelecida
for
falsa,
são
executadas
todas
as
instruções
que
esIverem
definidas
entre
senão
e
fimse
• Somente
após
a
execução
de
uma
das
possibilidades
anteriores
é
que
o
programa
executa
as
instruções
existentes
após
o
fimse
114
Desvio
Condicional
Composto
Diagrama
de
Blocos
Português
Estruturado
se condição então
instruções para cond. verdadeira
senão
instruções para cond. falsa
fimse
Linguagem C
if (condição){
instruções;
}
else {
instruções;
}
115
Desvio
Condicional
Composto
Exemplo
• Ler
dois
valores
numéricos
e
efetuar
a
adição.
Caso
o
valor
somando
seja
maior
ou
igual
a
10,
deve
ser
apresentado
somando
a
ele
5;
caso
o
valor
somado
não
seja
maior
ou
igual
a
10,
deve
ser
apresentado
subtraído
dele
7.
• Diagrama
de
Blocos:
116
Desvio
Condicional
Composto
Exemplo
• Português
Estruturado:
programa SOMA_NUMEROS
var
A, B, X, R : inteiro
inicio
escreva “Digite dois numeros inteiros”
leia A, B
X ! A + B
se X >= 10 então
R ! X + 5
senão
R ! X – 7
fimse
escreva R
fim
117
Desvio
Condicional
Composto
Exemplo
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
main () {
int a, b, x, r;
printf (“Digite dois numeros inteiros \n”);
scanf (“%d%d”, &a, &b);
x = a + b;
if (x >= 10) {
r = x + 5;
}
else {
r = x – 7;
}
printf (“Resultado: %d \n”, r);
system (“PAUSE”);
}
118
Desvio
Condicional
Encadeado
119
Desvio
Condicional
Encadeado
(Aninhado)
• UIlizado
quando
é
necessário
estabelecer
algumas
verificações
lógicas
de
condições
definidas
sucessivamente
120
Desvio
Condicional
Encadeado
Diagrama
de
Blocos
121
Desvio
Condicional
Encadeado
Português
Estruturado
se condição1 então
instruções para condição1 verdadeira
senão
se condição2 então
instruções para condição2 verdadeira, porém condição1 falsa
senão
instruções para condição1 e condição2 falsa
fimse
fimse
122
Desvio
Condicional
Encadeado
Linguagem
C
if (condicao1) {
instruções;
}
else {
if (condicao2) {
instruções;
}
else {
instruções;
}
}
123
Desvio
Condicional
Encadeado
Exemplo
• Elaborar
um
algoritmo
que
efetue
o
cálculo
do
reajuste
de
salário
de
um
funcionário.
Considere
que
o
funcionário
deve
receber
um
reajuste
de
15%
caso
seu
salário
seja
menor
que
500.
Se
o
salário
for
maior
ou
igual
a
500,
mas
menor
ou
igual
a
1000,
seu
reajuste
será
de
10%;
caso
seja
ainda
maior
que
1000,
o
reajuste
deverá
ser
de
5%.
124
Desvio
Condicional
Encadeado
Exemplo
• Diagrama
de
Blocos:
125
Desvio
Condicional
Encadeado
Exemplo
• Português
Estruturado:
programa ReajustaSalario
var
salario : real
novoSalario : real
inicio
escreva “Salario: ”
leia salario
se salario < 500 então
novoSalario ! salario * 1.15
senão
se salario <= 1000 então
novoSalario ! salario * 1.10
senão
novoSalario ! salario * 1.05
fimse
fimse
escreva novoSalario
fim 126
Desvio
Condicional
Encadeado
Exemplo
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
main () {
float salario, novoSalario;
printf (“Salario: ”);
scanf (“%f”, &salario);
if (salario < 500) {
novoSalario = salario * 1.15;
}
else {
if (salario <= 1000) {
novoSalario = salario * 1.10;
}
else {
novoSalario = salario * 1.05;
}
}
printf (“Novo Salario: %.2f \n”, novoSalario);
system (“PAUSE”);
} 127
Desvio
Condicional
Encadeado
O
Comando
else-‐if
• A
construção
else-‐if
é
uma
maneira
reformatada
de
nihos
if-‐else:
#include <stdio.h>
#include <stdlib.h>
main () {
float salario, novoSalario;
printf (“Salario: ”);
scanf (“%f”, &salario);
if (salario < 500)
comando else-if
novoSalario = salario * 1.15;
else if (salario <= 1000)Esse else está associado
novoSalario = salario * 1.10; ao comando
else if (salario <= 1000)
novoSalario = salario * 1.05;
printf (“Novo Salario: %.2f \n”, novoSalario);
system (“PAUSE”);
}
128
Desvio
Condicional
com
MúlIpla
Escolha
129
Desvio
Condicional
com
MúlIpla
Escolha
130
Desvio
Condicional
com
MúlIpla
Escolha
Diagrama
de
Blocos
131
Desvio
Condicional
com
MúlIpla
Escolha
Português
Estruturado
escolha variável
caso valor1:
instruções
caso valor2:
instruções
...
caso contrário:
instruções
fimescolha
132
Desvio
Condicional
com
MúlIpla
Escolha
Linguagem
C
switch (expressao) {
case constante1:
instruções; /*opcional*/
case constante2: /*opcional*/
instruções; /*opcional*/
....
default: /*opcional*/
instruções; /*opcional*/
}
133
O
Comando
switch
• O
comando
switch
avalia
a
expressão
entre
parênteses,
após
a
palavra
switch,
e
compara
seu
valor
com
os
rótulos
dos
casos.
• A
expressão
entre
parênteses
deve
ser
de
valor
inteiro
ou
caractere.
• Cada
caso
deve
ser
rotulado
por
uma
constante
do
Ipo
inteiro
ou
caractere
ou
por
uma
expressão
constante.
Você
não
poderá
usar
uma
variável
e
nem
uma
expressão
lógica
para
rótulo.
Esta
constante
deve
ser
terminada
por
dois
pontos
(:)
e
não
por
ponto-‐e-‐vírgula.
• Pode
haver
uma
ou
mais
instruções
seguindo
cada
case.
Estas
instruções
não
necessitam
estar
entre
chaves.
134
O
Comando
switch
• O
corpo
de
um
switch
deve
estar
envolto
por
chaves.
• Se
um
caso
for
igual
ao
valor
da
expressão,
a
execução
começa
nele.
• Se
nenhum
caso
for
saIsfeito
e
exisIr
um
caso
default:
a
execução
começará
nele,
senão
o
programa
processará
as
instruções
seguintes
ao
bloco
switch.
Um
default:
é
opcional.
• Os
rótulos
dos
casos
devem
ser
todos
diferentes.
• O
comando
break
causa
uma
saída
imediata
do
switch.
Se
não
exisIr
um
comando
break
seguindo
as
instruções
de
um
caso,
o
programa
segue
executando
todas
as
instruções
dos
casos
abaixo.
135
Desvio
Condicional
com
MúlIpla
Escolha
Exemplo
• Ler
um
número
inteiro.
Caso
o
número
lido
seja
9,
apresentar
na
tela
O
numero
e
igual
a
9.
Caso
o
número
lido
seja
10,
apresentar
na
tela
O
numero
e
igual
a
10.
Caso
o
número
lido
seja
igual
a
11,
apresentar
na
tela
O
numero
e
igual
a
11.
Caso
contrário,
apresentar
na
tela
O
numero
esta
errado.
136
Desvio
Condicional
com
MúlIpla
Escolha
Exemplo
• Diagrama
de
Blocos:
137
Desvio
Condicional
com
MúlIpla
Escolha
Exemplo
• Português
Estruturado:
programa NUMEROS
var
num : inteiro
inicio
escreva “Digite um numero:”
leia num
escolha num
caso 9:
escreva “O numero e igual a 9”
caso 10:
escreva “O numero e igual a 10”
caso 11:
escreva “O numero e igual a 11”
caso contrário:
escreva “O numero esta errado”
fimescolha
fim
138
Desvio
Condicional
com
MúlIpla
Escolha
Exemplo
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
main () {
int num;
printf (“Digite um numero: ”);
scanf (“%d”, &num);
switch (num) {
case 9:
printf (“O numero e igual a 9”);
break;
case 10:
printf (“O numero e igual a 10”);
break;
case 11:
printf (“O numero e igual a 11”);
break;
default:
printf (“O numero esta errado”);
}
system (“PAUSE”);
} 139
Estrutura
de
RepeIção
Enquanto
140
Estruturas
de
RepeIção
• São
necessárias
quando
se
tem
que
repeIr
um
determinado
conjunto
de
instruções,
que
representem
um
comportamento
padrão,
várias
vezes
• Com
estas
estruturas,
escreve-‐se
as
instruções
uma
única
vez,
e
ela
pode
ser
executada
várias
vezes
• RepeIções
podem
ser
controladas
por:
– Condição
– Contador
• Quando
o
controle
é
por
contador,
a
interrupção
é
prevista
no
instante
em
que
é
iniciada
a
execução
da
estrutura
de
repeIção
• Quando
o
controle
é
por
condição,
deve
haver
uma
expressão
lógica,
e
a
interrupção
é
controlada
por
meio
do
resultado
desta
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
• As
estruturas
de
repeIção
são
também
conhecidas
como
laços
141
Estrutura
de
RepeIção
Enquanto
• É
uma
estrutura
que
faz
um
teste
lógico
no
início
de
um
laço,
verificando
se
é
permiIdo
executar
o
trecho
de
instruções
subordinado
a
esse
laço
• Esta
estrutura
tem
o
seu
funcionamento
controlado
por
decisão,
isto
é,
uma
condição
• Executa
um
determinado
conjunto
de
instruções
enquanto
a
condição
verificada
for
verdadeira
• No
momento
em
que
a
condição
se
torna
falsa,
o
processamento
é
desviado
para
fora
do
laço
• Se
a
condição
for
falsa
logo
de
início,
as
instruções
conIdas
no
laço
são
ignoradas
142
Estrutura
de
RepeIção
Enquanto
Diagrama
de
Blocos
Português
Estruturado
Linguagem C
while (condição){
instruções;
}
143
Estrutura
de
RepeIção
Enquanto
Exemplo
1
• Elaborar
um
algoritmo
que
calcule
a
média
aritméIca
de
3
notas
de
30
alunos
• Diagrama
de
Blocos:
144
Estrutura
de
RepeIção
Enquanto
Exemplo
1
• Português
Estruturado:
programa media
var
cont : inteiro
n1, n2, n3, m : real
inicio
cont ! 1
enquanto (CONT <= 30) faça
escreva “Digite 3 notas”
leia n1, n2, n3
m ! (n1 + n2 + n3) / 3
escreva “Media: ”, m
cont ! cont + 1
fimenquanto
fim
145
Estrutura
de
RepeIção
Enquanto
Exemplo
1
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
main () {
int cont;
float n1, n2, n3, m;
cont = 1;
while (cont <= 30) {
printf (“Digite 3 notas \n”);
scanf (“%f%f%f”, &n1, &n2, &n3);
m = (n1 + n2 + n3) /3;
printf (“Media: %.2f\n”, m);
cont = cont + 1;
}
system (“PAUSE”);
}
146
Contador
• Um
contador
é
uIlizado
para
contar
o
número
de
vezes
que
um
bloco
de
instruções
é
executado.
Em
estruturas
de
repeIção,
um
contador
ajuda
a
contar
quantas
vezes
o
laço
é
executado.
• Um
contador
é
uma
variável
que
recebe
ela
mesma
mais
um
valor
constante.
Exemplo:
cont
!
cont
+
1
• Um
contador
deve
ser
inicializado
• Um
contador
deve
ser
incrementado
inicialização
cont ! 1
enquanto (cont <= 30) faça
...
cont ! cont + 1 incremento
fimenquanto
147
Estrutura
de
RepeIção
Enquanto
Exemplo
2
• Elaborar
um
algoritmo
que
leia
10
números
inteiros
posiIvos
e
apresente
na
tela
a
soma
dos
números
lidos.
• Diagrama
de
Blocos:
148
Estrutura
de
RepeIção
Enquanto
Exemplo
2
• Português
Estruturado:
programa soma
var
num, cont, acum : inteiro
inicio
cont ! 1
acum ! 0
enquanto (cont <= 10) faça
escreva “Numero Positivo: ”
leia num
acum ! acum + num
cont ! cont + 1
fimenquanto
escreva “Soma: ”, acum
fim
149
Estrutura
de
RepeIção
Enquanto
Exemplo
2
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
main () {
int num, cont, acum;
cont = 1;
acum = 0;
while (cont <= 10) {
printf (“Numero Positivo: ”);
scanf (“%d”, &num);
acum = acum + num;
cont = cont + 1;
}
printf (“Soma: %d\n”, acum);
system (“PAUSE”);
}
150
Acumulador
• Um
acumulador,
também
conhecido
como
somador,
é
uIlizado
para
obter
somatórios.
Em
estruturas
de
repeIção,
um
acumulador
ajuda
a
acumular
valores
cada
vez
que
um
laço
é
executado.
• Um
acumulador
é
uma
variável
que
recebe
ela
mesma
mais
o
valor
de
outra
variável.
Exemplo:
acum
!
acum
+
num
• Um
acumulador
deve
ser
inicializado
• O
valor
adicionado
ao
acumulador
a
cada
execução
de
laço
é
variável
– Diferente
do
contador,
cujo
valor
adicionado
é
sempre
constante
inicialização
acum ! 0
enquanto (cont <= 10) faça
...
acum ! acum + num acumulação
...
fimenquanto
151
Estrutura
de
RepeIção
Enquanto
• O
Exemplo
2
uIliza
o
pré-‐conhecimento
da
quanIdade
de
números
posiIvos
a
serem
lidos
para
calcular
a
soma.
Entretanto,
se
não
soubéssemos
quantos
números
deveriam
ser
lidos,
o
que
faríamos
para
controlar
o
laço
de
repeIção?
• Precisaríamos
de
um
laço
que
fosse
executado
por
uma
quanIdade
indeterminada
de
vezes.
• Assim,
teríamos
de
encontrar
outro
critério
de
parada,
que
possibilitasse
que
o
laço
fosse
finalizado
após
o
úlImo
número
posiIvo
(independente
de
quantos
sejam)
ter
sido
informado.
• Isso
pode
ser
feito
uIlizando
um
valor
predefinido
como
finalizador,
a
ser
informado
após
o
úlImo
número
posiIvo.
152
Estrutura
de
RepeIção
Enquanto
Exemplo
3
• Elaborar
um
algoritmo
que
efetue
leituras
sucessivas
de
números
inteiros
posiIvos
até
que
um
número
negaIvo
seja
informado.
Ao
final,
apresentar
a
soma
dos
números
posiIvos
informados.
• Diagrama
de
Blocos:
153
Estrutura
de
RepeIção
Enquanto
Exemplo
3
• Português
Estruturado:
programa soma
var
num, acum : inteiro
inicio
acum ! 0
escreva “Numero: ”
leia num
enquanto (num >= 0) faça
acum ! acum + num
escreva “Numero: ”
leia num
fimenquanto
escreva “Soma: ”, acum
fim
154
Estrutura
de
RepeIção
Enquanto
Exemplo
3
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
main () {
int num, acum;
acum = 0;
printf (“Numero: ”);
scanf (“%d”, &num);
while (num >= 0) {
acum = acum + num;
printf (“Numero: ”);
scanf (“%d”, &num);
}
printf (“Soma: %d\n”, acum);
system (“PAUSE”);
}
155
Estrutura
de
RepeIção
Repita
156
Estrutura
de
RepeIção
Repita
• É
uma
estrutura
que
realiza
um
teste
lógico
no
final
do
laço
• Esta
estrutura
tem
o
seu
funcionamento
controlado
por
decisão,
isto
é,
uma
condição,
porém
executa
um
conjunto
de
instruções
pelo
menos
uma
vez
antes
de
verificar
a
validade
da
condição
estabelecida
• O
comando
repita
tem
seu
funcionamento
em
senIdo
contrário
ao
comando
enquanto,
pois
sempre
processa
um
conjunto
de
instruções
no
mínimo
uma
vez
até
que
a
condição
seja
verdadeira
• Se
a
condição
for
falsa,
o
laço
conInua
• Se
a
condição
for
verdadeira,
o
laço
é
encerrado
157
Estrutura
de
RepeIção
Repita
• Na
Linguagem
C,
o
resultado
da
avaliação
da
condição
é
interpretado
de
maneira
inversa
ao
Diagrama
de
Blocos/
Português
Estruturado:
– Se
a
condição
for
verdadeira,
o
laço
conInua
– Se
a
condição
for
falsa,
o
laço
é
encerrado
158
Estrutura
de
RepeIção
Repita
Diagrama
de
Blocos
Português
Estruturado
repita
instruções
ateque (condição)
Linguagem C
do {
instruções;
} while (condição);
159
Estrutura
de
RepeIção
Repita
Exemplo
• Elaborar
um
algoritmo
que
efetue
a
leitura
de
uma
série
de
valores,
representando
os
preços
dos
itens
comprados
por
cliente.
Ao
final,
apresentar
na
tela
o
total
a
ser
pago.
Para
finalizar
a
entrada
de
dados
o
usuário
deve
informar
o
valor
zero.
• Diagrama
de
Blocos:
160
Estrutura
de
RepeIção
Repita
Exemplo
• Português
Estruturado:
programa caixa
var
p, s : real
inicio
s ! 0
repita
escreva “Preco: ”
leia p
s = s + p
ateque (p = 0)
escreva “Total: ”, s
fim
161
Estrutura
de
RepeIção
Repita
Exemplo
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
int main () {
float p, s;
s = 0;
do {
printf (“Preco: ”);
scanf (“%f”, &p);
s = s + p;
} while (p != 0);
printf (“Total: %.2f\n”, s);
system (“PAUSE”);
}
162
Estrutura
de
RepeIção
Para
163
Estrutura
de
RepeIção
Para
• Os
laços
que
possuem
um
número
pré-‐conhecido
de
execuções
poderão
ser
processados
por
meio
da
estrutura
de
repeIção
para
• Esta
estrutura
tem
o
seu
funcionamento
controlado
por
uma
variável
denominada
contador
• Executa
um
determinado
conjunto
de
instruções
certo
número
de
vezes
164
Estrutura
de
RepeIção
Para
Diagrama
de
Blocos
165
Estrutura
de
RepeIção
Para
Português Estruturado
Linguagem C
166
Estrutura
de
RepeIção
Para
Exemplo
• Elaborar
um
algoritmo
que
calcule
a
média
aritméIca
de
3
notas
de
30
alunos
• Diagrama
de
Blocos:
167
Estrutura
de
RepeIção
Para
Exemplo
• Português
Estruturado:
programa media
var
cont : inteiro
n1, n2, n3, m : real
inicio
para cont de 1 até 30 passo 1 faça
escreva “Digite 3 notas”
leia n1, n2, n3
m ! (n1 + n2 + n3) / 3
escreva “Media: ”, m
fimpara
fim
168
Estrutura
de
RepeIção
Para
Exemplo
• Linguagem
C:
#include <stdio.h>
#include <stdlib.h>
int main () {
int cont;
float n1, n2, n3, m;
for (cont = 1; cont <= 30; cont++) {
printf (“Digite 3 notas \n”);
scanf (“%f%f%f”, &n1, &n2, &n3);
m = (n1 + n2 + n3) /3;
printf (“Media: %.2f\n”, m);
}
system (“PAUSE”);
}
169
Linguagem
C
Operadores
de
Incremento
(++)
e
Decremento
(-‐-‐)
• Considere
os
operadores
abaixo
que
não
são
comuns
em
outras
linguagens:
++ incrementa de 1 seu operando
-- decrementa de 1 seu operando
• O
operador
de
incremento
(++)
incrementa
de
um
seu
operando.
Exemplo:
cont++
equivale
a
cont
=
cont
+
1
• O
operador
de
decremento
(-‐-‐)
decrementa
de
um
seu
operando.
Exemplo:
cont-‐-‐
equivale
a
cont
=
cont
-‐
1
• Os
operadores
de
incremento
e
decremento
devem
ser
usados
somente
com
operandos
que
são
variáveis,
isto
é,
o
operando
não
pode
ser
um
valor
constante.
170
Bibliografia
• Manzano,
J.
A.
N.
G.;
Oliveira,
J.
F.
Algoritmos:
Lógica
para
Desenvolvimento
de
Programação
de
Computadores.
21ª
ed.
Ed.
Érica,
2007.
• Forbellone,
A.
L.
V.
Lógica
de
Programação.
2ª
ed.
Ed.
Makron
Books,
2000.
• Evaristo,
J.
Programando
com
PASCAL.
2ª
ed.
2004.
Download:
hŽp://professor.ic.ufal.br/jaime/livros/pascal.htm
• Mizrahi,
V.
V.
Treinamento
em
Linguagem
C
–
Módulo
I.
Ed.
Makron
Books,
1990.
• Schildt,
H.
C
–
Completo
e
Total.
Ed.
Makron
Books,
1995.
171