40
Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática 1

Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Capítulo 1: Introdução à Linguagem C

Pontifícia Universidade CatólicaDepartamento de Informática

1

Page 2: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Programa

• Programa é um algoritmo escrito em uma linguagem de programação.

• No nosso caso, a linguagem C.

2

Page 3: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

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

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 */

3

Page 4: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

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

• stdio.h: funções de entrada de saída• printf, scanf e etc.

• math.h: funções matemáticas• cos, sen, sqrt, pow e etc.

• string.h: funções para manipulação de string• strcmp, strlen e etc.

4

Page 5: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Definição de Tipos:a diretiva #define

• A diretiva #define associa um identificador (nome_macro) a um valor.

• 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"• #define PI 3.1415

5

Page 6: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções Auxiliares

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

tipo_de_retorno nome_da_funcao (parametros) {variáveis locais

instruções em C (comandos: expressões e operadores)}

Se uma função não tem retorno colocamos void.

Um programa C não podeter duas funções com o mesmonome.

Se uma função não tem umalista de parâmetros colocamosvoid ou apenas o ().

Consiste no bloco de comandosque compõem a função. 6

Page 7: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Função Principal

• Início da execução de um programa C:

int main (void) {/*

corpo da função: declarações de variáveis locais, chamadas a funções auxiliares, cálculos de expressões, leitura e escrita de dados etc.

*/}

Obs: /* delimita um comentário em C */

7

Page 8: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Variável

• Variável é um espaço reservado na memória do computador para armazenar um tipo de dado. Devem receber nomes para poderem ser 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 um algarismo (0-9), alguns caracteres não são válidos (*, -, /, +, ...), e palavras reservadas não podem ser utilizadas (main, if, while, ...).

8

Page 9: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Variável

• É necessário informar o nome e o tipo dos dados:• o compilador precisa saber o tipo para alocar (reservar) o espaço de

memória pré-definido para aquele tipo (quantidade de bytes).• o nome será usado para representar o espaço que está sendo alocado.

• Exemplo:int main (void){

float cels, fahr;…

}

9

Page 10: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Tipos de Variáveis 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: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplos de tipos de dados

• Constantes

• inteiras: 5 101 77 -943

• reais (float ou double): 15.3 -0.37 6. .37

• caracteres: 'c' '?' ' ' '1'

• string: "banana" "" "12@34#$" "a"

11

Page 12: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

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 */

12

Page 13: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Operadores e Expressões

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

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

variavel = expressao,

Na qual a expressão pode ser formada por várias operações

Sinal de atribuição

13

Page 14: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Operadores Aritméticos

• Soma: +

• Subtração: -

• Multiplicação: *

• Divisão: /

• Resto da divisão: % (operado apenas entre inteiros)

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

Page 15: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Expressões Aritméticas

• Exemplos:numero1 + numero2

salario + bonus * 0.2 / 12

(salario + bonus * 0.2) / 12

• Lembre-se que uma expressão é avaliada de acordo com a prioridade dos operadores.

15

Page 16: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Atribuição

• Utilizada para armazenar um valor constante ou o resultado da avaliação de uma expressão em uma variável.

• Exemplos:int numero1, numero2, soma, total;

total = 100;

numero1 = 10;numero2 = numero1 % 3;soma = numero1 + numero2;total = total + 1;

16

Page 17: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Operadores e Expressões:continuação

• Operadores de atribuição :( = , += , -= , *= , /= , %= )

• C trata uma atribuição como uma expressão• a ordem é da esquerda para a direita

• C oferece uma notação compacta para atribuições em que a mesma variável aparece dos dois lados

var op= expr é equivalente a var = var op (expr)

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

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

17

Page 18: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Operadores e Expressões:continuação

• 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 */

18

Page 19: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções de Entrada e Saída em C

• 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

19

Page 20: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções de Entrada e Saída em C

• 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

20

Page 21: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções de Entrada e Saída em C

• Especificação de tamanho de campo:

%4d

%7.2f

33

03.5

4

2

7

21

Page 22: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções de Entrada e Saída em C

• Impressão de texto:

printf("Disciplina – INF1007\n");

exibe na tela a mensagem:

Disciplina – INF1007

22

Page 23: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções de Entrada e Saída em C

• 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...);

23

Page 24: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções de Entrada e Saída em C

• 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

24

Page 25: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Funções de Entrada e Saída em C

• 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 pelo caractere dois pontos (:)

25

Page 26: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 em Linguagem C

#include <stdio.h>

int main (void)

{int numero1, numero2, diferenca;

printf ("Digite o primeiro número inteiro: ");scanf ("%d", &numero1);printf ("Digite o segundo número inteiro: ");scanf ("%d", &numero2);diferenca = numero1 - numero2;printf ("Resultado da diferenca = %d", diferenca);return 0;

}

26

Page 27: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 – execução passo-a-passo

• Chinês

numero1 numero2 diferenca saída???? ???? ????

27

Page 28: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 – execução passo-a-passo

• Chinêsprintf ("Digite o primeiro número inteiro: ");

numero1 numero2 diferenca saída???? ???? ???? Digite o primeiro ...

28

Page 29: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 – execução passo-a-passo

• Chinêsscanf ("%d", &numero1);

numero1 numero2 diferenca saída???? ???? ???? Digite o primeiro ...

171 ???? ????

29

Page 30: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 – execução passo-a-passo

• Chinêsprintf ("Digite o segundo número inteiro: ");

numero1 numero2 diferenca saída???? ???? ???? Digite o primeiro ...

171 ???? ???? Digite o segundo ...

30

Page 31: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 – execução passo-a-passo

• Chinêsscanf ("%d", &numero2);

numero1 numero2 diferenca saída???? ???? ???? Digite o primeiro ...

171 ???? ???? Digite o segundo ...

171 10 ????

31

Page 32: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 – execução passo-a-passo

• Chinêsdiferenca = numero1 - numero2;

numero1 numero2 diferenca saída???? ???? ???? Digite o primeiro ...

171 ???? ???? Digite o segundo ...

171 10 161

32

Page 33: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Exemplo 1 – execução passo-a-passo

• Chinêsprintf ("Resultado da diferenca = %d", diferenca );

numero1 numero2 diferenca saída???? ???? ???? Digite o primeiro ...

171 ???? ???? Digite o segundo ...

171 10 161 Resultado ... é 161

33

Page 34: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

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

/* 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 Celsius: ");

scanf("%f", &cels);

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

/* exibe resultado na tela */

printf("Temperatura em Fahrenheit: %f", fahr);

return 0;

}

Programando em C - Exemplo

34

Page 35: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Ponto Interessante: Aritmética Inteira

• Qual o erro na expressão 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 portanto seria 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

35

Page 36: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Aritmética Inteira

• A linguagem C oferece um operador aritmético adicional para operandos inteiros chamado operador módulo (%) – resto da divisão entre dois números inteiros.

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

36

Page 37: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Aritmética Inteira

• Escreva um programa em C que leia um valor em segundos e o imprima no formato em horas:minutos:segundos.

Por exemplo, se sua entrada for 4322 segundos a saída deve ser 1:12:2.

37

Page 38: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

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: 4322s = 1h 12min 2s38

Page 39: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Mais um Ponto Interessante:Aritmética Mista

• Se em uma expressão aritmética os operandos forem de tipos diferentes, a operação é feita na representação do tipo de maior expressividade: 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 seja feita em representação real, podemos usar um operador de conversão de tipo:

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

39

Page 40: Capítulo 1: Introdução à Linguagem Cbfeijo/prog2/Introducao_a_C... · Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática

Aritmética Mista

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

Para evitar:

O compilador irá gerar uma mensagemde advertência (warning)

40