Buscar

Algo e estrutura de dados cap01 introducao

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

16-Mar-09 
2:05 PM
1
Curso de C
Introdução
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
2
Introdução
• Compreender:
– Como funciona o processo de 
desenvolvimento de um programa
– Como transformar um algoritmo em um 
programa executável
– A diferença entre diversas linguagens de 
programação e níveis de abstração
Objetivos:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
3
Introdução
• Recordando Algoritmos
• Linguagem de Programação
• O computador
• Instruções de Máquina
• Níveis de Abstração
• Compilação
Roteiro:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
4
Algoritmos
Algoritmo: conjunto finito de instruções
– Usualmente, começa com a primeira instrução
– Execução seqüencial, uma instrução de cada vez, 
com possibilidade de saltos para outras instruções
– Instruções individuais suficientemente elementares, 
ou primitivas
– Sempre deve alcançar uma instrução PARE, para 
terminar a execução do algoritmo.
Utiliza dados (entrada) e gera um resultado 
(saída)
Recordando:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
5
Algoritmos
Algoritmo em PortuguêsAlgoritmo em Português
1. Leia dois números.
2. Divida o primeiro pelo segundo e guarde o resto.
3. Se o resto for diferente de 0 (zero), 
então salta para passo 5
4. Escreva o segundo número e PARE.
5. Substitua o primeiro número pelo segundo.
6. Substitua o segundo número pelo resto da divisão.
7. Retorne ao passo 2.
1. Leia dois números.
2. Divida o primeiro pelo segundo e guarde o resto.
3. Se o resto for diferente de 0 (zero), 
então salta para passo 5
4. Escreva o segundo número e PARE.
5. Substitua o primeiro número pelo segundo.
6. Substitua o segundo número pelo resto da divisão.
7. Retorne ao passo 2.
Início
Fim
Condição
Salto
Entrada
Saída
Exemplo: Calcular o máximo divisor comum
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
6
Algoritmos
– Não ambígua
– Uma única operação bem definida
– Tecnologicamente viável
• Representações possíveis:
– Diagramas
– Modelos matemáticos
– Linguagens de programação
• Cada instrução precisa ser:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
7
Algoritmos
Algoritmo em PortuguêsAlgoritmo em Português
1. Leia dois números.
2. Divida o primeiro pelo segundo e guarde o resto.
3. Se o resto for diferente de 0 (zero), 
então salta para passo 5
4. Escreva o segundo número e PARE.
5. Substitua o primeiro número pelo segundo.
6. Substitua o segundo número pelo resto da divisão.
7. Retorne ao passo 2.
1. Leia dois números.
2. Divida o primeiro pelo segundo e guarde o resto.
3. Se o resto for diferente de 0 (zero), 
então salta para passo 5
4. Escreva o segundo número e PARE.
5. Substitua o primeiro número pelo segundo.
6. Substitua o segundo número pelo resto da divisão.
7. Retorne ao passo 2.
Potencialmente 
ambíguo
Não é uma única 
instrução bem 
definida
Exemplo: Calcular o máximo divisor comum
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
8
Linguagem de Programação
• Diagramas
• Uma linguagem específica para escrever 
algoritmos
• Linguagens de programação
Opções de representar algoritmos:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
9
Linguagem de programação
– 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
• Conceito:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
10
Exemplo
Linguagem de ProgramaçãoLinguagem de Programação
int a, b, r;
scanf(“%d %d”, &a, &b);
do {
r = a % b;
if (r == 0) break;
a = b;
b = r;
};
printf(“O MDC é %d”, a);
return;
int a, b, r;
scanf(“%d %d”, &a, &b);
do {
r = a % b;
if (r == 0) break;
a = b;
b = r;
};
printf(“O MDC é %d”, a);
return;
Início
Entrada
Saída
Fim
Símbolos específicos
de operações
Palavra chave
Regra: ponto-e-virgula 
após cada operação
Exemplo: Calcular o máximo divisor comum
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 11
O Computador
• 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
Processamento
Entrada Saída
Teclado, mouse, 
rede, scanner, 
webcam, câmera 
digital...
Monitor, 
impressora, 
caixa de som
memória, fitas, 
discos, CDs
Conceito:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 12
O Computador
• Representam primitivas 
operações sobre dados.
• Em formato digital 
próprio (código de 
máquina)
Entrada Saída
Armazenamento
Processamento
dados resultados
instruções
O computador é uma máquina rápida e eficiente
para simular algoritmos!
O computador é uma máquina rápida e eficiente
para simular algoritmos!
Instruções de Máquina:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
13
O Computador
Instruções de MáquinaInstruções de Máquina
IN ax
IN bx
divisao:
MOV dx, 0
DIV bx
CMP dx, 0
JE fim
MOV ax, bx
MOV bx, dx
JMP divisao
fim:
OUT bx
HLT
IN ax
IN bx
divisao:
MOV dx, 0
DIV bx
CMP dx, 0
JE fim
MOV ax, bx
MOV bx, dx
JMP divisao
fim:
OUT bx
HLT
Início
Entrada
Saída
Fim
Condição
Salto
Detalhes do computador:
Controle de circuito eletrônico
Descrição detalhista
Representação pouco 
intuitiva
Exemplo: Calcular o máximo divisor comum
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
14
Níveis de Abstração
• Português:
– Fácil, intuitivo
– Computador não entende
– Ambíguo, mal definido
• Linguagem de Máquina:
– Complexo e trabalhoso
– Única forma aceita pelo 
computador
– Preciso, bem definido
– Envolve detalhes específicos 
do computador, irrelevantes 
para o algoritmo
Português
Ling. Programação
Instrução Computador
Linguagem de Máquina
c
o
m
p
l
e
x
i
d
a
d
e
ab
stração
Dois casos extremos:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
15
Níveis de Abstração
– Descrição precisa do algoritmo
– Independente do computador
– Nível de complexidade 
intermediário!
Português
Ling. Programação
Instrução Computador
Linguagem de Máquina
c
o
m
p
l
e
x
i
d
a
d
e
ab
stração
Objetivos:
>
Linguagem de programação
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
16
Construção do Programa
• Passo 1: Elaborar um algoritmo
• Passo 2: Reescrever o algoritmo em C
• Passo 3: Acionar o compilador
CompiladorProgramador
Algoritmo
Programa
C
Programa
Executável
>
Copyright @ 2005--2009 by ArnaldoV. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
17
Construção do Programa
• Passo 4: Testar o programa
Erros? Verificar programa em C
Continuam erros? Verificar o algoritmo!
CompiladorProgramador
Algoritmo
Programa
C
Programa
Executável
Erros?
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
16-Mar-09 
2:05 PM
18
Curso de C
Primeiro Programa
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
19
Primeiro Programa
• Compreender:
– O modelo genérico usado para escrever 
programas na linguagem C
Objetivos:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
20
Primeiro Programa
• O primeiro programa em C
• Estrutura do código fonte
– Comentários
– Diretivas de compilador
– Procedimento principal
• Estilo do código fonte
Roteiro:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 21
Exemplo
// PrimeirosPassos.c: Nosso primeiro programa em C
#include <stdio.h> // mais um comentario
#include <stdlib.h>
int main(int argc, char* argv[]) {
printf("O primeiro programa lhe deseja um bom dia!");
return 0;
}
O Programa “Bom Dia”:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 22
Estrutura do Código Fonte
// PrimeirosPassos.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
printf("bom dia!");
return 0;
}
Comentários
Diretivas de 
compilador
Procedimento 
principal
InstruçãoInstrução
Pontuação
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
23
Estrutura do Código Fonte
• Texto ignorado pelo compilador
• Documentação útil para descrever trechos do algoritmo
• Possível em qualquer posição do código fonte
• Duas formas para comentários:
• Uma linha: // Comentário ...
• Várias linhas: /* Comentário...
mais comentários ... */
// PrimeirosPassos.c: Nosso primeiro programa em C
/* PrimeirosPassos.c: Nosso primeiro programa em C */
/* PrimeirosPassos.c: 
Nosso primeiro programa em C */
Comentários:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
24
Estrutura do Código Fonte
• Informam outros arquivos que devem ser 
consultados antes de compilar
• Definem parâmetros utilizados pelo compilador
• Colocadas no início do código fonte
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
Diretivas de Compilador:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
25
Estrutura do Código Fonte
• Seqüência de instruções
• Pontuação: ponto-e-vírgula termina instruções
• Chaves agrupam instruções relacionadas
int main(int argc, char* argv[]) {
printf("bom dia!");
return 0;
}
Procedimento principal:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
26
Estrutura do Código Fonte
• Siga sempre o seguinte esqueleto:
Procedimento principal:
int main(int argc, char* argv[]) {
...
Algoritmo
...
return 0;
}
Obrigatório
Obrigatório
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
27
Estrutura do Código Fonte
• Linhas em branco são ignoradas
int main(int argc, char* argv[]) {
printf("bom dia!");
return 0;
}
int main(int argc, char* argv[]) {
printf("bom dia!");
return 0;
}
(recomendado)
(permitido)
Práticas interessantes:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
28
Estrutura do Código Fonte
• Espaços e tabulações são ignoradas
int main(int argc, char* argv[]) {
printf("bom dia!"); return 0;
}
(permitido,
mais confuso)
int main(int argc, char* argv[]) {
printf("bom dia!");
return 0;
}
(recomendado)
Práticas interessantes:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
29
Estrutura do Código Fonte
• De preferência, uma instrução por linha
int main(int argc, char* argv[]) {
printf("bom dia!"); return 0;
}
(permitido,
mais confuso)
int main(int argc, char* argv[]) {
printf("bom dia!");
return 0;
}
(recomendado)
Práticas interessantes:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
16-Mar-09 
2:05 PM
30
Curso C
Primeiro Programa no 
Microsoft Visual Studio .net
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
31
Primeiro Programa
• Aprender a:
– Usar o Visual Studio para escrever, salvar e 
compilar seu programa
Objetivos:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
32
Primeiro Programa
• Criar um novo projeto
• Escrever o programa
• Compilar
• Executar
Roteiro:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
33
Primeiro Programa
• Criar um projeto para cada programa!
• Um projeto contém:
– Arquivos em Linguagem de Programação
– Configuração
– Programa compilado 
• Projeto: 
– tipo e recursos disponíveis:
– Interface Gráfica
– Ferramentas adicionais de programação
Projeto Visual Studio:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
34
Primeiro Programa
1
2 3
Criar projeto:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 35
1
2
3
Primeiro Programa
Escolher tipo de projeto:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 36
Primeiro Programa
Configurar projeto:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 37
Primeiro Programa
Configurar projeto:
1 2
3
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 38
Primeiro Programa
Adicionar arquivo de código fonte:
1
2
3
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 2:05 PM 39
Primeiro Programa
Adicionar arquivo de código fonte:
1
2
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
40
Primeiro Programa
Abrir o arquivo que armazenará o 
código fonte: 
1. Duplo-clicar sobre o nome do 
arquivo: “main.c”
2. O conteúdo do arquivo é
mostrado na tela.
Editar código fonte:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
41
Primeiro Programa
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber
Curso C - IC/UNICAMP
16-Mar-09 
2:05 PM
42
Primeiro Programa
Executar:
>
Copyright @ 2005--2009 by Arnaldo V. Moura e Daniel F. Ferber

Outros materiais