42
08/03/10 (c) Paula Rodrigues 1 INF1005: Programação 1 Introdução à Linguagem C Variáveis e Expressões

Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Embed Size (px)

Citation preview

Page 1: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

08/03/10 (c) Paula Rodrigues 1

INF1005: Programação 1

Introdução à Linguagem CVariáveis e Expressões

Page 2: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Tópicos Principais

• Programando em C• Funções• Variáveis• Define• Operadores e Expressões• Entrada e Saída• Exemplos

08/03/10 (c) Paula Rodrigues 2

Page 3: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

#include <stdio.h>

int main (void) { float cels; float fahr; printf(“Digite a temperatura em oC: “); scanf(“%f”, &cels); fahr = 1.8 * cels + 32; printf(“Temperatura em oF: ”); printf(“%f”, fahr); return 0;}

Programando em CEm C, devemos informar o tipo dos nossos dados.Assim, o compilador sabe alocar (reservar) oespaço de memória ideal.TEMOS QUE SABER QUAL O TIPO (PARAALOCAR O TAMANHO ESPECÍFICO DE BYTES)E QUAL O NOME QUE SERÁ USADO PARAREPRESENTAR O ESPAÇO QUE ESTÁ SENDOALOCADO (DEFINIÇÃO DO NOME DAVARIÁVEL).

OBS: COMANDOS EM C TERMINAM COM UM ;

08/03/10 (c) Paula Rodrigues 3

Page 4: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

#include <stdio.h>

int main (void) { float cels; float fahr; printf(“Digite a temperatura em oC: “); scanf(“%f”, &cels); fahr = 1.8 * cels + 32; printf(“Temperatura em oF: ”); printf(“%f”, fahr); return 0;}

Programando em C

FUNÇÃO DE ESCRITA DE C.UMA FUNÇÃO EM C É UM PROCEDIMENTOQUE QUANDO EXECUTADO PODE RECEBERALGO COMO PARÂMETRO.

FUNÇÃO DE LEITURA EM C.FUNÇÃO PODE RETORNAR UM VALORATRAVÉS DO PARÂMETRO RECEBIDO.

NOTE QUE O SINAL = EM C É ATRIBUIÇÃO.O VALOR DA DIREITA ESTÁ SENDOATRIBUÍDOAO ESPAÇO DE MEMÓRIA REPRESENTADOPELA VARIÁVEL DA ESQUERDA.

08/03/10 (c) Paula Rodrigues 4

Page 5: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

#include <stdio.h>

int main (void) { float cels; float fahr; printf(“Digite a temperatura em oC: “); scanf(“%f”, &cels); fahr = 1.8 * cels + 32; printf(“Temperatura em oF: ”); printf(“%f”, fahr); return 0;}

Programando em C

Inclusão da interface da biblioteca auxiliar de E/Spara utilizar as funções printf e scanf.

Ponto de entrada de todo programa em C.

Retorno necessário, pois a função principalretorna um número inteiro.

08/03/10 (c) Paula Rodrigues 5

Page 6: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Programando em C

• Indentação e comentários são MUITO importantes para oentendimento do código

08/03/10 (c) Paula Rodrigues 6

/* Programa para converter temperatura de Celsius em Fahrenheit */#include <stdio.h>

int main (void) { float cels; /* armazena temperatura em oC */ float fahr; /* armazena temperatura em oF */

/* captura valor fornecido via teclado */ printf(“Digite a temperatura em oC: “); scanf(“%f”, &cels);

/* faz a conversão */ fahr = 1.8 * cels + 32;

/* exibe resultado na tela */ printf(“Temperatura em oF: ”); printf(“%f”, fahr); return 0;}

Page 7: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Estrutura de um Programa C

Comando do Pré-Processador (inclusão de bibl. aux.): #include <nome>

Definição de tipo (constantes): #define nome valor

Funções auxiliares (cap. 3 para INF1005)

Função Principal (início da execução de um programa): int main(void)

Comentários em qualquer trecho de um código C: /*isto é um comentário */

Page 8: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Funções

• As funções têm a seguinte estrutura:

tipo_de_retorno nome_da_funcao (parametros) { variaveis locais

instrucoes em C (comandos = expressoes eoperadores)

}

Page 9: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Variáveis

• Variável é um espaço reservado na memória do computador paraarmazenar um tipo de dado. Devem receber nomes para poderemser referenciadas e modificadas quando necessário.

• Toda variável tem:– um nome (identificador)– um tipo de dado– um valor

• Restrição para nomes: não é permitido começar o nome com umalgarismo (0-9), alguns caracteres não são válidos (*, -, /, +, ...), epalavras reservadas não podem ser utilizadas (main, if, while, ...).

Page 10: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Tipos de Variáveis na Linguagem C

• Tipos básicos na linguagem C:

Tipo Tamanho Menor valor Maior valor

char 1 byte -128 +127

unsigned char 1 byte 0 +255

short int (short) 2 bytes -32.768 +32.767

unsigned short int 2 bytes 0 +65.535

int (*) 4 bytes -2.147.483.648 +2.147.483.647

long int (long) 4 bytes -2.147.483.648 +2.147.483.647

unsigned long int 4 bytes 0 +4.294.967.295

float 4 bytes -1038 +1038

double 8 bytes -10308 +10308

Page 11: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Variáveis

• Declaração de variável:– variáveis devem ser explicitamente declaradas– variáveis podem ser declaradas em conjunto

int a; /* declara uma variável do tipo int */

int b; /* declara uma variável do tipo int */

float c; /* declara uma variável do tipo float */

int d, e; /* declara duas variáveis do tipo int */

Page 12: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

08/03/10 (c) Paula Rodrigues 12

Variáveis: Bits, Bytes e Palavras

• Organização da memória– Bit:

• menor unidade• armazena 0 ou 1

– Byte:• seqüência de 8 bits

0 1 2 3 4 5 6 7

1 0 0 1 1 1 0 0 1 0

1 1 1 0 0 1 1 1 0

2 0 1 1 1 0 0 1 0

3 0 0 0 0 0 0 0 0

2 0 1 1 1 0 1 0 1 0

1 0 0 0 0 0 0 0 0

2 1 1 1 1 1 1 1 1

3 0 0 0 0 0 0 0 0

Page 13: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

08/03/10 (c) Paula Rodrigues 13

Variáveis: Números Inteiros em um Byte

Bits Valor

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

Byte Valor

00000000 0

00000001 1

00000010 2

00000011 3

… …

11111101 253

11111110 254

11111111 255

Page 14: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

08/03/10 (c) Paula Rodrigues 14

Variáveis: Como lidar com númerosnegativos?

Bits Valor

011 3

010 2

001 1

000 0

101 -1

110 -2

111 -3

Com sinal

O valor de umaposição de memóriadepende do tipo queestá armazenado lá!

Page 15: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

08/03/10 (c) Paula Rodrigues 15

Variáveis: Como representar um número real?

IEEE standart 754 Floating Point

s eeee…eeee mmmmmmmmm…mmmmmm

051526263

Precisão dupla (double)

310123456.456.123 !=

s eeeeeeee mmmmmmmm…mmmmmm

022233031

Precisão simples (float)

mantissaexpoente

Page 16: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

08/03/10 (c) Paula Rodrigues 16

Variáveis: Armazenando Texto

01101111 01101001 00100000 01100001 01101110 01100001 00000000

111 105 32 61 110 61 0

'i''o' ' ' 'a' 'a''n' ‘\0'

"oi ana"

Page 17: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

08/03/10 (c) Paula Rodrigues 17

Variáveis: Como representar caracteres?

Page 18: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Variáveis em INF1005

int

float

double

Page 19: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Define

• A diretiva #define associa um identificador a um valor. O padrão CANSI refere-se ao identificador como um nome de macro e aoprocesso de substituição como substituição de macro.

• Formato: #define nome_macro valor

• É usual definir o nome das macros com letras maiúsculas

• Exemplos:– #define UM 1– #define MSG “Digite S para sair”

Page 20: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

• Expressão = combinação de variáveis, constantes e operadoresque, quando avaliados, resulta em um valor.

Exemplo: float cels = 10; float fahr = 1.8 * cels + 32;

08/03/10 (c) Paula Rodrigues 20

Operadores e Expressões

variavel = expressao,

onde a expressao pode ser formada por várias operações

Sinal de atribuição

Page 21: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Operadores e Expressões

• Operadores aritméticos ( + , - , * , / , % ):– operações são feitas na precisão dos operandos

• o operando com tipo de menor expressividade é convertido parao tipo do operando com tipo de maior expressividade

• divisão entre inteiros trunca a parte fracionária

int a

double b, c;

a = 3.5; /* a recebe o valor 3 */

b = a / 2.0; /* b recebe o valor 1.5 */

c = 1/3 + b; /* 1/3 retorna 0 pois a operação será sobre inteiros */

/* c recebe o valor de b */

•No capítulo 4, veremos ainda os operadores lógicos e relacionais.

Page 22: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Operadores e Expressões

• Operadores aritméticos (cont.):– o operador módulo, “%”, aplica-se a inteiros– precedência dos operadores: * , / , - , +

x % 2 /* o resultado será 0, se x for par;

caso contrário, será 1 */

a + b * c / d é equivalente a (a + ((b * c) / d))

Page 23: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Operadores e Expressões

• Operadores de atribuição : ( = , += , -= , *= , /= , %= )– C trata uma atribuição como uma expressão

• a ordem é da direita para a esquerda– C oferece uma notação compacta para atribuições

em que a mesma variável aparece dos dois ladosvar op= expr é equivalente a var = var op (expr)

i += 2; é equivalente a i = i + 2;

x *= y + 1; é equivalente a x = x * (y +1);

Page 24: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Operadores e Expressões

• Operadores de incremento e decremento ( ++ , -- ):– incrementa ou decrementa de uma unidade o valor de uma variável

• os operadores não se aplicam a expressões• o incremento pode ser antes ou depois da variável ser utilizada

n++ incrementa n de uma unidade, depois de ser usado++n incrementa n de uma unidade, antes de ser usado

n = 5;

x = n++; /* x recebe 5; n é incrementada para 6 */

x = ++n; /* n é incrementada para 6; x recebe 6 */

a = 3;

b = a++ * 2; / b termina com o valor 6 e a com o valor 4 */

Page 25: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Expressões e Operadores

• EXEMPLO: cálculo do volume de uma esfera (4/3 * pi * r^3) – comoa linguagem C não tem o operador de exponenciação, ou se usauma biblioteca externa (math.h) ou são feitas três multiplicaçõesconsecultivas.

#include <stdio.h>int main ( void){ float raio; /* raio da esfera */ float vol; /* volume calculado */ printf (”Entre com o raio da esfera: ” ) ; scanf(“%f”, &raio); vol = (4.0 / 3.0) * 3.14159 * raio * raio * raio; printf(”Volume da esfera : %f”, vol) ; return 0;}

08/03/10 (c) Paula Rodrigues 25

Page 26: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Expressões e Operadores

#include <stdio.h>

#define PI 3.14159

int main ( void){ float raio; /* raio da esfera */ float vol; /* volume calculado */ printf (”Entre com o raio da esfera: ” ) ; scanf(“%f”, &raio); vol = (4.0 / 3.0) * PI * raio * raio * raio; printf(”Volume da esfera : %f”, vol) ; return 0;}

Para evitar o uso de uma constante numérica para o PIpode-se definir uma CONSTANTE SIMBÓLICA.

08/03/10 (c) Paula Rodrigues 26

Page 27: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Expressões e Operadores

#include <stdio.h>#include <math.h>

#define PI 3.14159

int main ( void){ float raio; /* raio da esfera */ float vol; /* volume calculado */ printf (”Entre com o raio da esfera: ” ) ; scanf(“%f”, &raio); vol = (4.0 / 3.0) * PI * pow(raio, 3); printf(”Volume da esfera : %f”, vol) ; return 0;}

UsandoA biblioteca matemática

<math.h>com sua função pow(base, expoente)

08/03/10 (c) Paula Rodrigues 27

Page 28: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Entrada e Saída

• Função “printf”:– possibilita a saída de valores segundo um determinado formato

printf ("%d %g", 33, 5.3);

tem como resultado a impressão da linha:

33 5.3

printf (formato, lista de constantes/variáveis/expressões...);

printf ("Inteiro = %d Real = %g", 33, 5.3);

com saída:

Inteiro = 33 Real = 5.3

Page 29: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Entrada e Saída

• Especificação de formato:%c especifica um char%d especifica um int%u especifica um unsigned int%f especifica um double (ou float)%e especifica um double (ou float) no formato científico%g especifica um double (ou float) no formato mais apropriado

(%f ou %e)%s especifica uma cadeia de caracteres

Page 30: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Entrada e Saída

• Especificação de tamanho de campo:

Page 31: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Entrada e Saída

• Impressão de texto:

printf("Curso de Programação 1\n");

exibe na tela a mensagem:

Curso de Programação 1

Page 32: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Entrada e Saída

• Função “scanf”:– captura valores fornecidos via teclado

int n;

scanf ("%d", &n);

valor inteiro digitado pelo usuário é armazenado na variável n

scanf (formato, lista de endereços das variáveis...);

Page 33: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Entrada e Saída

• Especificação de formato:%c especifica um char%d especifica um int%u especifica um unsigned int%f,%e,%g especificam um float%lf, %le, %lg especificam um double%s especifica uma cadeia de caracteres

Page 34: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Entrada e Saída

• Função “scanf” (cont.):– caracteres diferentes dos especificadores no formato servem para

cercar a entrada– espaço em branco dentro do formato faz com que sejam "pulados"

eventuais brancos da entrada– %d, %f, %e e %g automaticamente pulam os brancos que precederem

os valores numéricos a serem capturados

scanf ("%d:%d", &h, &m);

valores (inteiros) fornecidos devem ser separados pelocaractere dois pontos (:)

Page 35: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Vamos programar?

Page 36: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Aritmética Inteira

• Qual o erro na expressao abaixo????– V = 4/3 * PI * pow(raio, 3);– O erro não está na expressão e sim no resultado. Como 4 e 3 são

valores inteiros, o resultado dessa divisão é um número inteiro e portantoseria 1, e não 1.3333...

• Outro exemplo:

5/2 = 2Como está sendo armazenado

em um float, o valor dessa divisão em cé 2.0

08/03/10 (c) Paula Rodrigues 36

Page 37: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Aritmética Inteira

• A linguagem C oferece um operador aritmético adicional paraoperandos inteiros chamado operador módulo (%)

int a;a = 8 % 3; /* a recebe o valor 2 */

08/03/10 (c) Paula Rodrigues 37

Page 38: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Aritmética Inteira#include <stdio.h>

int main ( void){ int tot; /* numero total de segundos */ int hor, min, seg; /* numero total de horas, minutos e segundos */

printf(“Entre com o numero de segundos transcorridos: “); scanf(“%d”, &tot);

hor = tot / 3600; min = (tot % 3600) / 60; seg = tot % 60;

printf(“Tempo transcorrido: “); printf(“horas = %d “, hor); printf(“minutos = %d “, min); printf(“segundos = %d “, seg);

return 0;}

Quando essa truncagemé útil???

Chinês: 4320s = 1h 1min 12s

(c) Paula Rodrigues 38

Page 39: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Aritmética Mista

• Se em uma expressão aritmética os operandos forem de tiposdiferentes, a operação é feita na representação do tipo de maiorexpressividade: double > float > int:– 4.0 / 3 = 1.3333...– 4 / 3.0 = 1.333...

• Se temos duas variáveis inteiras e queremos que a divisão sejafeita em representação real, podemos usar um operador deconversão de tipo:

No caso, o (float) converte a em 5.0e depois divide por 2.Note que o valor da variável continuasendo do tipo inteiro.O valor de a não é alterado.

08/03/10 (c) Paula Rodrigues 39

Page 40: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Aritmética Mista

• Outros casos em que a conversão de tipo também é útil:

O compilador iria gerar uma mensagemde advertência (warning), para evitar:

08/03/10 (c) Paula Rodrigues 40

Page 41: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

Exercícios do Capítulo 2

Page 42: Introdução à Linguagem C Variáveis e Expressões - PUC-Rio · programando em c funÇÃo de escrita de c. uma funÇÃo em c É um procedimento que quando executado pode receber

42

Referências

Waldemar Celes e Roberto Ierusalimschy, Apostila de Programação(disponível para download no site da disciplina) ‏

• Capítulo 2 – Introdução à Linguagem C