Você está na página 1de 55

Linguagem C

Laysson Oliveira Luz


Departamento de Computao
layssonluz@ufpi.edu.br

Contedo

Introduo

Tipos de dados

Entrada e Sada de dados

Operadores e Expresses

Estruturas de controle

Introduo

Linguagem Estruturada (Imperativa)

Obter informaes a serem processadas

Armazenar informaes temporariamente

Manipular as informaes

Exibir o resultado para o usurio

Elementos Bsicos

Funes de entrada de dados

Tipos de dados, variveis e constantes

Manipular as informaes

Operadores e Expresses

Desvios condicionais

Laos

Funes

Sada de dados

Histrico

Linguagem desenvolvida na dcada de 60


No propriamente uma linguagem de alto
nvel
Utilizada para o desenvolvimento do Sistema
Operacional UNIX
Padronizao ANSI

Programa em C

Um programa em C um conjunto de uma ou


mais funes
Estas funes podem estar todas em um
mesmo arquivo ou dividas por vrios arquivos
Todo programa em C deve ter uma funo
chamada main, onde comea a execuo do
programa

Compilao
Arquivo fonte (arquivo com extenso .c)

Compilao
Arquivo fonte (arquivo com extenso .c)

Pr-Processador
Programa fonte + definies de
bibliotecas

Compilao
Arquivo fonte (arquivo com extenso .c)

Pr-Processador
Programa fonte + definies de bibliotecas

Compilador
Programa objeto (arquivo com
extenso .o)

Compilao
Arquivo fonte (arquivo com extenso .c)

Pr-Processador
Programa fonte + definies de bibliotecas

Compilador
Programa objeto (arquivo com
extenso .o)
Linkeditor
Programa executvel (arquivo com extenso
.exe)

Compilao com vrios .C


Arquivo fonte 1

Arquivo fonte 2

Arquivo fonte 3

Pr-Processador

Pr-Processador

Pr-Processador

Compilador

Compilador

Compilador

Linkeditor
Programa executvel (arquivo com extenso
.exe)

Bibliotecas

Algumas funes desenvolvidas em programas


podem ser agrupadas em bibliotecas para
serem utilizadas por outros programas
Algumas bibliotecas so padronizadas:

Entrada e sada

Funes Matemticas

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (Entre com a base e a altura: );
scanf (%f %f, &base, &altura);
area = (base * altura) / 2;
printf (A rea do retngulo %f\n, area);
}

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (Entre com a base e a altura: );
scanf (%f %f, &base, &altura);
area = (base * altura) / 2;
printf (A rea do retngulo %f\n, area);
}

Comentrios.
O compilador ignora
todo texto aps a
sequncia
de caracteres /**/

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (Entre com a base e a altura: );
scanf (%f %f, &base, &altura);
area = (base * altura) / 2;
printf (A rea do retngulo %f\n, area);
}

Definio da funo
principal. Entre chaves
ficam declaraes de
variveis e chamadas de
funes

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (Entre com a base e a altura: );
scanf (%f %f, &base, &altura);
area = (base * altura) / 2;
printf (A rea do retngulo %f\n, area);
}

Comando de captura
de entrada de dados
do teclado. %f informa que
espera-se nmeros reais.Os
dados capturados sero
armazenados em base e altura.

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (Entre com a base e a altura: );
scanf (%f %f, &base, &altura);
area = (base * altura) / 2;
printf (A rea do retngulo %f\n, area);
}

Definio de 3 variveis de
nmero real. Toda varivel
deve ser declarada antes de
ser utilizada

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (Entre com a base e a altura: );
scanf (%f %f, &base, &altura);
area = (base * altura) / 2;
printf (A rea do retngulo %f\n, area);
}

Calcula uma expresso


aritmtica e armazena o
resultado na varivel rea.

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (Entre com a base e a altura: );
scanf (%f %f, &base, &altura);
area = (base * altura) / 2;
printf (A rea do retngulo %f\n, area);
}

Funes de sada de dados


por meio do monitor. Na
segunda chamada o %f
serve para indicar que
naquele lugar ser impresso
o valor da varivel area.

Exemplo de programa em C
/* Programa de clculo da rea de um tringulo */
#include <stdio.h>
main()
{
float area, base, altura;
Linhas);
iniciadas por #, servem para
printf (Entre com a base e a altura:

scanf (%f %f, &base,

importar bibliotecas. A biblioteca stdio.h


Disponibiliza as funes printf e scanf.
&altura);

area = (base * altura) / 2;


printf (A rea do retngulo %f\n, area);
}

Tipos de dados

Caracteres

Char

Nmeros inteiros

Short

Int

Long

Nmeros reais

Float

Double

Endereos de memria

Peculiaridades

A quantidade de memria ocupada por um dado de


um tipo determina quais valores podem ser
armazenados
No h uma definio padronizada em C para o
tamanho dos tipos de dados
Depende:

da mquina

do compilador

da verso do compilador

Variveis

Os nomes de variveis podem comear com


letras (a..z, A..Z) ou com o caracter underscore
( _ ).
O restante do nome pode conter letras, dgitos
ou underscores.
Letras maisculas e minsculas so diferentes.

Declarao de Variveis

Toda varivel deve ser declarada antes de ser


utilizada.
Sintaxe da declarao de varivel:

tipo nome;

possvel declarar mais de uma varivel do mesmo


tipo separando os nomes por vrgulas.
As declaraes de variveis devem sempre vir aps
o abre chaves do bloco, antes dos comandos.
No possvel misturar declaraes e comandos

Exemplo de declarao
main()
{
int i, j;
char carac, resp;
unsigned long _var;
float real;
double REAL;
... comandos ...
}

Atribuio

Para atribuir valor a uma varivel usa-se o


operador de atribuio: =
Sintaxe:
varivel = expresso;

A atribuio pode ser feita junto com as


declaraes ou junto com os comandos.
Juntos dos comandos possvel fazer
atribuies mltiplas.

Exemplo de atribuio
{
/* junto com as declaraes */
int i = 10, j;
char a, b = k, c;
float u, x = 1.5e10, y = 2.6;
/* junto com os comandos */
a = c = M;
/* a e c recebem M */
j = i;
/* j recebe o valor de i */
u = x * 2 + y /4;
}

Entrada de Sada de dados

H diversas funes para fazer entrada e sada


de dados em C.
Estas funes pertencem a biblioteca de
entrada e sada padro.
Sempre que uma destas funes for utilizada
deve-se incluir no programa as definies do
arquivo stdio.h:
#include <stdio.h>

Printf

Imprime textos e dados dos tipos bsicos da linguagem


C no formato especificado pelo programador.
Sintaxe:
printf (controle, arg1, arg2, ..., argn);

Onde o controle uma cadeia de caracteres contendo:

texto a ser exibido

controles de impresso

formatos de impresso

Controles de Impresso

Caracteres especiais e caracteres sem representao


grfica.
Mais comuns:

\n - new line

\f - form feed

\ - aspas

\0 - NULL

\t - tabulao

\b - backspace

\\ - contrabarra

Formatos de Impresso
%[-][0][tamanho][.preciso][l,h]{d,o,x,u,c,s,e,f,g}

%d - decimal

%o octal

%c - caracter

%s - cadeia de caracteres

%x - hexadecimal

%u - decimal com sinal

%% - caracter porcento

%f - real (ponto flutuante)

%e - real (notao exponencial)

%g - real (menor notao)

%ld - decimal longo

%hd - decimal short

%lf - double

Scanf

L qualquer dos tipos bsicos de dados para uma ou mais


variveis.
Os argumentos TM que ser variveis e devem ser
antecedidos pelo caracter e-comercial (&).
Sintaxe:
int scanf (controle, &arg1, &arg2, ..., &argn);

onde:

controle uma cadeia de caracteres indicando os dados que


devem ser lidos. Ela composta por caracteres comuns e
formatos de leitura.

Scanf

Espaos, tabs e newlines so ignorados.


Formatos de leitura indicam os tipos dos dados
passados como argumentos e so semelhantes aos
formatos de impresso
Sintaxe:
%{d,o,x,u,c,s,e,f,g}

O valor de retorno da funo o nmero de dados lidos.


Todos os caracteres (salvo os do formato) que estiverem
no controle devem ser digitados.

Entrada e sada de caracteres

Funes:

char getchar();

putchar(char);

Exemplo:

char c;

c = getchar();

putchar(c);

scanf(%c,&c);
printf(%c,c);

So funes mais rpidas que o scanf e o printf.

Operadores e Expresses

Expresses:

Combinao de operandos e operadores para obter um


resultado. Exemplo: expresso aritmtica.

Operandos podem ser variveis, constantes,


funes ou outras expresses.
Os operandos devem ter tipos compatveis entre si.
Assim como os operandos, o resultado da
expresso tambm tem um tipo definido de acordo
com o tipo dos operandos.

Operadores aritmticos

Operadores aritmticos:
/

diviso

multiplicao

soma

subtrao

resto da diviso inteira

Precedncia de Operadores
I. () []
II. ! ~ ++ &
III. * / %
IV. + V. >> <<
VI. < <= >= >
VII. == !=
VIII. &
IX. ^
X.

XI. &&
XII. ||
XIII. ? :
XIV. Atribuio ( = )

Incremento e Decremento
++i =

i=i-1

Termitem gerar um cdigo mais compacto e eficiente que as


expresses equivalentes.
Notao prefixa: ++i --i

--i =

i=i+1

operadores com grande precedncia

Notao posfixa:

i++

i--

a operao s realizada aps o clculo do resto da expresso


que a contm

Operadores bit a bit

Operaes lgicas bit a bit e deslocamentos:

& (and)

^ (xor)

| (or)

~ (not)

<< (shift left)

>> (shift right)

Operadores relacionais

> maior que

>= maior ou igual

== igual a

< menor que

<= menor ou igual

!= diferente

Exemplo :
char sexo;
int eh_mulher;
eh_mulher = sexo == M;

No confundir com:
eh_mulher = sexo = M;

Operadores lgicos

Permitem a combinao de duas expresses


relacionais

&& (and)

||(or)

! (not)

Desvios condicionais

Permitem condicionar a execuo de um trecho


de programa ao resultado de uma expresso.
Em C h 3 formas de desvio condicional:

comando if

operador condicional ternrio

comando switch

IF

Condiciona a execuo de um comando ao resultado de


uma expresso.
Sintaxes:
if (expr)
comando;
if (expr)
comando1;
else
comando2;

IF

costume colocar o comando ligeiramente


deslocado em relao a linha do comando if
A identao facilita a compreenso da lgica do
programa
if (a == b)
printf (s executa se a == b\n);
printf (sempre vai ser executado\n);

Operador condicional ternario

Utilizador para substituir linhas de comando na


forma:
if (expr1)
var = expr2;
else
var = expr3;

Sintaxe
expr1 ? expr2 : expr3

Switch

Serve para selecionar entre vrios resultados possveis de uma expresso

Sintaxe:
switch (expr)
{
case constante1:
comandos;
case constante2:
comandos;
default:
/* opcional */
comandos;
}

Switch

O computador compara o resultado de expr com


cada uma das constantes.
Se o resultado for igual a alguma constante
comea a executar os comandos a seguir ao
caracter :
A execuo continua inclusive pelos comandos de
outros cases
Se houver algum comando break, o computador
passa a executar o prximo comando aps o switch

Laos

So estruturas utilizadas quando necessrio


repetir um trecho de programa um determinado
nmero de vezes
Em C h 3 formas de Laos (ou loops):

while

for

do ... while

While

Sintaxe:
while (expr)
comando;

Executa o comando (ou bloco de comandos)


enquanto a expresso tiver o valor verdadeiro
(ou seja, valer qualquer coisa diferente de zero)

For

Costuma ser utilizado para repetir comandos um


nmero fixo de vezes
Sintaxe:
for (expr1; expr2; expr3)
comando;

onde:

expr1 - serve para inicializao

expr2 - condio

expr3 - varia o valor testado na condio

Do...While

utilizado para fazer um while que deve ser


executado pelo menos uma vez
Sintaxe:
do
comandos;
while (expr);

Comando goto

Desvia a execuo do programa para um local


identificado por um rtulo.
Sintaxe:
goto rotulo;
...
rotulo:
comando;

Deve ser evitado ao mximo pois pode gerar programas


ininteligveis

Comando break

Interrompe a execuo de :

switch

while

for

do ... while

Equivale a um goto para o primeiro comando


aps o switch ou os laos

Comando continue

Interrompe a iterao atual de um lao (while,


for, do...while) e passa para a prxima iterao.
Nos laos while e do...while equivale a um goto
para o teste da condio de parada.
No lao for equivale a um goto para a terceira
expresso.

Você também pode gostar