UNIVERSIDADE GREGÓRIO SEMEDO
Faculdade de Engenharia e Novas Tecnologias
Linguagem C
Conceitos Básicos
www.sousavarela.co.cc
As Origens da linguagem C,
Características da linguagem C,
Interpretação X Compilação,
Estrutura básica de um programa em C,
Tipos de Erro, Códigos Especiais, Conceitos Importantes, Bibliografia. Página 2
Sumário
Origens da linguagem C
A linguagem de programação C foi originalmente projectada para ser implementada no sistema operacional UNIX em um DEC PDP-11;
C é o resultado de um processo de desenvolvimento que começou com uma linguagem mais antiga, chamada BCPL;
A linguagem BCPL influenciou uma linguagem chamada B, inventada por Ken Thompson;
www.sousavarela.co.cc
Origens da linguagem C
O padrão C foi a versão fornecida com o sistema operacional UNIX versão 5;
Com a popularidade dos microcomputadores, um grande número de implementações de C foi criada;
Para remediar a falta de padrão da linguagem C, o ANSI (American National Standards Institute) estabeleceu, em 1983, um comitê para criar um padrão definitivo da linguagem C
Características da Linguagem C
Linguagem dita de médio nível
Linguagem Estrutural;
Fácil portável entre hardwares e sistemas operacionais;
Alta interactividade com o sistema operacional;
www.sousavarela.co.cc
C, uma linguagem para Programadores
O que um programador quer de uma linguagem?
LIBERDADE!
Usando C, um programador pode conseguir aproximadamente a eficiência de código assembly combinada com a programação estruturada;
Linguagens de programação que querem “facilitar” a vida do programador são linguagens:
• pouco académicos,
• pouco profissionais e
• altamente comerciais;
Interpretação VS Compilação
Um interpretador lê linha a linha do código-fonte, o examina sintaticamente e o executa;
Um compilador lê todo programa e o converte em código-objeto (código de máquina) e pronto!
Portanto, a linguagem C é compilada ou Interpretada?
Compilada
A linguagem C possui uma característica peculiar:
www.sousavarela.co.cc
Visão Geral
A geração do programa executável a partir do programa fonte obedece a uma sequência de operações antes de tornar-se um executável
Depois de escrever o módulo fonte em um editor de textos, o programador acciona o compilador
• Essa acção desencadeia uma sequência de etapas
Um programa em C consiste em uma ou várias funções, cuja forma geral é a seguinte
tipo nomeFunc(declaracao dos parametros) { declaracao de variaveis; instrucao_1; ... instrucao_n; return var_tipo; }
Estrutura Básica
Página 10
int main()
{
return 0;
}
Função main( )• Marca o ponto de partida do programa
• Termina quando for encerrada a execução da função
Tipo int
• A função main( ) deverá retornar um número inteiro
int main()
{
return 0;
}
Parênteses
• Permitem que o compilador saiba que se trata de uma função
• Sem parênteses, o compilador poderia pensar que se refere a uma variável
Chaves
• Delimitam o corpo da função
Espaços em Branco
• Não é possível inserir espaços em branco em nomes de funções, operadores, comandos da linguagem e directivas
Página 12
Vamos adicionar duas instruções em nosso programa
#include <stdio.h> #include <stdlib.h> int main() { printf("Primeiro programa.\n"); system("PAUSE"); return 0; }Instruções de programa
A função printf( ) não faz parte da linguagem C
É uma das funções de I/O presente na biblioteca padrão, fornecida com os compiladores C
printf("Primeiro programa.\n");
A função system( ) executa um comando interno do sistema operacional ou um programa (.EXE, .COM ou .BAT)
system("PAUSE");
As funções printf( ) e system( )
Página 14
O pré-processador é um programa que examina o programa fonte em C e executa certas modificações com base em instruções chamadas directivas
As directivas servem para auxiliar no desenvolvimento do programa fonte
A directiva #include provoca a inclusão de um outro arquivo no programa fonte
#include <stdio.h>
#include <stdlib.h>
/*Esse programa mostra o uso de comentários em várias linhas * e mostra também o uso de comentários em uma única linha *
* Primeiro programa *
********************************************************* */ /* Prog1.C */
#include <stdio.h> /* para printf() */ #include <stdlib.h> /* para system() */
int main() /* função main */
{ /* inicio do corpo da função main */
printf("Primeiro programa."); /* chamada a função printf */
system("PAUSE"); /* chamada a função system */
return 0;
}/* fim do corpo da função main */
Comentários
www.sousavarela.co.cc
Estrutura básica de um programa em C
Página 18
Um pouco sobre a função MAIN
A função main é o ponto de entrada de uma aplicação C. Usualmente, um aplicação C se inicia no método main e, a partir dele, invoca diversas outras funções. Por fim, essa função retorna um valor inteiro
Esse valor retornado não é impresso, serve apenas para indicar ao sistema operacional ou para um aplicativo que invocou o seu aplicativo qual foi o código de retorno. Por padrão, o retorno 0
indica que o aplicativo encerrou conforme esperado. Os outros valores podem ser definidos conforme a necessidade de cada aplicação
• Normalmente, valores negativos se referem a erros
Valores de retorno da função MAIN
Neste slide, adopta-se os seguintes valores de retorno:
• 0 - encerramento conforme esperado
• -1 - memória insuficiente
• -2 - argumentos de linha de comando incorrectos
• -3 - problema ao abrir arquivo
Eis algumas palavras reservadas da linguagem C:
auto double int struct
break else long switch
case ebun register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
asm pascal far huge
interrupt near _cs _ds
8/53 Página 20
Processo de compilação
Criar o programa
Compilar o programa
Linkeditar o programa com as funções necessárias da biblioteca
Por utilizarmos uma IDE de desenvolvimento esse processo fica bem mais transparente
Página 22
Mapa de memória em C
Quatro regiões logicamente distintas:
• código do programa
• variáveis globais
• pilha (stack)
• heap
• região de memória livre a ser requisitada (alocação dinâmica)
C versus C++
C++ é uma versão estendida e melhorada da linguagem C que é projectada para suportar programação orientada a objectos
C++ contém e suporta toda a linguagem C e mais um conjunto de extensões orientadas a objectos
Portanto:
• Você não pode programar em C++ se não souber C
• Tudo que aprender da linguagem C, poderá ser utilizado em C++
Compiladores compatíveis?
www.sousavarela.co.cc
Estrutura básica de uma programa em C
#
include <stdio.h>
/* Imprime a mensagem “Hello World” na tela */
int main()
{
printf (“Hello World”);
return 0;
}
Página 24
Directiva de inclusão Biblioteca incluída no programa
Comentário Tipo da Função Nome da Função
Inicio da Função
Função para escrita na consola
Fim da Função
Código sem Legibilidade
#include <stdio.h>
/* Imprime a mensagem
“Hello World” na tela */
int main() {
printf(“
Hello World
”)
;
return
0
;
}
O include não pode ser escrito em linha diferente
www.sousavarela.co.cc
Código sem Legibilidade
#include <stdio.h>
/* Imprime a mensagem
“Hello World” na tela */
int main() {
printf(
Hello World
”)
;
return 0;
}
Página 26Faltam as aspas necessárias Para o printf funcionar
Código com Legibilidade
#include <stdio.h>
/* Imprime a mensagem “Hello World” na tela */
int main()
printf(
“\nHello World”);
return 0;
}
Facilidade para encontrar o erro
www.sousavarela.co.cc
Tipos de erro
Erros são provocados 99,9% da vezes pelo programador.
Existem basicamente dois tipos de erros:
• Lógico, • Sintáctico.
Erro sintáctico é acusado pelo compilador;
• É como uma correcção ortográfica, veja:
Erro sintáctico
Faltou o ;
www.sousavarela.co.cc
Erro Lógico
Caso o compilador não encontre erro de escrita, seu código-fonte será transformado em código-objeto (código de máquina) e você poderá executá-lo;
Porém, se a lógica do programador estiver errada não poderá ser detectado o erro pelo compilador;
Tais erros podem acarretar:
• Saídas repentinas do programa; • Geração de dados inconsistentes; • Acessos indevidos à memória; • Loop infinito;
• etc.
Códigos especiais
Código Significado \b Retrocesso \f Alimentação de formulário \n Nova linha \r Retorno de carro \t Tabulação horizontal \” Aspas duplas \’ Aspas simples \0 Nulo \\ Barra invertida \v Tabulação vertical \a Alertawww.sousavarela.co.cc
Imprimindo um nova linha
#include <stdio.h>
/* Imprime a mensagem “Hello World” na tela */
int main()
{
printf(
“\nHello World”
);
return
0;
}
www.sousavarela.co.cc
Conceitos Importantes
Código-fonte
: O texto de um programa que um usuário pode ler,normalmente interpretado como o programa. É a entrada para o compilador C.
Código-Objeto:
Tradução do código-fonte em código de máquina. O código-objeto é a entrada para o linkeditor.Tempo de compilação
: Os eventos que ocorrem enquanto o seuprograma está sendo compilado.
Tempo de execução:
Os eventos que ocorrem enquanto o seu programa é executado.Bibliografia
MIZRAHI, V. V. “Treinamento em Linguagem C++
Módulo 1”, Makron Books, SP, 1995.