Buscar

Aula03_Compilacao_erros_indentacao_AP

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

Universidade Federal da Grande Dourados
Faculdade de Ciências Exatas e de Tecnologias
Curso de Bacharelado em Sistemas de Informação
Algoritmos e Programação
Compilação de programas - Laboratório
Profª Janne Oeiras Lachi
1
Code::Blocks
` É um ambiente de desenvolvimento integrado de código 
aberto e multiplataforma. 
` É um IDE, do inglês Integrated Development Environment
ou Ambiente Integrado de Desenvolvimento
` É um programa de computador que reúne características 
e ferramentas de apoio ao desenvolvimento de software 
com o objetivo de agilizar este processo.
` Tem código aberto
` Disponível para download em:
` http://www.codeblocks.org/
` http://www.codeblocks.org/user-manual (em inglês)
Dev-C++
` Uma opção para você instalar no seu computador em 
casa
` Também é um ambiente de desenvolvimento integrado 
de código aberto para programação em C e C++ 
` Disponível para download em:
` http://www.bloodshed.net/dev/devcpp.html
Criando um arquivo no Code::Blocks
novo
Criando um arquivo
Escolher
“empty file”
Algoritmos em Português estruturado
` Em Português estruturado, todos os algoritmos começam 
com a palavra programa para denominar o algoritmo, tem a 
palavra início e terminam com a palavra fim. 
programa MÉDIA
var
RESULTADO: caractere
NI, N2, N3, N4: real
SOMA, MÉDIA: real
início
leia NI, N2, N3, N4
SOMA Å NI + N2 + N3 + N4
MÉDIA Å SOMA/4
se (MÉDIA >= 7) então
RESULTADO Å “aprovado”
senão
RESULTADO Å “reprovado”
fim_se
escreva “Nota 1: ”, N1
escreva “Nota 2: ”, N2
escreva “Nota 3: ”, N3
escreva “Nota 4: ”, N4
escreva “Soma: ”, SOMA
escreva “Média ”, MÉDIA
escreva “Resultado: ”, RESULTADO
fim
programa <nome>
.
.
.
início
<comando 1>
<comando 2>
.
.
.
<comando n>
fim
Corpo mínimo de um algoritmo
Programas em C
` Também possuem um “corpo mínimo”
` Todos os programas devem conter minimamente a estrutura abaixo
` “main ( )” representa o ponto inicial do programa, equivalente ao “início”
do Português estruturado
` “int” é o tipo do valor que o programa retorna ao Sistema Operacional 
para indicar que a sua execução foi encerrada corretamente
` Após o “main ( )”, temos um abre chaves “{” e um fecha chaves “}” para 
indicar o corpo da função onde os comandos serão colocados
` “return 0;” é o comando que retorna o valor indicando o sucesso ou não 
do programa. O número zero indica o sucesso.
int main() 
{
return 0;
}
Nosso primeiro programa: não faz nada
1. Abrir o codeblocks.
2. Abrir um novo arquivo vazio.
3. Digitar o programa ao lado.
4. Salvar com o nome prog_nada.c
5. ‘Rodar’ o programa:
ou F9
int main() 
{
return 0;
}
Nosso primeiro programa: não faz nada
Após digitar o código e salvá-lo com o 
nome prog_nada.c
Compilar, linkar e rodar o programa:
ou F9
Nosso primeiro programa: não faz nada
Aperte qualquer tecla para continuar
Nosso segundo programa: Hello World!
#include <stdio.h>
int main() 
{
printf("Hello World!\n");
return 0;
}
Abrir um novo arquivo vazio.
Digitar o programa acima.
Salvar com o nome hello_world.c
Rodar o programa:
ou F9
Nosso segundo programa: Hello World!
Aperte qualquer tecla para continuar
Imprimiu “Hello world!”
Construção de programas em C
` Escrita do algoritmo
` Português estruturado, Diagrama de blocos, Diagrama de Chapin
` Edição do programa em C
` Uso do Code::Blocks ou Dev
` Compilação e edição de ligações do programa
` Compilação
` Verifica se há erros léxicos, sintáticos ou semânticos e dá as respectivas 
mensagens de erros
` Produz um arquivo objeto com a extensão “.o” (object file) em código de 
máquina, mas não necessariamente executável
` Edição de Ligações
` O arquivo objeto resultante da compilação precisa ser ligado a outros 
arquivos objetos que contenham funções ou variáveis utilizadas pelo 
programa e que pertençam a outros módulos
` Gera o arquivo “.exe” (arquivo executável)
` Teste e depuração do programa
Menu Build do Code Blocks
` Opções
` Compile current file
` Faz a etapa de compilação
` Produz um arquivo com a extensão “.o” (object file) que não é
executável
` Build:
` Compila e “linka”
` Gera o arquivo “.exe” (arquivo executável)
` Run: executa o código executável que foi 
gerado.
` Build and run: compila, “linka” e executa 
o código executável (.exe)
Erros de compilação
` Léxicos
` Sintáticos
` Semânticos
Análise léxica
` Objetivo: identificar as principais seqüências de caracteres 
que constituem unidades léxicas (tokens)
` Funcionamento:
` Lê, caractere a caractere, o texto fonte, verificando se os 
caracteres lidos pertencem ao alfabeto da linguagem, 
identificando tokens e desprezando comentários e brancos 
desnecessários.
` Palavras reservadas da linguagem, delimitadores, identificadores 
etc.
Vamos causar um erro léxico
` No exemplo abaixo, vamos escrever um caractere estranho 
“<”no meio do código
` Exemplo de Mensagem de erro:
#include <stdio.h>
int main() 
{
<
printf("Hello World!\n");
return 0;
}
4|error: syntax error before '<' token| 
Build finished: 1 errors, 0 warnings
Vamos causar um erro léxico
` No exemplo abaixo, vamos escrever de modo errado o 
identificador mensagem. O # não pode fazer parte do nome 
do identificador.
` Exemplo de Mensagem de erro:
#include <stdio.h>
int main() 
{
char mensagem#;
printf("Hello World!\n");
return 0;
}
4|error: syntax error at '#' token|
Build finished: 1 errors, 0 warnings
Análise sintática
` Objetivo: verificar se a estrutura gramatical do 
programa está correta (isto é: se a estrutura foi 
usada usando as regras da linguagem);
Vamos causar um erro sintático
` No exemplo abaixo, vamos retirar o nome do módulo depois 
da diretiva #include
` Exemplo de mensagem de erro:
#include
int main() 
{
printf("Hello World!\n");
return 0;
}
1|#include expects "FILENAME" or <FILENAME>
Build finished: 1 errors, 0 warnings
Vamos causar um erro sintático
` No exemplo abaixo, vamos retirar o fecha chaves da última 
linha
` Exemplo de mensagem de erro:
1. #include <stdio.h>
2. s
3. int main() 
4. {
5. printf("Hello World!\n");
6. return 0;
7. s
7|error: syntax error at end of input
Build finished: 1 errors, 0 warnings
Análise semântica
` Objetivo: verificar se as estruturas do programa irão fazer 
sentido durante a execução
` Ex.: se um identificador declarado como variável é usado como 
tal, se existe compatibilidade entre operandos e operadores 
em expressões...
Análise semântica: exemplo de erro
1. #include <stdio.h>
2. #include <stdlib.h>
3.
4. #define ano 2010
5. #define curso "Bacharelado em Sistemas de Informacao"
6. int main ()
7. {
8. ano = 2011;
9. printf("Ano: %d\n", ano);
10. printf("Curso: %s\n", curso);
11. system("PAUSE");
12. return 0;
13.}
8 C:\Testes\Constantes.c invalid lvalue in assignment
O erro ocorre porque ano é uma constante e não pode 
ter o seu valor mudado ao longo do programa.
Análise semântica: exemplo de erro
1. #include <stdio.h>
2. #include <stdlib.h>
3.
4. int main ()
5. {
6. int a=5;
7. float b= 2.5;
8. printf(“Resultado: %f\n", a%b);
9. system("PAUSE");
10. return 0;
11.}
8 invalid operands of types `int' and `float' to binary `operator%' 
O erro ocorre na linha 8 porque a é uma variável do tipo inteiro 
e b é do tipo real. O operador de módulo (%) só funciona com 2 
operandos do tipo inteiro.
Indentação
` Consiste na inserção de espaços, parágrafos etc. em um 
código de linguagem de programação (Dicionário Aulete)
Indentação
` Objetivos:
` Dar legibilidade ao código;
` Facilitar a compreensão do código por outras pessoas;
Código sem indentaçãoExercício 1
` Copie para o Code::Blocks os códigos a seguir seguindo 
a indentação estabelecida neles.
` Depois compile e execute os programas para verificar se 
eles foram digitados corretamente e erros não foram 
gerados.
` Se houver erros, depure o programa.
Código 1
Código 2
Código 3
Referências
` Ulysses de Oliveira. Programando em C. D. Rio de Janeiro; 
Editora Ciência moderna, 2008
` Slides da Profª Valguima Odakura
` Patterson, Hennessy. Organização e Projeto de 
Computadores – A Interface Hardware/Software. 
Editora Campus. 2005
` Ascencio, A. F. G. Campos, E. A. V. Fundamentos da 
programação de computadores. Pearson/Prentice Hall, 
2ª ed. 2007. 
31
	Algoritmos e Programação
	Code::Blocks
	Dev-C++
	Criando um arquivo no Code::Blocks
	Criando um arquivo
	Algoritmos em Português estruturado
	Programas em C
	Nosso primeiro programa: não faz nada
	Nosso primeiro programa: não faz nada
	Nosso primeiro programa: não faz nada
	Nosso segundo programa: Hello World!
	Nosso segundo programa: Hello World!
	Construção de programas em C
	Menu Build do Code Blocks
	Erros de compilação
	Análise léxica
	Vamos causar um erro léxico
	Vamos causar um erro léxico
	Análise sintática
	Vamos causar um erro sintático
	Vamos causar um erro sintático
	Análise semântica
	Análise semântica: exemplo de erro
	Análise semântica: exemplo de erro
	Indentação
	Indentação
	Exercício 1
	Código 1
	Código 2
	Código 3
	Referências

Outros materiais