Baixe o app para aproveitar ainda mais
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
Compartilhar