Você está na página 1de 76

SISTEMAS DE PROGRAMAO I

UNIDADE 2 PROGRAMAO BSICA EM C


TURMA: Perodo
DISCIPLINA: Sistemas de Programao I
PROFESSOR: Pedro Pacheco Bacheti
pedro.exercicios@gmail.com
www.sites.google.com/site/professorengpedro

Cariacica (ES), Setembro de 2014.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

COMANDOS E PALAVRAS RESERVADAS


________________________________________________________________________________
A linguagem C possui um conjunto de 32 palavras reservadas que constituem os comandos e declaraes
possveis dentro da linguagem e no podem ser redefinidas dentro do programa.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

ESTRUTURA BSICA DE UM PROGRAMA


________________________________________________________________________________
A estrutura bsica de um programa em linguagem C pode ser exemplificada conforme listagem abaixo:

// Incluso de arquivos externos


// Declarao de variveis globais

// Declarao de prottipos de funes

Qualquer programa em C deve possuir estas


estruturas.

A funo principal (main, em ingls) contm o

// Funes

corpo principal do programa e a primeira

// Funo principal [main]

funo a ser executa quando o programa


iniciado.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

ESTRUTURA BSICA DE UM PROGRAMA


________________________________________________________________________________
EXEMPLO 1:

void main (void)


{

char a, b, c;
c = 0x41;
a = 10;

// comentrio 1

b = a + 5;

/* comentrio */

c += b;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

TIPOS DE DADOS
________________________________________________________________________________
A linguagem C dispes basicamente de 03 tipos de dados:

Inteiros: podem ser sinalizados (positivos ou negativos) ou no sinalizados (somente positivos).

Reais: podem representar tanto valores inteiros como fracionrios.

Nulos: (void)

utilizado para declarao de funes que no retornam e / ou no recebem valores

(parmetros) e tambm para declarao de ponteiros genricos.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

TIPOS DE DADOS
________________________________________________________________________________
A linguagem C, prev ainda o uso de modificadores de tipo:

short: para reduzir a faixa de representao do tipo.

long: para ampliar a faixa de representao do tipo.

signed: para especificar a representao de valores sinalizados( utilizando o formato de complemento de


dois).

unsigned: para especificar a representao de valores no sinalizados.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

TIPOS DE DADOS
________________________________________________________________________________

O padro ANSI considera que um tipo de base sempre signed (com sinal), a no ser que seja expressamente
declarado como unsigned (sem sinal).
A exceo o tipo char, deixado em aberto pela norma ANSI.

Em muitos compiladores, o tipo char , por padro, unsigned, a no ser que seja declarado como signed.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

TIPOS DE DADOS
________________________________________________________________________________
TIPOS E SUBTIPOS BSICOS
TIPO

SUBTIPO

FAIXA DE VALORES

TAMANHO (Bytes)

Unsigned char, char

0 a 255

Signed char

-128 a 127

Unsigned short int

0 a 65.535

short int, signed short int

-32.768 a 32.767

Unsigned int, unsigned long int

0 a 4.294.967.295

Int, signed int, long int, signed long int

-2.147.483.648 a 2.147.483.647

Float

3,4 x 1038 (7 dgitos)

Double

1,7x 10308 (15 dgitos)

Inteiros

Reais

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

TIPOS DE DADOS
________________________________________________________________________________

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


DECLARAO DAS VARIVEIS
________________________________________________________________________________
As variveis em C devem ser sempre declaradas no incio do programa, de uma funo ou de um bloco de

programa.
O identificador (nome) da varivel pode ter qualquer tamanho ( normalmente so reconhecidos os 31 primeiros
caracteres) e deve obedecer s seguintes regras:
-

O identificador deve conter somente letras, nmeros e o caractere sublinhado _. Isso significa que no
permitido utilizar smbolos ou acentos nos identificadores.

O identificador deve iniciar por uma letra ou sublinhado. _

Letras maisculas e minsculas so diferentes em linguagem C (isso significa que o identificador TESTE
diferente do identificador teste)

Um identificador no pode ser igual a uma palavra reservada ou um nome de funo definida no programa.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

TIPOS DE DADOS
________________________________________________________________________________
EXEMPLO 2:

int teste;

// declara uma varivel inteira chamada teste

unsigned int minha_variavel; // declara uma varivel inteira sem sinal

char primeiro, segundo;

// declara duas variveis do tipo char

float _resultado;

// declara uma varivel real chamada _resultado

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS
___________________________________________________________________
EXEMPLO 1:

EXERCICOS DE FIXAO

1) Tomando como referncia o EXEMPLO 1


e a tabela ASCII, qual o caractere presente
na varivel c?

void main (void)


{
char a, b, c;
c = 0x41;
a = 10;
// comentrio 1
b = a + 5;
/* comentrio */
c += b;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

TIPOS DE DADOS
________________________________________________________________________________
EXERCICOS DE FIXAO

2) Tomando como referncia o EXEMPLO 2 mostre a faixa de valores possveis e o tamanho necessrio a ser
alocado para cada varivel.

a) int teste
b) unsigned int minha_variavel
c) char primeiro, segundo
d) float _resultado

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS
________________________________________________________________________________
EXERCICOS DE FIXAO
3) Execute o cdigo abaixo e responda qual o tamanho de cada tipo de varivel nos itens de a a f.
CDIGO:

#include "utility.h"
#include "ansi_c.h"

void main(void)
{
_1 = sizeof(teste1); printf("\nchar = %u\n",_1);
_2 = sizeof(teste2); printf("\nshort int = %u\n",_2);

unsigned int _1, _2, _3, _4, _5, _6;

_3 = sizeof(teste3); printf("\nlint = %u\n",_3);

char teste1;
short int teste2;
int teste3;
long int teste4;
float teste5;
double teste6;

_4 = sizeof(teste4); printf("\nlong int = %u\n",_4);


_5 = sizeof(teste5); printf("\nfloat = %u\n",_5);
_6 = sizeof(teste6); printf("\ndouble = %u\n",_6);
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS
________________________________________________________________________________
EXERCICOS DE FIXAO
3) Qual o tamanho de cada tipo de varivel?

a) char

b) short int
c) int
d) long int
e) float
f)

double

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS
________________________________________________________________________________
OUTROS MODIFICADORES

Alm dos modificadores de tipo j comentados, a linguagem C dispe de outros com caractersticas mais
especficas:

auto: especifica uma varivel automtica ou local. Esse especificador j no mais utilizado, pois todas as
variveis declaradas dentro de uma funo ou bloco de programa so consideradas locais, independente do
seu uso.

const: utilizado para declarar uma constante (varivel cujo valor no pode ser alterado pelo programa). Tais
variveis podem ser armazenadas na memria FLASH.

extern: utilizado para fazer referncias a variveis globais declaradas em outros mdulos do programa.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS
________________________________________________________________________________
OUTROS MODIFICADORES

register: solicita ao compilador que tente armazenar a varivel em um registrador da CPU, em vez de uma
posio da memria RAM. Isso permite um incremento na velocidade de acesso varivel, porm esse

especificador somente pode ser utilizado para variveis locais ou parmetros formais de uma funo.
-

static: utilizado para declarar variveis permanentes, ou seja, que n so destrudas aps a sada da funo
ou bloco do programa em que foram declaradas: o seu contedo permanece inalterado e na prxima chamada
da funo, ou execuo do bloco de comandos, o seu valor continuar o mesmo da ltima chamada. Esse
especificador normalmente utilizado com variveis locais. No caso da declarao de uma varivel global, ela
somente ser acessvel de dentro do mdulo (listagem) do programa em que foi declarada. Uma varivel
declarada como static sempre inicializada com zero pelo compilador.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS
________________________________________________________________________________
OUTROS MODIFICADORES

volatile: especifica uma varivel que pode ser alterada, por eventos externos sem conhecimento do
compilador. Esse tipo de especificador deve ser utilizado para variveis que possam ser alteradas pelo
hardware do sistema.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


OPERADORES E EXPRESSES EM C
________________________________________________________________________________

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


OPERADORES E EXPRESSES EM C
________________________________________________________________________________

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


OPERADORES E EXPRESSES EM C
________________________________________________________________________________

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


OPERADORES E EXPRESSES EM C
________________________________________________________________________________
Ainda possvel associar alguns operadores, originando novos operadores:

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


OPERADORES E EXPRESSES EM C
________________________________________________________________________________
Para construir expresses, utilizamos um ou mais operadores.
A ordem de avaliao da expresso da esquerda para direita.
No entanto permitido que o compilador rearranje a expresso de forma a otimizar o cdigo gerado (desde que
no se altere o resultado da expresso). Sendo assim, o programador no deve contar que a expresso ser
processada exatamente na ordem em que foi escrita.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


OPERADORES E EXPRESSES EM C
________________________________________________________________________________
* Ordem de prioridade
no processamento
de uma expresso.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


OPERADORES E EXPRESSES EM C
________________________________________________________________________________
Outra caracterstica da linguagem C e que utilizada no processamento das expresses, a chamada promoo

de tipo, e consiste num conjunto de regras aplicadas pelo compilador com o intuito de que todos os elementos da
expresso sejam convertidos no mesmo tipo. Seguem abaixo as regras:

Numa expresso contendo 02 operandos de tipos diferentes, o tipo de menor tamanho convertido no tipo de
maior tamanho. A ordem dos tipos, para efeitos de promoo de tipo (do menor para o maior): char, short,
int, long, float, double.

Numa expresso contendo um tipo unsigned e outro signed, o signed convertido em unsigned.

possvel tambm forar uma converso de tipo (typecast), utilizando o especificador do tipo desejado entre
parnteses antes da varivel ou expresso que se deseja converter.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

OPERADORES E EXPRESSES EM C
________________________________________________________________________________
EXERCICO DE FIXAO
1) Escreva um cdigo utilizando a rotina principal main respeitando a estruturao aprendida para configurar
uma varivel de 8 bits chamada REG_1 do tipo char , para que os bits das posies 4 e 5 sejam setados e os
demais permaneam zerados, respeitando as seguintes condies:

a) Utilizando somente a operao |=


b) Utilizando somente as operaes &=, +=
c) Utilizando somente a operao >>=
d) Utilizando somente a operao <<=

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C

OPERADORES E EXPRESSES EM C
________________________________________________________________________________
EXERCICO DE FIXAO

2) Acrescente ao cdigo anterior o comando printf para mostrar na tela os valores referentes as operaes
efetuadas. Justifique os resultados mostrados na tela.

a) Utilizando somente a operao |=


b) Utilizando somente as operaes &=, +=
c) Utilizando somente a operao >>=
d) Utilizando somente a operao <<=

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
Alm dos tipos bsicos, a linguagem C permite tambm a construo de outros tipos de dados mais complexos.
Seguem abaixo alguns deles:

Enumeraes

Ponteiros

Matrizes

Estruturas

Unies

Definies de tipos

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Enumeraes

Enumerao um conjunto de constantes inteiras utilizado para especificar quais valores que uma varivel pode
assumir.
A declarao de uma enumerao feita geralmente da seguinte forma:

enum nome_da_enumerao
{
lista_de_identificadores
} variavel_enumerada

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Enumeraes

Cada elemento da lista de identificadores separado do anterior por uma vrgula ,;


Normalmente, o primeiro elemento da lista o de valor 0, o segundo o de valor 1 e assim por diante, porm
possvel especificar a qualquer tempo o nmero de ordem do elemento, bastando utilizar o operador = seguido
do valor de enumerao desejado.
Repare que um elemento da lista recebe sempre o valor de enumerao do elemento anterior mais um. Sendo
assim, se alterarmos o valor de enumerao de um dos elementos, os posteriores a ele tambm tero valores
alterados.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Enumeraes

Exemplo:
int main ()
{
enum direcao_terra
{
norte,
leste,
sul,
oeste,
};
enum direcao_terra minha_direcao;
minha_direcao = oeste;
return 0;
}

enum direcao_terra obter_direcao()


{
return sul;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Enumeraes

Exemplo:
int main()
{

enum planetas planeta_1, planeta_2;


planeta_1 = Marte;
planeta_2 = Terra;
if(planeta_1 > planeta_2)
{
a = 1;
}
else
{
a = 0;
}
return 0;

int a;
enum planetas
{
Mercurio,
Vnus,
Terra,
Marte,
Jupter,
Saturno
};
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Ponteiros

Os ponteiros, ou apontadores, esto entre os grandes destaques que tornam a linguagem C mais poderosa e
consistem simplesmente em variveis que armazenam endereos de memria onde , normalmente, encontramse as variveis.
Os operadores & e * so utilizados para as operaes bsicas dos ponteiros, onde:
& retorna o endereo de uma varivel.
* Retorna o contedo de um endereo especificado.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Ponteiros

possvel declara variveis para guardar ponteiros, neste caso declara-se a varivel normalmente, mas
utilizando o operador * antes do seu nome, conforme exemplo abaixo:

char A;

// varivel tipo char chamada A

char *A; // varivel chamada A que aponta para um char

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Ponteiros

possvel tambm utilizar os operadores de adio, subtrao, incremento e decremento com variveis ponteiro,
no entanto o programador deve ter em mente que como um ponteiro deve sempre apontar para uma varivel do
tipo para o qual foi declarado, as operaes sero sempre realizadas levando em conta o tamanho em bytes
ocupado pelo tipo apontado pelo ponteiro, por exemplo: se um ponteiro para um ehar que aponta para o
endereo x incrementado, o seu contedo passar a ser x+ 1. Se o ponteiro fosse para um int, o incremento
resultaria no endereo x+2. Se o ponteiro fosse para um double, o incremento resultaria no endereo x-i-S. Isso
tudo porque um char ocupa um byte na memria, enquanto um int ocupa dois e um double ocupa normalmente
oito bytes.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
Uma outra caracterstica dos ponteiros que possvel utilizar um ponteiro para uma funo. Neste caso, o
endereo armazenado no ponteiro o do incio do cdigo da funo na memria. Para atribuir o endereo de
uma funo a um ponteiro, basta utilizar o nome da funo (sem os parnteses ou argumentos).
#include <stdio.h>

EXEMPLO:
#include <stdio.h>

void swap(int i, int j)


{
int temp;
temp = i;
i = j;
j = temp;
}

int main()
{
int a, b;
a = 5;
b = 10;
printf ("%d %d\n", a, b);
swap (a, b);
printf ("%d %d\n", a, b);
return 0;
}

int main ()
{
int a, b;
a = 5;
b = 10;
printf ("\n\nEles valem %d, %d\n", a, b);
swap (&a, &b);
printf ("\n\nEles agora valem %d, %d\n", a, b);
return 0;
}

void swap (int *i, int *j)


{
int temp;
temp = *i;
*i = *j;
*j = temp;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
#include <stdio.h>
int soma(int a, int b)
{
return (a+b);
}
int subtracao(int a, int b)
{
return (a-b);
}
int (*menos)(int, int) = subtracao;
int operacao(int x, int y, int (*func)(int,int))
{
int g;
g = func(x, y);
return (g);
}

int main()
{
int m, n;
m = operacao(7, 5, soma);
n = operacao(20, m, menos);
printf("%d\n", n);
return 0;
}

Para inicializar um ponteiro para uma


funo, no precisamos usar o operador
de endereo (ele j est implcito).

Por isso, quando chamamos a funo


operao,
&soma.

no

precisamos

escrever

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
EXERCCIOS DE FIXAO

1) Quais so os operadores utilizados pelos ponteiros? (Mostre a funo de cada um deles.)


2) Mostre quais sero os valores das variveis: i ; *p e p , do exemplo abaixo:
#include <stdio.h>
int main()
{
int i = 10 ;
int *p ;
p = &i ;
*p = 5 ;
printf ("%d\t%d\t%p\n", i, *p, p);
return 0;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
EXERCCIOS DE FIXAO

3) Crie uma funo utilizando o conceito de ponteiros.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Matrizes

Matrizes so arranjos sequenciais contnuos de elementos de um mesmo tipo de dado.


A linguagem C permite a construo de matrizes unidimensionais (listas) ou multidimensionais (tabelas) utilizando
quaisquer tipos de dados permitidos em C (inclusive ponteiros e outros tipos de dados complexos).
A declarao de uma matriz pode ser feita fornecendo o nmero mximo de elementos desejados para cada
dimenso.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Matrizes

Exemplo:

char matriz1 [25];

// declara uma matriz unidimensional de 25 elementos char chamada "matriz1"

unsigned int matriz2 [10]; // declara uma matriz unidimensional de 10 elementos do tipo unsigned int chamada "matriz2
float matriz3 [5] [5];

// declara uma matriz bidimensional de 5 elementos em cada dimenso, do tipo float chamada "matriz3"

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Matrizes

Tambm possvel declarar e inicializar os elementos de uma matriz.


Exemplo:
char notas [5] = {4, 8, 6, 8, 9}; // declara uma matriz unidimensional de char chamada "notas" e inicializada com os valores apresentados

* Repare que para fazer referncia a um elemento da matriz, utilizado o identificador da matriz seguido do
nmero do elemento dentro dos colchetes.
Exemplo:
char nota_1;
nota_1 = notas[0];

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Estruturas

Outro tipo de dado complexo admitido em C so as estruturas.


Uma estrutura um agrupamento de variveis individuais de qualquer tipo, referenciadas por um nome comum.
As variveis pertencentes a uma estrutura so denominadas campos de estrutura.
Exemplo:
struct nome_estrutura

struct data

{
tipo campo1;

char dia;

tipo campo2;

char mes;

...

char ano;

} veriaveis_estrutura;

} calendario;

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Estruturas

Observe no exemplo como as variveis do tipo struct so acessadas.


Exemplo:

struct data
{
int dia;
int mes;
int ano;
} calendario;

calendario.dia = 6;
calendario.mes = 1;
calendario.ano = 1987;

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
-

Estruturas

Segue outra forma de efetuar a mesma declarao.


struct data calendario, aniversario;

Exemplo:
struct data

calendario.dia = 6;

calendario.mes = 1;
int dia;

calendario.ano = 1987;

int mes;
int ano;
};

aniversario.dia = 6;
aniversario.mes = 1;
aniversario.ano = 1987;

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
UNIES

Unies so um tipo especial de dado no qual as variveis declaradas residem num mesmo endereo de memria.
O compilador aloca memria para a varivel cujo tipo ocupe o maior espao na memria e em seguida, as
demais variveis pertencentes unio so alocadas no mesmo espao.
O compilador alinha as variveis pertencentes a uma unio pelos seus dgitos mais significativos (modelo little
endian).

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
UNIES

Exemplo:
union
{
unsigned long int var32;
unsigned int var16;
unsigned char var8;
} tipos;

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
UNIES

Exemplo:

tipos.var32 = 0x12345678;
tipos.var16 = 0x1234;
tipos.var8 = 0x12;

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
DEFINIES DE TIPOS DE DADOS

Outra caracterstica interessante da linguagem C, mas que no consiste realmente em um novo tipo de dado, o
comando typedef.
Ele permite criar novos identificadores para tipos de dados j existentes.
Isso facilita a legibilidade de alguns programas e tambm permite tornar alguns tipos de programas escritos para
outras plataformas mais facilmente portveis.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
DEFINIES DE TIPOS DE DADOS

A utilizao de typedef bastante simples. Conforme mostra o exemplo:

typedef float fracionario;

fracionario teste; // declara uma varivel chamada teste do tipo fracionario (float)

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


TIPOS DE DADOS COMPLEXOS
________________________________________________________________________________
EXERCCIOS DE FIXAO
1) Determine qual a faixa de valores (na representao binria) que pode ser representada pelas variveis
abaixo, respeitando o cdigo da caixa de texto abaixo:
a) teste
b) a e b

typedef char caractere;


typedef int numero;

caractere teste;
numero a, b;

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
A linguagem C possui um conjunto de comandos de controle de programa organizados nas seguintes categorias:

Condicionais
So comandos que permitem executar cdigo associando a uma condio ser verdadeira ou falsa.

Iterao, lao ou repetio

Permitem a execuo de cdigo repetitivo.


-

Salto ou desvio
Utilizados para provocar o desvio do fluxo do programa.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________

TIPOS

COMANDOS

CONDICIONAL

if

switch

ITERAO, LAO,
REPETIO

for

while

SALTO OU DESVIO

*anteriores utilizam este tipo

do

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO IF
O comando if permite executar um comando ou bloco de comandos, caso uma condio seja verdadeira e
opcionalmente, um outro comando ou bloco de comandos, no caso de a condio ser falsa
* Na linguagem C, verdadeiro consiste em qualquer valor diferente de zero e falso consiste no valor zero

SINTAXE:

if (condio) comando_caso_verdadeiro; else comando_caso_falso;

if(condio)
{
comando_caso_verdadeiro;
}
else
{
comando_caso_falso;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO IF

char estado_portas;
estado_portas = P1IN;

Exemplo:

if(estado_portas & 0x01)


{
P1OUT |= 0x01;
}
else

{
P1OUT &= ~(0x01);
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO SWITCH
O seu funcionamento o seguinte: o resultado da expresso comparado com cada uma das constantes
associadas s clusulas case e quando a comparao resultante for verdadeira, os comandos daquela clusula
so executados at que seja encontrado o comando break.
Caso nenhuma das comparaes resulte em verdadeiro, os comandos associados clusula default so
executados. No entanto, a incluso desta clusula opcional.

* No permitido duas constantes case no mesmo switch terem o mesmo valor.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO SWITCH

Exemplo:

switch (estado_porta)
{
case 0x01:
P1OUT |= 0x01;
break;
case 0x02:
P1OUT |= 0x02;
break;
case constante_n:
P1OUT |= 0x02;
break;
default:
P1OUT = 0x00;
break;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO FOR
O comando for consiste num comando de iterao ou repetio condicional, ou seja, ele utilizado para executar
um comando ou bloco de comandos, enquanto uma condio for verdadeira.

SINTAXE:

for(inicializao; condio; incremento) comando;

for(inicializao; condio; incremento)


{
comando;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO FOR
O seu funcionamento o seguinte:
1. Inicialmente executada a operao expressa na seo inicializao do comando.
2. A seo condio testada e se for verdadeira, o comando ou bloco de comandos associado ao for
executado.
3. executada a seo incremento do comando for.
4. A execuo retorna para o iitem 2 e permanecer nesta repetio at que a condio avaliada seja falsa, o
que encerra o comando.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO FOR

Exemplo:
Int vetor[10]
for(i=0; i < 10; i++)
{
int soma=0;
soma = soma + vetor[i];
}

// soma += vetor[i];

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO FOR

* Opcionalmente, possvel utilizar a clusula break para provocar o encerramento prematuro do lao.
Tambm possvel utilizar a clusula continue para provocar o encerramento da iterao atual do lao e o
incio de uma nova iterao.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO WHILE

Outro comando de repetio da linguagem C o while (enquanto).


Ele utilizado para repetir um comando ou bloco de comandos enquanto uma condio for verdadeira.
A diferena entre o while e o for que no for, h ciclo de inicializao, teste condicional e incremento, enquanto
no while somente temos o teste condicional.

SINTAXE:
while (condio)
{
comando1;
comando2;
...
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO WHILE

O funcionamento do comando bastante simples:


-

Primeiramente a condio avaliada.

Caso seja verdadeira o comando ou bloco de comandos executado

Em seguida a condio testada novamente.

Caso a condio seja falsa, o comando encerrado.

* Cada iterao se inicia com o teste da condio

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO WHILE

Exemplos:

while(iP1IN & 0x01)


{
P1OUT |= 0x40;
}

while(i1)
{
P1OUT |= 0x40;
}
LOOP INFINITO

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO WHILE

* Assim como no for, tambm possvel utilizar a clusula break para encerrar prematuramente um lao
while sem necessitar que a condio seja verdadeira, ou a clusula
encerramento da iterao atual e inicio da seguinte.

continue para provocar o

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO DO

O ltimo tipo de comando de repetio o do.


Ele bastante parecido com o while, mas ao contrrio deste, que testa a condio no incio de cada iterao, do
somente testa a condio no final de cada iterao.

SINTAXE:
do
{
comando1;
comando2;
...
} while (condio);

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO DO

O seu funcionamento bastante simples:


-

O comando ou bloco de comandos executado.

Em seguida a condio verificada.

Caso seja verdadeira, uma nova iterao tem incio.

Caso seja falsa, o comando encerrado.

* Aqui tambm as clusulas break e continue podem ser utilizadas para encerrar o comando ou a iterao
prematuramente.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
COMANDO DO

Exemplos:

do
{

do
{

P1OUT |= 0x40;
} while(iP1IN & 0x01);

P1OUT |= 0x40;
} while(i1);
LOOP INFINITO

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


COMANDOS DA LINGUAGEM C
________________________________________________________________________________
EXERCCIOS DE FIXAO

1) Explique a diferena entre as funes:


a) If e switch
b) for, while e do

2) Implemente um cdigo que efetue as seguintes rotinas:


a) Somatrio de todos os elementos do vetor a[0] = ; a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5; utilizando a
funo for.
b) Somatrio de todos os elementos do vetor a[0] = ; a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5; utilizando a
funo while.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


FUNES
________________________________________________________________________________
Uma funo um conjunto de comandos que executam uma determinada operao no programa.
Normalmente, quando se necessita repetir um mesmo trecho do cdigo diversas vezes em um programa, utilizase uma funo para guardar esse conjunto de comandos e a cada vez que for necessria a sua execuo, basta
realizar a chamada funo.

SINTAXE:
tipo_retorno nome_funo(lista de parmetros)
{
lista_comandos;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


FUNES
________________________________________________________________________________
EXEMPLO:

int soma(int a, int b)


{
int c;
c = a + b;
return c;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


FUNES
________________________________________________________________________________
Uma funo pode retornar qualquer tipo de dado vlido em C, e tambm pode receber qualquer tipo dos tipos de
dados vlidos em C (com exceo de unies).
Alm disso, uma funo em C pode receber seus parmetros de 02 formas distintas:
-

Na chamada por valor, o valor do parmetro da funo passado como argumento para ela.

Na chamada por referncia, o endereo da varivel que contm o parmetro passado como argumento para
ela.

possvel utilizar cada um ou ambos os modelos em uma mesma funo, mas o programador deve sempre levar
em conta a forma como a funo foi declarada, pois a chamada da funo deve utilizar a mesma forma da
declarao dela.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


FUNES
________________________________________________________________________________
Normalmente, a linguagem C utiliza a chamada por valor, com exceo das matrizes, em que passado apenas
o endereo do primeiro elemento dela.
Para utilizar a chamada por referncia, necessria a utilizao de ponteiros.

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


FUNES
________________________________________________________________________________
EXEMPLO:

do
{

do
{

P1OUT |= 0x40;
} while(iP1IN & 0x01);

P1OUT |= 0x40;
} while(iP1IN & 0x01);

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


FUNES
________________________________________________________________________________
PROTOTIPAGEM / DECLARAO DE FUNES

SINTAXE - PROTOTIPAGEM:
tipo_retorno nome_funo(lista de parmetros);

SINTAXE - DECLARAO:
tipo_retorno nome_funo(lista de parmetros)
{
lista_comandos;
}

SISTEMAS DE PROGRAMAO I PROGRAMAO BSICA EM C


FUNES
________________________________________________________________________________
PROTOTIPAGEM / DECLARAO DE FUNES

Exemplo:
int subtrai(int a, int b);

int subtrai(int a, int b)


{

int subtrai(int a, int b);

void maini(void)
{

int c;

int aux;

c = a b;
return c;
}

aux = subtrai(5,2);
}

Você também pode gostar