Sei sulla pagina 1di 34

Introduo Programao

Aula 6, 7, 8

Tpicos
Tipos de Dados Bsicos em C Constante; Operao de atribuio Caracteres e String Operadores (Aritmticos, Relacionais, Lgicos)

Tipos de dados
A linguagem C tem 5 tipos bsicos:
char int float void caractere ASCII nmero inteiro nmero real de preciso simples sem valor

double nmero real de preciso dupla

Tipos de dados
Tamanho em bits 8 32 32 64 Faixa de nmeros representados -128 a 127 -2.147.483.647 a 2.147.483.647 seis dgitos de preciso dez dgitos de preciso

Tipo char int float double

Tipos de dados :: Modificadores


Um modificador de tipo altera o intervalo de valores que uma varivel pode armazenar ou como o compilador representa um valor. Existem quatro modificadores de tipo:
signed unsigned long

short

Tipos de dados :: Modificadores


Ao tipo float no se pode aplicar nenhum modificador. Ao tipo double pode-se aplicar apenas o modificador long. Os quatro modificadores podem ser aplicados a inteiros (int). O modificador unsigned serve para especificar variveis sem sinal.

Tipos de dados :: Resumo (compilador gcc)


Tipo char

Tamanho em bits
8

Faixa de nmeros representados


-128 a 127

unsigned char
signed char int unsigned int signed int

8
8 32 32 32

0 a 255
-128 a 127 -2.147.483.647 a 2.147.483.647 0 a 4.294.967.295 -2.147.483.647 a 2.147.483.647

short int
unsigned short int signed short int long int unsigned long int

16
16 16 32 32

-32.767 a 32.767
0 a 65.535 -32.767 a 32.767 -2.147.483.647 a 2.147.483.647 0 a 4.294.967.295

signed long int


float double long double

32
32 64 80

-2.147.483.647 a 2.147.483.647
seis dgitos de preciso dez dgitos de preciso dez dgitos de preciso

Identificadores
So os nomes que damos aos objectos utilizados (variveis, constantes, funes, etc.)

Podem ter qualquer nome, desde que:


Comece com uma letra ou underscore _ Os caracteres subsequentes devem ser letras, nmeros ou _. No seja igual a:
uma palavra reservada;

uma funo declarada;


bibliotecas do C.

Identificadores :: Exemplos
Permitido
int int float char _mes ano_atual temp1 palavra_digitada char int float int char

No permitido!
2a_feira valores$ float main stdio

Constantes
Costuma-se definir o nome das constantes com letras maisculas, para diferenci-los de nomes de variveis e funes.

Essa prtica melhora a legibilidade do programa.


Definio de constantes facilita a manuteno do programa.

Operador de Atribuio
Uma varivel, ao ser definida, contm um valor qualquer e imprevisvel. Costuma-se dizer que contm lixo de memria. O comando de atribuio (=) permite alterar o valor (contedo) de uma varivel.
<varivel> = <valor>;

Operador de Atribuio
Exemplos:
atribuio de valor

letra ano

= =

'H'; 2007;

temperatura
nova_letra float cateto area_ret

=
= = =

38.9;
letra; 3.1; base * altura;

atribuio de uma varivel a outra


definio e atribuio atribuio de frmula

Caracter String
Quando uma varivel possui apenas um caracter, ele ocupa apenas uma posio de memria:

char letra = 'A';

0100 0001

Varivel

Memria

Caracter String de caracteres


Uma string de n caracteres ocupa n+1 posies de memria. A posio adicional corresponde ao valor zero (\NULL em ASCII), indicativo do final da string.

char nome[] = "ABC";

B
n caracteres Varivel

0100 0100 0100 0000

0001 0010 0011 0000

n+1 posies

Memria

Operadores Aritmticos
Operador + * / Adio Subtrao Multiplicao Diviso Ao Exemplo x = 0x1A + y; x = x y; x = 8 * y; x = y / 2;

% ++
--

Resto de diviso Incremento


Decremento

x = y % 2; x++;
y--;

Operadores Aritmticos
Diversos operadores podem ser utilizados em uma mesma expresso:
area delta = 2 * PI * raio; = b*b 4*a*c;

A ordem de execuo dos operadores pode ser determinada explicitamente pelo uso de parnteses:
media delta = (a + b + c)/2; = (b*b) (4*a*c);

Operadores Aritmticos
Quando no h parnteses, o compilador utiliza regras de precedncia para determinar qual operao executar primeiro
Maior precedncia -(unrio) * / % + Menor precedncia

Se duas operaes tm a mesma precedncia, segue-se a ordem da esquerda para a direita.

Operadores Aritmticos :: Incremento e decremento


O operador incremento de 1 (++) realiza duas operaes:
Soma 1 ao valor actual da varivel Armazena o resultado na prpria varivel Em vez de x = x + 1; , escreve-se x++;

De forma semelhante funciona o operador decremento de 1 (--).


Em vez de x = x - 1; , escreve-se x--;

Operaes combinadas com atribuio


Uma operao pode ser combinada com a atribuio em um mesmo operador. Embora sejam mais eficientes, tornam o programa mais difcil de se compreendido.
Forma combinada x += 5 x -= a x *= k x /= x+1 x &= k

Forma normal x=x+5 x=x-a x=x*k x = x / (x+1) x=x&k

...

...

Operadores Relacionais
Compara dois valores, produzindo um resultado lgico:
FALSO indicado pelo valor zero. VERDADEIRO indicado por um valor zero. Operador Aco

> >= < <= == !=

Maior do que Maior ou igual a

Menor do que Menor ou igual a


Igual a Diferente de

Operadores Relacionais :: Exemplos

int cond; int a = 3; float x = 1.5; cond cond cond cond cond cond cond cond = = = = = = = = a != a/2.0 == a != a >= a/3 <= a/2 > a; a 2*x; x; x; 2*x; x; x; 2; /* /* /* /* /* /* /* /* cond=1 cond=1 cond=0 cond=1 cond=1 cond=0 cond=3 cond=0 -> -> -> -> -> -> -> -> V V F V V F V F */ */ */ */ */ */ */ */

Operadores Lgicos
Operam sobre os valores lgicos das variveis, sem considerar seu bits individuais.

Operador

Aco

&&

AND (E)

||

OR (OU)

NOT (NO)

Operadores Lgicos :: Exemplos

int cond; int a = 3; float x = 1.5; cond cond cond cond cond cond cond = = = = = = = (a/2 == x) && (a < 2); (a != x) || (a/x < 2); (x <= a) && (a >= 2*x); !(a/3 <= x); (a/2==x) || (a>=x) && !(2*x!=a); a && x; (a - 2*x) || (x < a/2); /* /* /* /* /* /* /* cond=0 cond=1 cond=1 cond=0 cond=1 cond=1 cond=0 -> -> -> -> -> -> -> F V V F V V F */ */ */ */ */ */ */

Precedncia entre operadores


++ ! * % / -Pr/ps incremento, decremento Menos Unrio Negao Multiplicao, diviso Mdulo (resto da diviso inteira) Maior precedncia

+
> >= <=

<

Subtrao, adio Relacionais Igual, diferente E lgico

==

!=

&& || = += -= *= /=

OU lgico Atribuio
Menor precedncia

Comandos de Entrada e Sada


Esto descritos na biblioteca stdio.h Comandos de Sada/Entrada:
Funo printf() Funo putchar()

Comandos de Leitura:
Funo scanf() Funo gets() Funo getchar()

Comandos de Sada :: printf()


Funo para a escrita formatada no dispositivo de sada padro, normalmente o vdeo.
printf (string_de_controle, argumentos);

Comandos de Sada :: printf()


string_de_controle consiste em: Caracteres que sero mostradas no monitor Caracteres de controle (\) Comandos de formato, que definem a maneira como os argumentos sero mostrados (%) argumentos so as variveis cujos contedos

sero exibidos no monitor.

Comandos de Sada :: printf()


Caracteres de controle imprimem caracteres especiais na sada:
\n

nova linha

\t
\\ \b

tabulao horizontal
a prpria contra-barra backspace

\"
\' \xnnn

aspas
apstrofe cdigo hexadecimal do caractere ASCII

\a

alerta sonoro

Comandos de Sada :: printf()


Comandos de formato disponveis (comeam por %):
%d (%i) nmeros inteiros em decimal %f %lf %c %s %o nmeros reais do tipo float nmeros reais do tipo double caractere seqncia de caracteres (string) nmeros em octal (base 8)

%e (%E) nmeros reais em notao cientfica

%x (%X) nmeros em hexadecimal (base 16)

%%
%p

o prprio caractere %
endereos de memria (em hexadecimal)

Comandos de Sada :: printf()


Comandos de formato podem ser alterados para especificao da largura mnima de campo ou do nmero de casas decimais: %[alinhamento][tamanho][.][preciso]formato
Especifica nmero de casas decimais a serem impressas. Especifica nmero de caracteres a serem impressos, incluindo o sinal e o ponto decimal. 0: completa com zeros esquerda para atingir o tamanho especificado -: fora alinhamento esquerda

Comandos de Sada :: putchar()


Escreve um caracter na janela a partir da posio actual do cursor. putchar (<varivel>);

O resultado do comando a impresso do caracter corresponde ao cdigo ASCII do argumento. Argumento pode ser do tipo int ou char.

Comandos de Entrada :: scanf()


Rotina de leitura formatada de dados inseridos pelo utilizado atraves do teclado. scanf (string_de_controle, argumentos);

string_de_controle: comandos de formato (%_), os mesmos relacionados para o printf(). argumentos: endereo das variveis onde sero colocados os valores de entrada: &nome_varivel.
O operador & representa o endereo de uma varivel.

Comandos de Entrada :: gets()


Rotina de entrada que l uma sequncia de caracteres (string) at que seja pressionada a tecla ENTER.

gets(nome_da_varivel);

Questes