Curso de C - IC

Propaganda
Curso de C
Introdução
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
Introdução
Roteiro:
•
•
•
•
•
•
Recordando Algoritmos
Linguagem de Programação
O computador
Instruções de Máquina
Níveis de Abstração
Compilação
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
Algoritmos
Recordando:
Algoritmo: conjunto finito de instruções
–
–
–
–
Começa com a primeira instrução
Execução seqüencial, uma instrução de cada vez
Possibilidade de saltos para outras instruções
Sempre alcança a instrução PARE, que termina o
algoritmo.
Utiliza dados (entrada) e gera um resultado
(saída)
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
Algoritmos
Exemplo:
Calcular o máximo divisor comum
Algoritmo em Português
Início
Condição
Fim
Salto
1.
1. Leia
Leia dois
dois números.
números.
2.
2. Divida
Divida oo primeiro
primeiro pelo
pelo segundo
segundo ee guarde
guarde oo resto.
resto.
3.
3. Se
Se oo resto
resto for
for 00 (zero),
(zero), então
então escreva
escreva oo segundo
segundo
número
número ee PARE.
PARE.
4.
4. Substitua
Substitua oo primeiro
primeiro número
número pelo
pelo segundo.
segundo.
5.
5. Substitua
Substitua oo segundo
segundo número
número pelo
pelo resto
resto da
da divisão.
divisão.
6.
6. Retorne
Retorne ao
ao passo
passo 2.
2.
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Entrada
Saída
Curso C - IC/UNICAMP
Algoritmos
Características:
• Cada instrução do algoritmo precisa ser:
– Não ambígua
– Uma única operação bem definida
– Tecnologicamente viável
• Necessidade de representação:
– Diagramas
– Uma linguagem específica para escrever algoritmos
– Linguagens de programação
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
Algoritmos
Exemplo:
Calcular o máximo divisor comum
Algoritmo em Português
1.
1. Leia
Leia dois
dois números.
números.
2.
2. Divida
Divida oo primeiro
primeiro pelo
pelo segundo
segundo ee guarde
guarde oo resto.
resto.
3.
3. Se
Se oo resto
resto for
for 00 (zero),
(zero), então
então escreva
escreva oo segundo
segundo
número
número ee PARE.
PARE.
4.
4. Substitua
Substitua oo primeiro
primeiro número
número pelo
pelo segundo.
segundo.
5.
5. Substitua
Substitua oo segundo
segundo número
número pelo
pelo resto
resto da
da divisão.
divisão.
6.
6. Retorne
Retorne ao
ao passo
passo 2.
2.
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Potencialmente
ambíguo
Instrução não está
bem definida
Curso C - IC/UNICAMP
Linguagem de Programação
Opções de representar algoritmos:
• Diagramas
• Uma linguagem específica para escrever
algoritmos
• Linguagens de programação
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
Linguagem de programação
Conceitos:
• A linguagem de programação é um
veículo para se escrever algoritmos.
• Características:
– Vocabulário restrito
– Regras de sintaxe
– Recursos automáticos de verificação da
sintaxe da linguagem
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
Exemplo
Exemplo:
Calcular o máximo divisor comum
Linguagem de Programação
Início
Entrada
Saída
Fim
int
int a,
a, b,
b, r;
r;
scanf(“%d
scanf(“%d %d”,
%d”, &a,
&a, &b);
&b);
do
do {{
rr == aa %% b;
b;
if
if (r
(r ==
== 0)
0) break;
break;
aa == b;
b;
bb == r;
r;
};
};
printf(“O
printf(“O MDC
MDC éé %d”,
%d”, a);
a);
return;
return;
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Palavra chave
Símbolos específicos
de operações
Regra: ponto-e-virgula
após cada operação
Curso C - IC/UNICAMP
O Computador
Conceitos:
• Realiza processamento
sobre dados armazenados
no computador.
• Executa operações
matemáticas e lógicas sobre
dados.
• Recebe dados do meio
externo (entrada)
• Apresenta os resultados
para o meio externo (saída)
Armazenamento
memória, fitas,
discos, CDs
Processamento
Entrada
Teclado, mouse,
rede, scanner,
webcam, câmera
digital...
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Saída
Monitor,
impressora,
caixa de som
Curso C - IC/UNICAMP
O Computador
Instruções de Máquina:
• Representam operações
sobre dados.
• Encontram-se em
formato digital (código
de máquina)
O computador é uma
máquina rápida e eficiente
para simular algoritmos!
Armazenamento
dados
Processamento
Entrada
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
resultados
instruções
Saída
Curso C - IC/UNICAMP
O Computador
Exemplo: Calcular o máximo divisor comum
Início
Entrada
Condição
Salto
Saída
Fim
Instruções de Máquina
IN
IN ax
ax
IN
IN bx
bx
divisao:
divisao:
MOV
MOV dx,
dx, 00
DIV
DIV bx
bx
CMP
CMP dx,
dx, 00
JE
JE fim
fim
MOV
MOV ax,
ax, bx
bx
MOV
MOV bx,
bx, dx
dx
JMP
JMP divisao
divisao
fim:
fim:
OUT
OUT bx
bx
HLT
HLT
Detalhes do computador:
Controle de circuito eletrônico
Descrição detalhista
Representação pouco
intuitiva
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
Níveis de Abstração
Dois casos extremos:
• Português:
– Complexo e trabalhoso
– Única forma aceita pelo
computador
– Preciso, bem definido
– Envolve detalhes específicos
do computador, irrelevantes
para o algoritmo
Ling. Programação
Instrução Computador
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Código de Máquina
abstração
• Código de máquina:
Português
complexidade
– Fácil, intuitivo
– Computador não entende
– Ambíguo, mal definido
Curso C - IC/UNICAMP
Níveis de Abstração
Objetivos:
complexidade
Português
Ling. Programação
Instrução Computador
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Código de Máquina
abstração
• Descrição precisa do
algoritmo
• Independente das
características do
computador
• Nível de complexidade
intermediário!
Curso C - IC/UNICAMP
Construção do Programa
Construir:
• Passo 1: Elaborar um algoritmo
• Passo 2: Reescrever o algoritmo em C
• Passo 3: Acionar o compilador para gerar
o programa executável.
Algoritmo
Programador
Programa
C
Compilador
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Programa
Executável
Curso C - IC/UNICAMP
Construção do Programa
Testar:
• Passo 4: Testar o programa
• Erros? Verificar programa em C
• Continuam erros? Verificar o algoritmo!
Algoritmo
Programador
Programa
C
Compilador
Programa
Executável
Erros?
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Introdução
Fim do Capítulo
Copyright @ 2005 by Arnaldo V.
Moura e Daniel F. Ferber
Download