Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
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ção
Exercí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