introdução à linguagem c - departamento de físicaarosas/fisicacomputacional/aula01... ·...

77
Variáveis Estruturas de controle Operadores Representando números Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade Federal da Paraíba 26 de Março de 2009 Alexandre Rosas Introdução à Linguagem C

Upload: others

Post on 08-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Introdução à Linguagem C

Alexandre Rosas

Departamento de FísicaUniversidade Federal da Paraíba

26 de Março de 2009

Alexandre Rosas Introdução à Linguagem C

Page 2: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Tipos de dados

Constantes, variáveis, resultados de funções.Declaração: tipo_de_dado nome

int k;→ Define k como inteirodouble x;→ Define x como realdouble f(int x);→ f é função que recebe um inteiroe retorna um realchar nome[100];→ Define nome como um array de100 caracteres (string)

Alexandre Rosas Introdução à Linguagem C

Page 3: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Tipos de dados

Constantes, variáveis, resultados de funções.Declaração: tipo_de_dado nome

int k;→ Define k como inteirodouble x;→ Define x como realdouble f(int x);→ f é função que recebe um inteiroe retorna um realchar nome[100];→ Define nome como um array de100 caracteres (string)

Alexandre Rosas Introdução à Linguagem C

Page 4: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Tipos de dados

Constantes, variáveis, resultados de funções.Declaração: tipo_de_dado nome

int k;→ Define k como inteirodouble x;→ Define x como realdouble f(int x);→ f é função que recebe um inteiroe retorna um realchar nome[100];→ Define nome como um array de100 caracteres (string)

Alexandre Rosas Introdução à Linguagem C

Page 5: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Variáveis: tamanho e intervalo de validade

Tipo de dado Bits Intervalo de validadechar 1 -128 a 127

unsigned char 1 0 a 255int 4 -2147483648 a 2147483647

unsigned int 4 0 a 4294967295short int 2 -32768 a 32767

unsigned short 2 0 a 65535long int 4 -2147483648 a 2147483647

unsigned long 4 0 a 4294967295float 4 1.17549× 10−38 a 3.40282× 10+38

double 8 2.22507× 10−308 a 1.79769× 10+308

long double 12 3.362103× 10−4932 a 1.189731× 10+4932

Alexandre Rosas Introdução à Linguagem C

Page 6: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros

Variável que contem o endereço de um dadoEm contraposição ao valor do dado

int *ponteiro

endereço de memória

int inteiro

valor

ponteiro = &inteiro

Alexandre Rosas Introdução à Linguagem C

Page 7: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros

Variável que contem o endereço de um dadoEm contraposição ao valor do dado

int *ponteiro

endereço de memória

int inteiro

valor

ponteiro = &inteiro

Alexandre Rosas Introdução à Linguagem C

Page 8: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros

Variável que contem o endereço de um dadoEm contraposição ao valor do dado

int *ponteiro

endereço de memória

int inteiro

valor

ponteiro = &inteiro

Alexandre Rosas Introdução à Linguagem C

Page 9: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros

Variável que contem o endereço de um dadoEm contraposição ao valor do dado

int *ponteiro

endereço de memória

int inteiro

valor

ponteiro = &inteiro

Alexandre Rosas Introdução à Linguagem C

Page 10: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros

Variável que contem o endereço de um dadoEm contraposição ao valor do dado

int *ponteiro

endereço de memória

int inteiro

valor

ponteiro = &inteiro

Alexandre Rosas Introdução à Linguagem C

Page 11: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Os operadores * e &

inteiro é o valor de inteiro

& inteiro é o endereço de inteiro

ponteiro é o valor de ponteiro (i.e. endereço deinteiro)

* ponteiro é o valor apontado por ponteiro (i.e. valorde inteiro)

Alexandre Rosas Introdução à Linguagem C

Page 12: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Os operadores * e &

inteiro é o valor de inteiro

& inteiro é o endereço de inteiro

ponteiro é o valor de ponteiro (i.e. endereço deinteiro)

* ponteiro é o valor apontado por ponteiro (i.e. valorde inteiro)

Alexandre Rosas Introdução à Linguagem C

Page 13: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Os operadores * e &

inteiro é o valor de inteiro

& inteiro é o endereço de inteiro

ponteiro é o valor de ponteiro (i.e. endereço deinteiro)

* ponteiro é o valor apontado por ponteiro (i.e. valorde inteiro)

Alexandre Rosas Introdução à Linguagem C

Page 14: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Os operadores * e &

inteiro é o valor de inteiro

& inteiro é o endereço de inteiro

ponteiro é o valor de ponteiro (i.e. endereço deinteiro)

* ponteiro é o valor apontado por ponteiro (i.e. valorde inteiro)

Alexandre Rosas Introdução à Linguagem C

Page 15: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros são variáveis

int inteiro1=1, inteiro2=2;int *ponteiro;ponteiro = & inteiro1;ponteiro = & inteiro2;

define inteirosdefine ponteiro*ponteiro =1

*ponteiro =2

Alexandre Rosas Introdução à Linguagem C

Page 16: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros são variáveis

int inteiro1=1, inteiro2=2;int *ponteiro;ponteiro = & inteiro1;ponteiro = & inteiro2;

define inteirosdefine ponteiro*ponteiro =1

*ponteiro =2

Alexandre Rosas Introdução à Linguagem C

Page 17: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros são variáveis

int inteiro1=1, inteiro2=2;int *ponteiro;ponteiro = & inteiro1;ponteiro = & inteiro2;

define inteirosdefine ponteiro*ponteiro =1

*ponteiro =2

Alexandre Rosas Introdução à Linguagem C

Page 18: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros são variáveis

int inteiro1=1, inteiro2=2;int *ponteiro;ponteiro = & inteiro1;ponteiro = & inteiro2;

define inteirosdefine ponteiro*ponteiro =1

*ponteiro =2

Alexandre Rosas Introdução à Linguagem C

Page 19: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Ponteiros são variáveis

int inteiro1=1, inteiro2=2;int *ponteiro;ponteiro = & inteiro1;ponteiro = & inteiro2;

define inteirosdefine ponteiro*ponteiro =1

*ponteiro =2

Alexandre Rosas Introdução à Linguagem C

Page 20: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Matrizes

Definição: int inteiros[100]char string[50] double real[50][50]Em C, o primeiro elemento de uma matriz é o [0]Matrizes são ponteiros constantesseu valor pode mudar, seu endereço não!matriz é o endereço de matriz[0]

*(matriz+1) = matriz[1]

Alexandre Rosas Introdução à Linguagem C

Page 21: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Matrizes

Definição: int inteiros[100]char string[50] double real[50][50]Em C, o primeiro elemento de uma matriz é o [0]Matrizes são ponteiros constantesseu valor pode mudar, seu endereço não!matriz é o endereço de matriz[0]

*(matriz+1) = matriz[1]

Alexandre Rosas Introdução à Linguagem C

Page 22: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Matrizes

Definição: int inteiros[100]char string[50] double real[50][50]Em C, o primeiro elemento de uma matriz é o [0]Matrizes são ponteiros constantesseu valor pode mudar, seu endereço não!matriz é o endereço de matriz[0]

*(matriz+1) = matriz[1]

Alexandre Rosas Introdução à Linguagem C

Page 23: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Matrizes

Definição: int inteiros[100]char string[50] double real[50][50]Em C, o primeiro elemento de uma matriz é o [0]Matrizes são ponteiros constantesseu valor pode mudar, seu endereço não!matriz é o endereço de matriz[0]

*(matriz+1) = matriz[1]

Alexandre Rosas Introdução à Linguagem C

Page 24: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Matrizes

Definição: int inteiros[100]char string[50] double real[50][50]Em C, o primeiro elemento de uma matriz é o [0]Matrizes são ponteiros constantesseu valor pode mudar, seu endereço não!matriz é o endereço de matriz[0]

*(matriz+1) = matriz[1]

Alexandre Rosas Introdução à Linguagem C

Page 25: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Matrizes

Definição: int inteiros[100]char string[50] double real[50][50]Em C, o primeiro elemento de uma matriz é o [0]Matrizes são ponteiros constantesseu valor pode mudar, seu endereço não!matriz é o endereço de matriz[0]

*(matriz+1) = matriz[1]

Alexandre Rosas Introdução à Linguagem C

Page 26: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Validade das variáveis

Tipo da variável Validade

Variável local é definida dentro de uma função,sendo válida apenas dentro da função

Variável global é definida fora da função, sendo válidaem todo arquivo

externdeve constar em todos os arquivos emque a variável deve ser vista

Alexandre Rosas Introdução à Linguagem C

Page 27: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Validade das variáveis

Tipo da variável Validade

Variável local é definida dentro de uma função,sendo válida apenas dentro da função

Variável global é definida fora da função, sendo válidaem todo arquivo

externdeve constar em todos os arquivos emque a variável deve ser vista

Alexandre Rosas Introdução à Linguagem C

Page 28: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Validade das variáveis

Tipo da variável Validade

Variável local é definida dentro de uma função,sendo válida apenas dentro da função

Variável global é definida fora da função, sendo válidaem todo arquivo

externdeve constar em todos os arquivos emque a variável deve ser vista

Alexandre Rosas Introdução à Linguagem C

Page 29: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cabeçalho

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

#define PI 3.14159

double time;double f(int x);

main(){

bibliotecas

definição

variável globalprotótipo de função global

Alexandre Rosas Introdução à Linguagem C

Page 30: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cabeçalho

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

#define PI 3.14159

double time;double f(int x);

main(){

bibliotecas

definição

variável globalprotótipo de função global

Alexandre Rosas Introdução à Linguagem C

Page 31: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cabeçalho

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

#define PI 3.14159

double time;double f(int x);

main(){

bibliotecas

definição

variável globalprotótipo de função global

Alexandre Rosas Introdução à Linguagem C

Page 32: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cabeçalho

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

#define PI 3.14159

double time;double f(int x);

main(){

bibliotecas

definição

variável globalprotótipo de função global

Alexandre Rosas Introdução à Linguagem C

Page 33: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cabeçalho

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

#define PI 3.14159

double time;double f(int x);

main(){

bibliotecas

definição

variável globalprotótipo de função global

Alexandre Rosas Introdução à Linguagem C

Page 34: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Corpo do programa

main(){

int i, j=10;char nome[100];

for(i=0; i<j; i++){if(j%i == 0){printf("%d\n", i);

}}

variáveis locais

estrutura de controle – for

estrutura de controle – if

Alexandre Rosas Introdução à Linguagem C

Page 35: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Corpo do programa

main(){

int i, j=10;char nome[100];

for(i=0; i<j; i++){if(j%i == 0){printf("%d\n", i);

}}

variáveis locais

estrutura de controle – for

estrutura de controle – if

Alexandre Rosas Introdução à Linguagem C

Page 36: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Corpo do programa

main(){

int i, j=10;char nome[100];

for(i=0; i<j; i++){if(j%i == 0){printf("%d\n", i);

}}

variáveis locais

estrutura de controle – for

estrutura de controle – if

Alexandre Rosas Introdução à Linguagem C

Page 37: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Corpo do programa

main(){

int i, j=10;char nome[100];

for(i=0; i<j; i++){if(j%i == 0){printf("%d\n", i);

}}

variáveis locais

estrutura de controle – for

estrutura de controle – if

Alexandre Rosas Introdução à Linguagem C

Page 38: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Laços

for(i=0; i<j; i++)i=0 valor iniciali<j condição de repetição do laçoi++ incremento

while(condição)

Alexandre Rosas Introdução à Linguagem C

Page 39: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Laços

for(i=0; i<j; i++)i=0 valor iniciali<j condição de repetição do laçoi++ incremento

while(condição)

Alexandre Rosas Introdução à Linguagem C

Page 40: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Estruturas lógicas

if(i<j) { bloco de comandos }else {bloco alternativo }

x = (condição) ? (valor severdadeira):(valor se falsa);

switch (variável)case 1: { bloco de comandos; break;}case 2: { bloco de comandos; break;}

Alexandre Rosas Introdução à Linguagem C

Page 41: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Estruturas lógicas

if(i<j) { bloco de comandos }else {bloco alternativo }

x = (condição) ? (valor severdadeira):(valor se falsa);

switch (variável)case 1: { bloco de comandos; break;}case 2: { bloco de comandos; break;}

Alexandre Rosas Introdução à Linguagem C

Page 42: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Estruturas lógicas

if(i<j) { bloco de comandos }else {bloco alternativo }

x = (condição) ? (valor severdadeira):(valor se falsa);

switch (variável)case 1: { bloco de comandos; break;}case 2: { bloco de comandos; break;}

Alexandre Rosas Introdução à Linguagem C

Page 43: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Operadores aritiméticos e relacionais

Aritiméticos Relacionaisoperador efeito operador efeito− subtração > maior+ soma >= maior ou igual∗ multiplicação < menor/ divisão <= menor ou igual% resto da divisão == igual−− decremento ! = diferente++ incremento

Alexandre Rosas Introdução à Linguagem C

Page 44: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Operadores lógicos

operador efeito0 Falso1 Verdadeiro!x negação lógica

x&&y E lógicox ||y OU lógico

Alexandre Rosas Introdução à Linguagem C

Page 45: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Operadores binários

operador nome – efeito∼ i Complemento – inverte todos os bitsi&j E binário – 1 se ambos os bits forem 1i ∧ j OU exclusivo – 1 se pelo menos um dos bits for 1i |j OU inclusivo – 1 se apenas um dos bits for 1

i << j deslocamento à esquerda – move j bits para esquerdai >> j deslocamento à direita – move j bits para direita

Alexandre Rosas Introdução à Linguagem C

Page 46: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números Inteiros

1 1 0 1 0 0 0 . . . 0 1 1

sinal

armazenamento do número

int

1 · 214 +0 · 213 +1 · 212 +0 · 211 +0 · 210 + 0 · 29 + . . . + 0 · 22 + 1 · 21 + 1 · 20

1 · 215

unsigned int

Alexandre Rosas Introdução à Linguagem C

Page 47: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números Inteiros

1 1 0 1 0 0 0 . . . 0 1 1

sinal

armazenamento do número

int

1 · 214 +0 · 213 +1 · 212 +0 · 211 +0 · 210 + 0 · 29 + . . . + 0 · 22 + 1 · 21 + 1 · 20

1 · 215

unsigned int

Alexandre Rosas Introdução à Linguagem C

Page 48: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números Inteiros

1 1 0 1 0 0 0 . . . 0 1 1

sinal

armazenamento do número

int

1 · 214 +0 · 213 +1 · 212 +0 · 211 +0 · 210 + 0 · 29 + . . . + 0 · 22 + 1 · 21 + 1 · 20

1 · 215

unsigned int

Alexandre Rosas Introdução à Linguagem C

Page 49: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números Inteiros

1 1 0 1 0 0 0 . . . 0 1 1

sinal

armazenamento do número

int

1 · 214 +0 · 213 +1 · 212 +0 · 211 +0 · 210 + 0 · 29 + . . . + 0 · 22 + 1 · 21 + 1 · 20

1 · 215

unsigned int

Alexandre Rosas Introdução à Linguagem C

Page 50: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números Inteiros

1 1 0 1 0 0 0 . . . 0 1 1

sinal

armazenamento do número

int

1 · 214 +0 · 213 +1 · 212 +0 · 211 +0 · 210 + 0 · 29 + . . . + 0 · 22 + 1 · 21 + 1 · 20

1 · 215

unsigned int

Alexandre Rosas Introdução à Linguagem C

Page 51: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números reais

Notação científica normalizada

58.4358=0.584358× 102

mantissa

expoente

Alexandre Rosas Introdução à Linguagem C

Page 52: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números reais

Em geral, um número decimal x pode ser representadocomo

x = ±r × 10n

1/10 ≤ r < 1

De forma análoga, escrevemos um número binário como

x = (−1)sq × 2m

expoentesinal

1/2 ≤ q < 1

Alexandre Rosas Introdução à Linguagem C

Page 53: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Números reais

Em geral, um número decimal x pode ser representadocomo

x = ±r × 10n

1/10 ≤ r < 1

De forma análoga, escrevemos um número binário como

x = (−1)sq × 2m

expoentesinal

1/2 ≤ q < 1

Alexandre Rosas Introdução à Linguagem C

Page 54: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Precisão numérica

float doublesinal 1 1

expoente 8 11mantissa 23 52precisão 2−23 ∼ 10−6 −−10−7 2−52 ∼ 10−15 −−10−16

dígitos 6 – 7 15–16

Alexandre Rosas Introdução à Linguagem C

Page 55: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Fontes de erros numéricos

OverflowUnderflowErro de arredondamentoPerda de precisão

Alexandre Rosas Introdução à Linguagem C

Page 56: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Overflow

int float doublex 1000 1.1× 1010 1.1× 10100

x2 1000000 1.21× 1020 1.21× 10200

x3 1000000000 1.331× 1030 1.331× 10300

x4 -727379968 inf inf

Alexandre Rosas Introdução à Linguagem C

Page 57: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Underflow

x 1.1× 10−10 1.1× 10−100

x2 1.21× 10−20 1.21× 10−200

x3 1.331× 10−30 1.331× 10−300

x4 1.4641× 10−40 0x5 0 0

Alexandre Rosas Introdução à Linguagem C

Page 58: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Erro de arredondamento

x = 12.3456789111315777 = 0.123456789111315777× 102

armazenado perdido

Alexandre Rosas Introdução à Linguagem C

Page 59: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Perda de precisão

A + B − C = A− C + B ?

Não no computador...

1.0× 1020 − 1.0× 1020 + 1.0 = 1.0

1.0× 1020 + 1.0− 1.0× 1020 = 0.0

Alexandre Rosas Introdução à Linguagem C

Page 60: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Perda de precisão

A + B − C = A− C + B ?

Não no computador...

1.0× 1020 − 1.0× 1020 + 1.0 = 1.0

1.0× 1020 + 1.0− 1.0× 1020 = 0.0

Alexandre Rosas Introdução à Linguagem C

Page 61: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Perda de precisão

A + B − C = A− C + B ?

Não no computador...

1.0× 1020 − 1.0× 1020 + 1.0 = 1.0

1.0× 1020 + 1.0− 1.0× 1020 = 0.0

Alexandre Rosas Introdução à Linguagem C

Page 62: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Como calcular e−x?

1 Somar a série:∑∞

n=0(−1)n xn

n!

2 Usar uma relação de recorrência:∑∞

n=0 sn, sn = sn−1xn

3 Calcular ex e depois inverter

Alexandre Rosas Introdução à Linguagem C

Page 63: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Como calcular e−x?

1 Somar a série:∑∞

n=0(−1)n xn

n!

2 Usar uma relação de recorrência:∑∞

n=0 sn, sn = sn−1xn

3 Calcular ex e depois inverter

Alexandre Rosas Introdução à Linguagem C

Page 64: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Como calcular e−x?

1 Somar a série:∑∞

n=0(−1)n xn

n!

2 Usar uma relação de recorrência:∑∞

n=0 sn, sn = sn−1xn

3 Calcular ex e depois inverter

Alexandre Rosas Introdução à Linguagem C

Page 65: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Série

Alexandre Rosas Introdução à Linguagem C

Page 66: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Série

n e−x

55.000000 6875763.84955.500000 367388.849156.000000 1920305156.500000 -33269152.7357.000000 -69743335.3857.500000 nan

Fatorial→ 171! OVERFLOW

Alexandre Rosas Introdução à Linguagem C

Page 67: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Série

n e−x

55.000000 6875763.84955.500000 367388.849156.000000 1920305156.500000 -33269152.7357.000000 -69743335.3857.500000 nan

Fatorial→ 171! OVERFLOW

Alexandre Rosas Introdução à Linguagem C

Page 68: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Relação de Recorrência

Não há overflow, não calculamos o fatorialResultados continuam inconsistentesSoma de números grandes com sinal contrárioErro devido à perda de precisão maior que resultado

Alexandre Rosas Introdução à Linguagem C

Page 69: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Relação de Recorrência

Não há overflow, não calculamos o fatorialResultados continuam inconsistentesSoma de números grandes com sinal contrárioErro devido à perda de precisão maior que resultado

Alexandre Rosas Introdução à Linguagem C

Page 70: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Relação de Recorrência

Não há overflow, não calculamos o fatorialResultados continuam inconsistentesSoma de números grandes com sinal contrárioErro devido à perda de precisão maior que resultado

Alexandre Rosas Introdução à Linguagem C

Page 71: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Relação de Recorrência

Alexandre Rosas Introdução à Linguagem C

Page 72: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cálculo de 1/ex

Todos os termos são positivosNão há problema com a perda de precisão

Alexandre Rosas Introdução à Linguagem C

Page 73: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cálculo de 1/ex

Alexandre Rosas Introdução à Linguagem C

Page 74: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cálculo de 1/ex

Todos os termos são positivosNão há problema com a perda de precisãoO cálculo do fatorial volta a causar problema

Alexandre Rosas Introdução à Linguagem C

Page 75: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cálculo de 1/ex

Todos os termos são positivosNão há problema com a perda de precisãoO cálculo do fatorial volta a causar problema

Alexandre Rosas Introdução à Linguagem C

Page 76: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cálculo de 1/ex

Alexandre Rosas Introdução à Linguagem C

Page 77: Introdução à Linguagem C - Departamento de Físicaarosas/FisicaComputacional/aula01... · 2013-07-04 · Introdução à Linguagem C Alexandre Rosas Departamento de Física Universidade

VariáveisEstruturas de controle

OperadoresRepresentando números

Cálculo de 1/ex via série

Alexandre Rosas Introdução à Linguagem C