You are on page 1of 19

Universidade de Brasília

Engenharia de Redes de Comunicação

Computação para
Engenharia
Aula 7

Prof. Marcelo M. de Carvalho


mmcarvalho@unb.br
   
A Linguagem C

Resultado da evolução de duas linguagens:
− “BCPL” e “B”

BCPL - Basic Combined Programming Language
− 1967 – Martin Richards
− Linguagem para escrever sistemas operacionais e
compiladores

B
− (1970) – Ken Thompson
− Primeiras versões do sistema operacional UNIX
− Criada no Bell Laboratories

BCPL e B são linguagens sem definição de “tipos
de dados”:
   
− Não há diferença entre um dado ser “real” ou “inteiro”
A Linguagem C

Evolução da linguagem “B”

1972 – Dennis Ritchie do Bell Laboratories em
um DEC PDP – 11 (que utilizava UNIX)

Descrito no livro “The C Programming Language”
de Brian Kernighan and Dennis Ritchie

Muitas variações de implementações do C levou à
sua padronização

1983 – American National Standards Institute
(ANSI):
− Padrão aprovado em 1989
− Padrão ANSI/ISO 9899: 1990

   
A Linguagem C

Frequentemente chamada de linguagem de “nível
médio”:
− Combina elementos de linguagem de alto nível com a
funcionalidade da linguagem assembly
− Permite a manipulação de bits, bytes e endereços
− Permite o conceito de “tipos de dados”, comum às
linguagens de programação de alto nível.

Tipo de dado:
− Define conjunto de valores que uma variável pode
armazenar e o conjunto de operações que pode ser
executado com essa variável.

   
A Linguagem C

É uma linguagem estruturada:
− Permite a compartimentalização do código e dos dados
− Permite seccionarmos e escondermos do resto do
programa todas as informações necessárias para se
realizar uma tarefa específica

Programas em C compartilham seções de código!

Uso de sub-rotinas que empregam variáveis locais
(temporárias)

Uso de variáveis locais permite escrever sub-
rotinas nas quais os eventos que ocorrem dentro
delas não causam efeitos inesperados em outras
partes do programa
   
A Linguagem C

A principal componente estrutural de C é a função

Funções:
− Blocos de construção em que toda a atividade do
programa ocorre
− Admitem que você defina e codifique, separadamente,
as diferentes tarefas de um programa
− Após ser criada, pode-se esperar que ela trabalhe
adequadamente em várias situações, sem criar efeitos
inesperados em outras partes do programa

Bloco de código:
− Grupo de comandos de programa conectado
logicamente, tratado como uma unidade
− Em C, um bloco de código é criado colocando-se uma
 
sequência de comandos entre
 
chaves
A Biblioteca C Padrão

Em princípio, você pode programar todas as
funções necessárias para seu programa...

MAS, todo compilador C vem com uma rica
biblioteca de funções em C que realizam as tarefas
mais básicas!

Dois aprendizados:
− Aprender a própria linguagem C
− Aprender a usar as funções da biblioteca padrão!

Programar em C é ...
− Usar as funções da biblioteca padrão
− Criar suas próprias funções
− Utilizar funções que outras pessoas criaram e
   
disponibilizaram
Fases de Execução

Programas em C atravessam 6 fases para serem
executados:
− Edição:
− Pré-processamento
− Compilação
− Linkedição (“Link”)
− Carregamento
− Execução

Edição:
− Através do uso de um editor de programas (ex: vi,
emacs, etc.)

Nomes de arquivos terminados com extensão .c
− Programa armazenado em  dispositivo de memória
 
secundária
Fases de Execução

Pré-Processamento
− Incia-se logo após o comando de “compilar”
− Pré-processador executado antes da fase de tradução
propriamente dita
− Pré-processador C obedece a comandos especiais
chamados de diretivas ao pré-processador:

Certas manipulações feitas no programa antes da
compilação

Manipulações = inclusão de outros arquivos, troca de
símbolos especiais por texto de programa, etc.

Compilação:
− Tradução do programa em C para linguagem de
máquina
  − Criação do código-objeto do
  programa
Fases de Execução

Linkedição:
− Programas em C contém referências a outras funções
definidas na biblioteca padrão ou em outras bibliotecas
particulares
− O código-objeto produzido pelo compilador contém
“buracos” devido a estas partes “perdidas”
− A linkeditor (“linker”) combina o código que você
escreveu com o código-objeto já encontrado na
biblioteca padrão para criar uma imagem executável!

Em sistemas UNIX:
− Comando para compilar e linkeditar um programa: cc
− Se o programa compilar e linkeditar corretamente, um
arquivo chamado a.out é criado.

   
Carregamento

Carregamento:
− Antes de ser executado, o programa deve ser carregado
na memória principal do computador
− Isto é feito pelo carregador, que transfere a imagem
executável do disco para a memória principal

Execução:
− CPU lê cada instrução e a executa

   
O Primeiro Programa em C!

Imprimindo uma linha de texto:

/* Primeiro Programa */

main()
{
     printf(“Bem­vindo ao C!\n”);
}

   
Dissecando o primeiro programa...

main() - deve estar em todo programa C!!!
− Parênteses indicam que main é uma função
− Programas em C contêm uma ou mais funções: uma
delas deve ser a main()!

As chaves {} delimitam o corpo de cada função

Bloco de código:
− O par de chaves e a porção de programa entre as
chaves definem o bloco.

printf – imprime uma mensagem na tela
− Uma das funções da biblioteca padrão!

\n = “newline”:
− Sequência de escape que   posiciona o cursor no início da
 
próxima linha na tela
Sequências de Escape

\n = newline.
− Posiciona o cursor no início da próxima linha

\t : tab horizontal.
− Move o cursor para a próxima parada do tab

\r : carriage return.
− Posiciona o cursor no início da linha atual; não avança
para a próxima linha

\a : alerta;
− Toca um beep

\\ : Imprime o caractere barra invertida em uma
instrução printf

  \” : Imprime o caractere   asps
Algumas Variações...
/* Primeiro Programa */

main()
{
   printf(“Bem­vindo “);
   printf(“ao C!\n”);
}

   
Algumas Variações...
/* Primeiro Programa */

main()
{
   printf(“Bem­vindo\n ao\n C!\n“);
}

   
Adicionando dois números
/* Adicao de dois numeros */
#include <stdio.h>
main()
{
    int inteiro1, inteiro2, soma; /* declaracao */
    printf(“Entre com primeiro numero\n”);
    scanf(“%d”, &inteiro1);
    printf(“Entre com segundo numero\n”);
    printf(“%d”, &inteiro2);
    soma = inteiro1 + inteiro2;
    printf(“Soma = %d\n”, soma);
    return 0;
   
}
Dissecando...

#include <stdio.h>:
− Diretiva para o pré-processador C
− Linhas que começam com # são processadas pelo pré-
processador antes do programa ser compilado
− Neste caso específico, instrui o pré-processador para
incluir o conteúdo do arquivo de cabeçalho de entrada e
saída da biblioteca padrão C

int inteiro1, inteiro2, soma
− Declaração de variáveis
− inteiro1, inteiro2 e soma são variáveis

Nomes de variáveis em C:
− Qualquer conjunto de letras, dígitos e sublinhado (_)
− Apenas os 31 primeiros caracteres serão reconhecidos
   
pelo compilador C
Dissecando...

Scanf
− Recebe valores da entrada padrão
− Usualmente o teclado

Primeiro argumento: controle de formato
− Indica o tipo de dado que deve ser entrado pelo usuário
− O especificador de conversão %d indica que deve ser
um inteiro

Segundo argumento:
− Informa a posição na memória na qual a variável
inteiro1 está armazenada

Return:
− O valor zero indica ao sistema operacional que o
   
programa executou com sucesso.

You might also like