Sei sulla pagina 1di 9

AULA Introdução ao C

OBJETIVO(S):

01 - Introdução ao linguagem C
- Histórico
- Caracteristicas

1.1 Introdução
Esse material visa tratar de uma das mais poderosas linguagens de programação
existentes no mundo da informática. A linguagem C é uma forma fascinante de programar
o computador para realizar as diversas atividades, depois do assembly é a linguagem
mais conhecida. Por ter um código-fonte de alguns kbytes, se tornou a mesma muito
popular no desenvolvimento da microinformática, componentes eletrônicos entre outros.
Vamos aqui conhecer as características da Linguagem C seja a sua portabilidade,
existem no entanto algumas limitações associadas aos diferentes tipos de máquinas
(hardware) disponíveis no mercado.

1.2 Histórico da linguagem C


A Linguagem C foi criada nos laboratórios da BELL Laboratories, por Dennis M. Ritchie e
Ken Thompson, em 1972, com base na Linguagem B, que era uma evolução da
Linguagem BCPL. A Linguagem C veio para eliminar as dificuldades de programação em
Assembly e as limitações do B.
A Linguagem C é uma ferramenta de programação para qualquer tipo de sistema
(sistemas operacionais, compiladores, interpretadores, planilhas eletrônicas, editores de
texto, gerenciadores de banco de dados, sistemas gráficos, sistemas de transmissão de
dados, problemas de engenharia, física, matemática etc.), como exemplo podemos citar o
próprio TURBO C e o TURBO PASCAL.
A Linguagem C prima pela padronização dos compiladores, pela flexibilidade de uso, pela
portabilidade, por apresentar programas compactos e de execução rápida.
C é uma Linguagem de nível médio, pois combina elementos das linguagens de alto nível,
como estrutura de controle, definição de tipos de dados e funções, com elementos de
uma linguagem de baixo nível, como acesso a Bits, Bytes e posições de memória.
Os programas em C são modulares e estruturados permitindo que várias pessoas
desenvolvam partes distintas de um sistema. Em C pode-se criar bibliotecas de funções
para serem utilizadas por outras pessoas.
Alguns fatores fazem de C uma linguagem preferida por programadores tais como:
pequeno tamanho da linguagem, velocidade de execução, tamanho do programa,
portabilidade, uso do assembly, pré-processador.
Apesar de C ser uma linguagem que permite a programação estruturada, semelhante a
Linguagem PASCAL , o programador em C deve saber pensar em C, isto é, deve
programar utilizando as técnicas permitidas pela linguagem.
Em 1983 foi constituído pela ANSI (American National Standards Institute) um comitê para
padronização da Linguagem C.
Após o processo ANSI de padronização, as especificações da linguagem C
permaneceram relativamente estáticas por algum tempo, enquanto que a linguagem C++
continuou a evoluir. (em 1995, a Normative Amendment 1 criou uma versão nova da
linguagem C mas esta versão raramente é tida em conta.) Contudo, o padrão foi
submetido a uma revisão nos finais da década de 1990, levando à publicação da norma
ISO 9899:1999 em 1999. Este padrão é geralmente referido como "C99". O padrão foi
adoptado como um padrão ANSI em Março de 2000. As novas características do C99
incluem:
- Funções em linha
- Remoção de restrições sobre a localização da declaração de variáveis (como em C++)
- Adição de vários tipos de dados novos, incluindo o long long int (para minimizar
problemas na transição de 32-bits para 64-bits), um tipo de dados boolean explicito
(chamado _Bool) e um tipo complex que representa números complexos
- Vetores de dados de comprimento variável (o vetor pode ter um tamanho diferente a
cada execução de uma função, mas não cresce depois de criado)
- Suporte oficial para comentários de uma linha iniciados por //, emprestados da
linguagem C++
- Várias funções de biblioteca novas, tais como snprintf()
- Vários arquivos-cabeçalho novos, tais como stdint.h
O interesse em suportar as características novas de C99 parece depender muito das
entidades. Apesar do GCC e vários outros compiladores suportarem grande parte das
novas características do C99, os compiladores mantidos pela Microsoft e pela Borland
suportam pouquíssimos recursos do C99, e estas duas companhias não parecem estar
muito interessadas em adicionar tais funcionalidades, ignorando por completo as normas
internacionais. A Microsoft parece preferir dar mais ênfase ao C++

2
1.3 MOTIVAÇÃO para Programar em C
Diante da diversidade das linguagens de programação existente, seria necessário um
elevado grau de destaque para conseguir interessar tantos programadores.
Cada linguagem é criada para atingir um objetivo, exemplo:
- COBOL – Processamento de Registros
- PASCAL – Ensino das Técnicas de Programação
- FORTRAN – Cálculo Científico
- LISP e PROLOG – Vocacionadas para as áreas de Inteligência Artificial
Quanto ao C, que área de desenvolvimento se destina?
Resposta – Nenhuma em particular. É aquilo que habitualmente se denomina general
purpose, e esta é uma das suas grandes vantagens, pois adapta-se ao desenvolvimento
de qualquer projeto. Como sistemas operacionais, interfaces gráficas, processamento de
registros, etc. Por incrível que pareça, C é uma linguagem extremamente potente e
flexível, também utilizada para escrever os compiladores de outras linguagens.
Características da linguagem C
Rapidez – Consegue obter performances semelhantes às obtidas pelo Assembly, através
de instruções de alto nível, isto é, fazendo uso de instruções semelhantes às utilizadas
por linguagens como PASCAL ou COBOL, mesmo para usar mecanismo de mais baixo
nível, como o endereçamento de memória ou a manipulação de bits.
Simples – A sua sintaxe é extremamente simples, e o número de palavras reservadas, de
tipos de dados básicos e de operadores e diminutos, reduzindo assim a quantidade de
tempo e esforço necessidade à aprendizagem da linguagem.
Portável – Existe um padrão (ANSI) que define as características de qualquer compilador.
Desse modo, o código escrito numa máquina pode ser transportado para outra máquina e
compilado sem qualquer alteração (ou com um número reduzido de alterações).
Popular – É internacionalmente conhecida e utilizada. Está muito bem documentada em
livros, revistas especializadas, manuais, etc. Existem compiladores para todo tipo de
arquitetura e computadores.
Modular – C permite o desenvolvimento modular de aplicações, facilitando a separação
de projetos em módulos distintos e independentes, recorrendo à utilização de funções
especificas dentro de cada módulo.
Alto Nível – C é considerada uma linguagem de terceira geração, tal como PASCAL,
COBOL, BASIC, ETC, as quais são habitualmente denominadas de alto nível quando
comparadas com a linguagem Assembly C permite ainda, o acesso à maior parte das

3
funcionalidades de Assembly, utilizando expressões e instruções de alto nível. Ou seja é
possível manipular a memória diretamente, utilizando o endereço de qualquer objeto sem
restrição.
Bibliotecas Muito Poderosas – O Fato de C possuir um número reduzido de palavras-
chave indica que as capacidades de C são muito limitadas, e na realidade são. A maior
parte das funcionalidades da linguagem C é adicionada pela utilização de funções que
existem em bibliotecas adicionais e realizam todo tipo de tarefas, desde a escrita de
funções que existem em bibliotecas adicionais e realizam todo tipo de tarefa, desde a
escrita de um caractere na tela até o processamento de string, etc.
Macros – C tem a possibilidade de utilização de Macros no desenvolvimento de
aplicações, reduzindo assim a necessidade de escrita de funções distintas para realização
do mesmo processamento para tipos de dados diferentes. As Macros permitem aumentar
a velocidade de execução sem ter que aumentar a complexidade de escrita do código.
Foco – A linguagem C permite ao programador escrever o código como bem quiser. Um
programa pode ser todo escrito numa única linha ou dividido por inúmeras linhas. A forma
de escrever um código em C depende unicamente do gosto do programador.
Evolução – C é uma linguagem particularmente estável. A evolução das linguagens fez
com que também C evoluísse no sentido das Linguagens Orientadas a Objeto dando
origem a uma nova linguagem C++ (C plus plus), a qual mantém a sintaxe da linguagem
C e um conjunto de características adicionais.
Atualmente, uma nova linguagem – Java – apresenta -se como nova base expandida de
trabalho para os programadores. Também essa linguagem se baseia em C e C++.

1.4 CICLO DE DESENVOLVIMENTO DE UMA APLICAÇÃO EM C


Tradicionalmente, o ciclo de desenvolvimento de uma aplicação engloba quatro fases
distintas

1.4.1 Edição do Código-Fonte


Trabalho realizado pelo programador, o qual deverá escrever o código em arquivos com
extensão .c

1.4.2 Compilação do Programa

4
Uma vez feito o programa o próximo passo é verificar se este foi corretamente escrito
esse processo de compilação é terminado. O programador terá que regressar ao item
anterior e corrigir os erros.
Caso não seja detectado nenhum erro (independentemente de ter emitido Warnings ou
não). O compilador cria um arquivo objeto, com o nome igual ao nome do programa e
extensão .OBJ ou .o (em UNIX).
A maior parte dos compiladores de C existentes para PC utiliza um editor em que o
próprio programa pode ser compilado sem ter que sair do editor para o sistema
operacional.

1.4.3 Linkagem do(s) Objetos(s)


A fases de compilação serve simplesmente para a verificação sintática e para a criação
do arquivo objeto. O arqui vo executável é criado a partir do arquivo objeto, obtido através
do processo de compilação, e através das bibliotecas (extensões .LIB em DOS e .a em
UNIX) que contém código já compilado das funções da própria linguagem C (como o
printf(), scanf(), etc) que são necessárias ao executável final (extensões .EXE) em Dos e
sem extensão em UNIX). O responsável por essa fase é o Linker.
Essa fase permite, assim, juntar num único executável arquivo objeto que tenham como
origem compiladores de diferentes linguagens

Libc.lib
Exemplo.c Exemplo.obj

Exemplo.pas Exemplo.obj
Exemplo.exe

Exemplo.cob Exemplo.obj

Libpas.lib
Código-Fonte Compilação Linkagem
Libcob.lib
O processo de linkagem falha se algum símbolo ou função, utilizada pelo programa, não
for encontrada pelo linker, que no código objeto, quer nas bibliotecas. Nesse caso o
arquivo executável não é criado.
Em geral, quando se compila um programa com um compilador externo( de linha de
comando) este faz todo processo de compilação e linkagem, criando o arquivo executável
em seguida.
5
1.4.4 Execução do Programa
Se o processo de linkagem terminar com sucesso, temos então disponível um arquivo
executável, Se é executável vamos executá-lo, digitando o seu nome.

1.5 A ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Um programa é um conjunto de instruções descritas para realizar uma função ou executar


algo infinitas vezes. Após a elaboração do algoritmo e a construção do fluxograma
correspondente, deverá ser criado o programa, que nada mais é do que a codificação do
problema numa linguagem inteligível ao computador.
Exemplo:
Um programa em PASCAL começa a execução na primeira instrução existente no único
bloco BEGIN ... END que não esteja associado quer a uma função quer a um
procedimento. É absolutamente necessário que esse bloco BEGIN ... END seja único e se
encontre depois de todas as funções e procedimentos.
No caso do COBOL, a execução começa na primeira instrução existente após a linha
PROCEDURE DIVISION.
Um programa em C consiste em uma função principal denominada “main” e de outras
funções.
A seguir temos alguns exemplos de programas em C.
main() Identificação da função principal Este é o menor programa em C, os parênteses
{ Inicio do corpo da função após o nome “main” indicam que esta é uma
} Fim do corpo da função função. O nome de uma função pode ser
qualquer um a não ser o “main” que é
reservado apenas para a função principal, isto
é, a função que inicia a execução do programa.
Toda função inicia com uma chave de abertura
“{“ (abre chave) e termina com uma chave de
fechamento “}“ (fecha chave).

A primeira linha é composta pela palavra main, que é o local onde começam todos os
programas em C.
Para indicar que se trata de uma função, a palavra main é seguida com parênteses –
main() – pois em C qualquer função tem que ser seguida por parênteses.

6
Os parênteses sem mais nada após o nome da função indicam que a função não recebe
qualquer informação do mundo exterior.
É necessário não esquecer que C é Case Sensitive, isto é, faz diferenciação entre
maiúsculas e minúsculas, não sendo portanto a mesma coisa escrever main(), Main(),
MAIN(). Todas as instruções são escritas em letra minúscula, e só devemos utilizar letras
maiúsculas quando desejamos utilizar variáveis, mensagens ou funções escritas por nós.
O código executado pela função main é escrito entre as chaves { } no caso do nosso
programa, como não escrevemos qualquer instrução o programa simplesmente começa e
acaba logo em seguida.
Observação:
Caso o seu compilador apresentar um WARNING como uma messagem semelhante a
“Function should return a value” ou ”main: no return value” é porque, em principio, está-se
usando um compilador de C++. Para o aviso desapareça coloque a palavra void (que
significa nada). Antes da função main.
Neste caso, o programa fica escrito da seguinte forma:
void main()
{
}
É habitual que o primeiro programa escrito em qualquer linguagem seja para fazer a
apresentação da linguagem ao mundo então vamos escrever um programa simples mais
eficiente
EXPRG01:
main() Meu primeiro programa
#include <stdio.h>

main()
{
printf(“Meu primeiro programa”);
}

Neste exemplo foi introduzida uma instrução, que no caso é uma função para impressão
no vídeo; vide anexa sobre funções.
Uma das funções que permite a escrita na tela é a função printf = print + formatado.
Tratando-se também de uma função, por ser escritas com parênteses – printf(). Dentro
dos parênteses é feita a comunicação com a função. Neste caso passamos a string “Meu
primeiro programa”.
7
Toda instrução em C deve obrigatoriamente terminar com um ”;” (ponto e vírgula).
A linha #include <stdio.h> não é C, mas sim uma diretiva que indica ao compilador (mais
propriamente ao pré-processador) que deverá adicionar ao processo de compilação um
arquivo existente em alguma parte no disco do seu computador, chamado stdio.h, de
forma que o compilador tenha acesso a um conjunto de informações sobre as funções
que virá a utilizar.
Esses arquivos tem sempre a extensão .h, pois não tem código, mas apenas os
cabeçalhos (headers) das funções que representam. São por isso habitualmente
designado por headers files.
Desse modo, a linha #include<stdio.h> significa “adiciona o arquivo stdio.h ao meu
programa”. Exatamente nessa posição. Como não é uma instrução de C, não é seguida
de ;.
O arquivo stdio.h permite o acesso a todas as funções de entrada e saídas normais; stdio
quer dizer standard input/output.

1.5.1 Caractere Especial ( \ )


O símbolo \ é utilizado para retirar o significado especial que um caractere apresenta. No
caso do caractere aspas (“), retira-lhe o significado de delimitador, passando a ser
considerado simplesmente como o caractere aspas.
No caso do \n (e outros), serve para representar um caractere que , de outro modo, seria
difícil ou quase impossível representar.
A tabela a seguir mostra esses códigos
\7 Bell (Sinal Sonoro) \\ Caractere \
\a Bell (Sinal Sonoro) \’ Caractere ‘ (aspas simples)
\b Retrocesso (BackSpace) \” Caractere “ (aspas)
\n New Line (Mudança de linha) <Enter> \? Caractere ? (Ponto de Interrogação)
\r Carriage Return – (Retorno do Carro) \000 Caractere ASCII em Octal
\t Tabulação Horizontal \XNN Caractere ASCII em Hexadecimal
\v Tabulação Vertical %% Caractere %

Vejamos alguns exemplos:


EXPRG02:
#include <stdio.h>
main()
{
printf(“Linguagem\nC\n e poderosa\n”);
}

8
EXPRG031:
#include <stdio.h>
main()
{
printf(“Hoje é um “grande” dia !!! \n”);
}
Ora, acontece que esse programa vai originar um erro de compilação, uma vez que tudo
aquilo que queremos escrever deverá estar entre aspas.
O compilador detecta que após a string a ser escrita (“Hoje é um”) existe algo mais, além
do fecho da string, e emite um erro de sintaxe.
A resolução se dá através da colocação dos caracteres especiais de aspas:
EXPRG032:
#include <stdio.h>
main()
{
printf(“Hoje é um \“grande\” dia !!! \n”);
}

1.6 COMENTÁRIOS DO PROGRAMA


Comentários em C podem ser colocados em qualquer parte do programa, necessitando
apenas iniciar com “/*” (barra asterisco) e terminar com “*/“ (asterisco barra) ou // (duas
barras) no inicio do comentário; por exemplo:
/* Exemplo de um programa em C
Com o uso de comentários */
main() /*função principal*/
{
printf("meu segundo programa em C"); // função de impressão
}

1.7 EXERCICIOS DE FIXAÇÃO


1.7.1 Qua l a função que deve estar presente em todos os programas em C?
1.7.2 Como devem terminar todas as instruções em C?
1.7.3 Como é delimitado um bloco em C?
1.7.4 Qual o significado de stdio?

Potrebbero piacerti anche