Anda di halaman 1dari 7

FUNDAO EDSON QUEIROZ

UNIVERSIDADE DE FORTALEZA

LINGUAGEM C
Nesta aula sero vistos os fundamentos da linguagem C. O conceito de linguagem de
programao, linguagens de alto e baixo nvel, linguagens genricas e especificas. Ser visto
um pouco do histrico da criao da linguagem e a descrio das caractersticas mais
importantes da linguagem C. Finalmente, ser visto o aspecto geral de um cdigo fonte escrito
em C.

1 Linguagens de Programao

Um programa de computador um conjunto instrues que representam um algoritmo para a


resoluo de algum problema. Estas instrues so escritas atravs de um conjunto de
cdigos (smbolos e palavras). Este conjunto de cdigos possui regras de estruturao lgica
e sinttica prpria. Dizemos que este conjunto de smbolos e regras formam uma linguagem
de programao.

1.1 Exemplos de cdigos.

Existem muitas linguagens de programao. Podemos escrever um algoritmo para resoluo


de um problema por intermdio de qualquer linguagem. A seguir mostramos alguns exemplos
de trechos de cdigos escritos em algumas linguagens de programao.

Exemplo: trecho de um algoritmo escrito em Pseudo-linguagem que recebe um nmero


num e escreve a tabuada de 1 a 10 para este valor:
leia num
para n de 1 at 10 passo 1 faa
Inicio
tab num * n;
imprime tab;
fim faa

Exemplo: trecho do mesmo programa escrito em linguagem C


scanf(&num);
for (n = 1; n <= 10; n++)
{
tab = num * n;
printf(\n %d, tab);
};
Exemplo: trecho do mesmo programa escrito em linguagem Basic:
10 input num
20 for n = 1 to 10 step 1
30 let tab = num * n
40 print chr$ (tab)
50 next n
FUNDAO EDSON QUEIROZ
UNIVERSIDADE DE FORTALEZA

Exemplo: trecho do mesmo programa escrito em linguagem Fortran:


read (num);
do 1 n = 1:10
tab = num * n
write(tab)
10 continue

Exemplo: trecho do mesmo programa escrito em linguagem Assembly para INTEL 8088:
MOV CX,0
IN AX,PORTA
MOV DX,AX
LABEL:
INC CX
MOV AX,DX
MUL CX
OUT AX, PORTA
CMP CX,10
JNE LABEL

1.2 Linguagens de baixo e alto nvel.

Podemos dividir, genericamente, as linguagens de programao em dois grandes grupos: as


linguagens de baixo nvel e as de alto nvel:

Linguagens de baixo nvel: So linguagens voltadas para a mquina, isto , so escritas


usando as instrues do microprocessador do computador. So genericamente chamadas de
linguagens Assembly.

Vantagens: Programas so executados com maior velocidade de processamento. Os


programas ocupam menos espao na memria.

Desvantagens: Em geral, programas em Assembly tm pouca portabilidade, isto , um cdigo


gerado para um tipo de processador no serve para outro. Cdigos Assembly no so
estruturados, tornando a programao mais difcil.

Linguagens de alto nvel: So linguagens voltadas para o ser humano. Em geral utilizam
sintaxe estruturada tornando seu cdigo mais legvel. Necessitam de compiladores ou
interpretadores para gerar instrues do microprocessador. Interpretadores fazem a
interpretao de cada instruo do programa fonte executando-a dentro de um ambiente de
programao, Basic e AutoLISP por exemplo. Compiladores fazem a traduo de todas as
instrues do programa fonte gerando um programa executvel. Estes programas executveis
(*.exe) podem ser executados fora dos ambientes de programao, C e Pascal por exemplo.
As linguagens de alto nvel podem
FUNDAO EDSON QUEIROZ
UNIVERSIDADE DE FORTALEZA

se distinguir quanto a sua aplicao em genricas como C, Pascal e Basic ou


especficas como Fortran (clculo matemtico), LISP (inteligncia artificial) ou CLIPPER
(banco de dados).

Vantagens: Por serem compiladas ou interpretadas, tem maior portabilidade podendo


ser executados em varias plataformas com pouqussimas modificaes. Em geral, a
programao torna-se mais fcil por causa do maior ou menor grau de estruturao de suas
linguagens.

Desvantagens: Em geral, as rotinas geradas (em linguagem de maquina) so mais


genricas e portanto mais complexas e por isso so mais lentas e ocupam mais memria.

2 Linguagem C

A linguagem C uma linguagem de alto nvel, genrica. Foi desenvolvida por programadores
para programadores tendo como meta caractersticas de flexibilidade e portabilidade. O C
uma linguagem que nasceu juntamente com o advento da teoria de linguagem estruturada e
do computador pessoal. Assim tornou-se rapidamente uma linguagem popular entre os
programadores. O C foi usado para desenvolver o sistema operacional UNIX, e hoje esta
sendo usada para desenvolver novas linguagens, entre elas a linguagem C++ e Java.

2.1 Caractersticas do C

Principais caractersticas:

O C uma linguagem de alto nvel com uma sintaxe bastante estruturada e flexvel
tornando sua programao bastante simplificada.
Programas em C so compilados, gerando programas executveis.
O C compartilha recursos tanto de alto quanto de baixo nvel, pois permite acesso e
programao direta do microprocessador. Com isto, rotinas cuja dependncia do tempo
crtica, podem ser facilmente implementadas usando instrues em Assembly. Por esta
razo o C a linguagem preferida dos programadores de aplicativos.
O C uma linguagem estruturalmente simples e de grande portabilidade. O compilador C
gera cdigos mais enxutos e velozes do que muitas outras linguagens.
Embora estruturalmente simples (poucas funes intrnsecas) o C no perde funcionalidade
pois permite a incluso de uma farta quantidade de rotinas do usurio. Os fabricantes de
compiladores fornecem uma ampla variedade de rotinas pr-compiladas em bibliotecas.

2.2 Histrico

1970: Denis Ritchie desenha uma linguagem a partir do BCPL nos laboratrios da Bell
Telephones, Inc. chama a linguagem de B.
FUNDAO EDSON QUEIROZ
UNIVERSIDADE DE FORTALEZA

1978: Brian Kerningham junta-se a Ritchie para aprimorar a linguagem. A nova verso
chama-se C. Pelas suas caractersticas de portabilidade e estruturao j se torna popular
entre os programadores.
~1980: A linguagem padronizada pelo American National Standard Institute: surge o ANSI
C.
~1990: A Borland International, fabricante de compiladores profissionais escolhe o C e o
Pascal como linguagens de trabalho para o seu Integrated Development Enviroment
(Ambiente Integrado de Desenvolvimento): surge o Turbo C.
~1992: O C se torna ponto de concordncia entre tericos do desenvolvimento da teoria de
Object Oriented Programming (programao orientada a objetos): surge o C++.

3 Estrutura de um programa em C

Um programa em C constitudo de:

um cabealho contendo as diretivas de compilador onde se definem o valor de constantes


simblicas, declarao de variveis, incluso de bibliotecas, declarao de rotinas, etc.
um bloco de instrues principal e outros blocos de rotinas.
Maisculas so diferentes de minsculas (Case Sensitive);
Bloco uma seqncia de comandos delimitados por chaves { };
Delimitador de comando o ponto e vrgula ; ;
Comentrios aparecem delimitados por /* */ (em C++ // comenta at fim de linha)

Declarao de Variveis: <tipo> <var>;


Ex.: char x=A; int j; float x,y;

Formato de um programa: C no tem sees predefinidas para definio de


identificadores. Usualmente um programa segue o formato:

[ <Diretivas de Incluso>
<Declaraes Globais: Variveis, Prottipos de Funes, Estruturas, Classes, etc>
]
<tipo> main (<parametros>)
{
<Programa Principal>
}
[ <Implementao de Funes> ]
FUNDAO EDSON QUEIROZ
UNIVERSIDADE DE FORTALEZA

Programa Exemplo:

/* Propsito: Uso da funo scanf() */

#include <stdio.h> // biblioteca das funes scanf() e printf()


void main(){
char nome[40];
int cod;
float preco;
int dia,mes,ano;

// leitura individual
printf("\nDigite o nome do item: "); // texto de aviso (prompt)
scanf("%s",nome); // leitura do dado
printf("Digite o cdigo do item: ");
scanf("%d",&cod);
printf("Digite o preo do item: ");
scanf("%f",&preco);
}

Exerccio Proposto:
Faa um programa que leia 2 nmeros reais e imprima a mdia aritmtica entre eles.

3.1 Conjunto de caracteres

Um programa fonte em C um texto no formatado escrito em um editor de textos usando


um o conjunto padro de caracteres ASCII. A seguir esto os caracteres utilizados em C:

Caracteres vlidos:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1234567890
+-*/\=|&!?#%(){}[]_.,:<>

Caracteres no vlidos:
@$

Os caracteres acima so vlidos apenas em strings.

3.2 Comentrios

Em C, comentrios podem ser escritos em qualquer lugar do texto para facilitar a


interpretao do algoritmo. Para que o comentrio seja identificado como tal, ele deve ter
um /* antes e um */ depois.
FUNDAO EDSON QUEIROZ
UNIVERSIDADE DE FORTALEZA

Exemplo:
/* esta e uma linha de comentrio em C */

Observao: O C++ permite que comentrios sejam escritos de outra forma: colocando um //
em uma linha, o compilador entender que tudo que estiver direita do smbolo um
comentrio. Observe no programa exemplo primeiro.cpp as linhas de comentrios colocadas
a direita dos comandos.

Exemplo:
// este um comentrio vlido apenas em C++

3.3 Diretivas de Compilao

Em C, existem comandos que so processados durante a compilao do programa. Estes


comandos so genericamente chamados de diretivas de compilao. Estes comandos
informam ao compilador do C basicamente quais so as constantes simblicas usadas no
programa e quais bibliotecas devem ser anexadas ao programa executvel. A diretiva
#include diz ao compilador para incluir na compilao do programa outros arquivos.
Geralmente estes arquivos contem bibliotecas de funes ou rotinas do usurio. Voltaremos a
trabalhas esta diretiva com mais detalhe nas prximas aulas. A diretiva #define diz ao
compilador quais so as constantes simblicas usadas no programa.

3.4 Declarao de variveis

Em C, como na maioria das linguagens, as variveis devem ser declaradas no inicio do


programa. Estas variveis podem ser de vrios tipos: int (inteiro), float (real de simples
preciso) e outras que sero vistas nas prximas aulas. No exemplo acima num, raiz, inf e
sup so declaradas como variveis reais, enquanto i declarada como uma varivel inteira.

3.5 Entrada e sada de dados

Em C existem varias maneiras de fazer a leitura e escrita de informaes. Estas operaes


so chamadas de operaes de entrada e sadia. Veremos nas prximas aulas algumas
funes de entrada e sadia de informaes via teclado e tela. Outras funes de leitura e
escrita em arquivos, sadia grfica, funes de manipulao de mouse, entrada e

sadia de informaes via portas serial e paralela sero vistas em captulos posteriores. No
exemplo acima printf uma funo de escrita na tela, scanf uma funo de leitura de
teclado.

3.6 Estruturas de controle

A linguagem C permite uma ampla variedade de estruturas de controle de fluxo de


processamento. Estas estruturas sero vistas em detalhes nas prximas aulas. Duas
FUNDAO EDSON QUEIROZ
UNIVERSIDADE DE FORTALEZA

estruturas das estruturas bsicas (deciso e repetio) so muito semelhantes as estruturas


usadas nas Pseudo-linguagem algortmicas:

Estrutura de Deciso:

Pseudo-linguagem Linguagem C
se condio if(condio){
ento bloco 1 bloco 1;
seno bloco 2 }else{
fim se bloco 2;
};

Estrutura de Repetio: Permite executar repetidamente um bloco de instrues ate que


uma condio de controle seja satisfeita.

Pseudo-linguagem Linguagem C
faa do{
bloco bloco;
at condio }while(condio);