77
© M@nso 2003 Introdução à programação Computadores e programação I Linguagens de Linguagens de programação programação Introdução ao C

© M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Embed Size (px)

Citation preview

Page 1: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

© M@nso 2003

Introdução à programação Computadores e programação I

Linguagens de Linguagens de programaçãoprogramação

Introdução ao C

Page 2: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

SumárioSumário Execução de programas

interpretadores, compiladores Linguagem

Manipulação de informação Variáveis tipos de dados

Operadores aritméticos, lógicos

Leitura e escrita entrada e saída de dados

Selecção de instruções Instrução if Instrução Switch

Erros em programação

Page 3: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Interpretação de ProgramasInterpretação de Programas

Basic, Java, Portugol

interpretadorinterpretador

Programa que Programa que converte as converte as instruções da instruções da linguagem de linguagem de alto nível em alto nível em instruções instruções máquina e as máquina e as executa.executa.

Programa que Programa que converte as converte as instruções da instruções da linguagem de linguagem de alto nível em alto nível em instruções instruções máquina e as máquina e as executa.executa.

Page 4: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Compilação de programasCompilação de programas

C,C++, Pascal

Compilador (compiler)Compilador (compiler)

Programa que Programa que converte as converte as instruções da instruções da linguagem de alto linguagem de alto nível em instruções nível em instruções máquina formando máquina formando um programa um programa objectoobjecto

Programa que Programa que converte as converte as instruções da instruções da linguagem de alto linguagem de alto nível em instruções nível em instruções máquina formando máquina formando um programa um programa objectoobjecto

Ligador (linker)Ligador (linker)

Programa que Programa que reúne todos os reúne todos os programas objecto programas objecto e faz um programa e faz um programa executávelexecutável

Programa que Programa que reúne todos os reúne todos os programas objecto programas objecto e faz um programa e faz um programa executávelexecutável

ProgramasProgramas

Executados pelo Executados pelo sistema operativosistema operativo

Executados pelo Executados pelo sistema operativosistema operativo

Page 5: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

© M@nso 2003

Introdução à programação Computadores e programação I

Introdução à linguagem Introdução à linguagem CC

Page 6: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Porquê C++Porquê C++

É a base de linguagens de programação modernas

É um investimento Linguagem estandardizada Muitos programas escritos em C / C++

È uma linguagem genérica Serve para vários fins

É disciplinadora Programar com método

É eficiente Existem bons compiladores

Page 7: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Ola mundoOla mundo #include <stdio.h>#include <stdio.h>

Biblioteca de funções de entrada e saida de dados int main(int argc, char* argv[])int main(int argc, char* argv[])

Função principalFunção principal { }{ }

Definição de um bloco de instruçõesDefinição de um bloco de instruções printf("ola mundo");printf("ola mundo");

escreverescrever return 0;return 0;

Retorno do programaRetorno do programaOlá mundoOlá mundo

#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ printf("ola mundo")printf("ola mundo");; return 0return 0;;}}

#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ printf("ola mundo")printf("ola mundo");; return 0return 0;;}}

Page 8: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Algoritmos computacionaisAlgoritmos computacionais

Acções de um algoritmo computacional Manipular dados

Receber dados Guardar dados Imprimir dados

Executar instruções Fazer operações aritméticas Fazer operações lógicas Escolha entre várias instruções. Repetir um conjunto de instruções

Page 9: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Tipos de dados em CTipos de dados em C

Simples Numéricos

inteiros reais

Caracter Lógico

Compostos Matrizes Estruturas Uniões

D0variável

11100 11100

D0variável

lógico

VERDADEIRO0100 0001

D0 variável caracter

A0100 0001

Variáveis Um nome Um Tipo Um só valor

A0 inteiro

50 000100 0001 0100 0001

Nome da variável

C Real

-3,14156100 0001 100 0001

Nome da variável

0100 0001 0100 0001

Page 10: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Declaração de variáveisDeclaração de variáveis Tipo_de_dado nome_da_variável; Tipo_de_dado nome_da_variável = valor_inicial;• Tipo_de_dado nome_da_variável1,

nome_da_variável2, . . .;

NOTANOTA

A declaração das variáveis deve ser feita antes da sua utilizaçãoA declaração das variáveis deve ser feita antes da sua utilização

ExemplosExemplos

int int somasoma;;float float saldosaldo = = 0.00.0;;doule doule x, y, zx, y, z;;

int int somasoma;;float float saldosaldo = = 0.00.0;;doule doule x, y, zx, y, z;;

Page 11: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Regras dos nomes de variáveisRegras dos nomes de variáveis Pode ser constituído por letras do alfabeto por

dígitos e pelo caracter _ (underscore) O primeiro caracter não pode ser um dígito As letras maiúsculas e minúsculas representam

caracteres diferentes Não pode ter o nome de uma palavra reservado da

linguagem Deve ser descritivo daquilo que armazena

Caso tenha mais que uma palavra utilizar o caracter _ para unir as palavras ou capitular as iniciais

Não é aconselhado A utilização de caracteres acentuados Começar por _ Ter apenas letras maiúsculas

Page 12: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Palavras reservadas do CPalavras reservadas do C

Page 13: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Atribuição de Valores – operador =Atribuição de Valores – operador =

NOTANOTA

O operado = é o operador de atribuição e significa que a variável passa a ter um novo valor (<- no portugol)

O operador == (igual) é o operador de comparação e devolve verdadeiro ou falso ( = no portugol)

O operado = é o operador de atribuição e significa que a variável passa a ter um novo valor (<- no portugol)

O operador == (igual) é o operador de comparação e devolve verdadeiro ou falso ( = no portugol)

ExemplosExemplos

soma soma == 10 ; 10 ;

saldo saldo == soma + 1;soma + 1;

area area == lado1 * lado2; lado1 * lado2;

soma soma == 10 ; 10 ;

saldo saldo == soma + 1;soma + 1;

area area == lado1 * lado2; lado1 * lado2;

variavel =

expressão;

Page 14: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Atribuição de valoresAtribuição de valores Valores na Base:

Decimal numeração normal

00 22 63638383

Octal Começam por 0 (zero)

0000 0022 007777 00123123 Hexadecimal

Começam por 0x (zero xis) 0x0x00 0x0x22 0x0x3f3f 0x0x5353

atribuição do valor doze a xatribuição do valor doze a x

X = 12;X = 12;X = 014;X = 014;X = 0xC;X = 0xC;

X = 12;X = 12;X = 014;X = 014;X = 0xC;X = 0xC;

Page 15: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Inteiros - intInteiros - int Sinal

signed – positivos e negativos 1 bit para representar o sinal

unsigned – apenas números positivos Tamanho

short – menor dimensão em bytes 2 bytes

long – maior dimensão em bytes 4 bytes

Exemplos unsigned short int x; signed short int y; unsigned long int total; long int votos; int nota;

NOTANOTApor defeito os inteiros são:

•signed•16 bits

•short•32 bits

•long

por defeito os inteiros são:

•signed•16 bits

•short•32 bits

•long

Page 16: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Alcance dos inteirosAlcance dos inteiros

Page 17: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

exemplosexemplos Nota final da disciplina de IP

unsigned short int nota; unsigned short nota;

Soma das notas das disciplinas de uma aluno unsigned short int somaNotas; unsigned short somaNotas;

Número de segundos de vida de uma pessoa unsigned long int numMinutos; unsigned long numMinutos;

Diferença entre o número de segundos de duas pessoas

signed long difSegundos; long difsegundos;

Diferença entre o número de anos de duas pessoas signed short int difAnos; short difAnos;

Page 18: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Números ReaisNúmeros Reais

Tipo float double

Representação Base e Mantissa

notação Notação corrente

1.23 .23 0.23 1.1.0

Notação científica 1.2E10 1.23e-15

Modificadores long

ExemploExemplo

float raio = .50;float raio = .50;long double taxa = 5E-2 ;long double taxa = 5E-2 ;

float raio = .50;float raio = .50;long double taxa = 5E-2 ;long double taxa = 5E-2 ;

base mantissa

102.8

NOTANOTA

Os números armazenados em virgula flutuante podem comportar um erro de arredondamento resultante da sua representação

Os números armazenados em virgula flutuante podem comportar um erro de arredondamento resultante da sua representação

Page 19: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erro nos Números ReaisErro nos Números Reais

NOTANOTA

Os números armazenados em virgula flutuante podem comportar um erro de arredondamento resultante da sua representação

Os números armazenados em virgula flutuante podem comportar um erro de arredondamento resultante da sua representação

Page 20: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Caracteres (char)Caracteres (char) Ocupam um byte

256 caracteres disponíveis Representados por um número

Tabela ASCII Atribuição

Utilização do caracter plica (‘) char sexo = ‘m’;char sexo = ‘m’; char enter =‘\n’char enter =‘\n’

Utilização directa do código ASCII

char letra = 98; char letra = 98;

Modificadores signed unsigned

\a Sinal sonoro

\n New line

\r Carriage return

\v Vertical tabulation

\t Horizontal tabulation

\\ Caracter \

\’ Caracter ‘

\” Caracter “

\b Backspace

\0xff

Caracter 0xff ASCII

Caracteres especiais

Page 21: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Tabela ASCIITabela ASCII

ExemploExemplo

char sexo;char sexo;

Sexo = ‘M’;Sexo = ‘M’;

Sexo = 77;Sexo = 77;

char sexo;char sexo;

Sexo = ‘M’;Sexo = ‘M’;

Sexo = 77;Sexo = 77;

Page 22: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Definição de tipos - Definição de tipos - EnumeraçõesEnumerações

enum semana{ segunda=2, terca=3, quarta=4, quinta=5, sexta=6, sabado=7, domingo=8 };

segu

nda

terç

a

quar

ta

quin

ta

sext

a

saba

do

dom

ingo

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10

Nome

Valor

Definição de nomes para valores Cores , Dias da semana , Meses, etc.

ExemploExemplo

enum semana teoricaIP, praticaIP;teoricaIP, praticaIP;teoricaIP = segunda;teoricaIP = segunda;praticaIP = teoricaIP +1 ;praticaIP = teoricaIP +1 ;

enum semana teoricaIP, praticaIP;teoricaIP, praticaIP;teoricaIP = segunda;teoricaIP = segunda;praticaIP = teoricaIP +1 ;praticaIP = teoricaIP +1 ;

Page 23: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Definição de tipos - Definição de tipos - EnumeraçõesEnumerações

enum novo_tipo {nome_1=valor_1, nome_2, . . .,nome_n};novo_tipo nome_variavel = nome_x;

enum novo_tipo {nome_1=valor_1, nome_2, . . .,nome_n};novo_tipo nome_variavel = nome_x;

enum logica {falso, verdadeiro };enum logica condicao=verdadeiro;

NOTASNOTAS

•Quando omitimos o valor a enumeração toma o valor da anterior mais uma unidade.• Por defeito começam em zero

•Quando omitimos o valor a enumeração toma o valor da anterior mais uma unidade.• Por defeito começam em zero

enum Cores {verde= 0 , amarelo = 1, vermelho =2 };enum Cores semaforo = verde;

Page 24: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Valores lógicos (bool)Valores lógicos (bool)

Dois valores definidos false (valor zero) true (um ou qualquer outro valor)

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

FA

LSO

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

VE

RD

AD

EIR

O

-3 -2 -1 0 1 2 3 4 5 6 7 8

Nome

Valor

ExemploExemplo

bool aprovado, trabEstudante;bool aprovado, trabEstudante;aprovador = true;aprovador = true;trabEstudante = false;trabEstudante = false;

bool aprovado, trabEstudante;bool aprovado, trabEstudante;aprovador = true;aprovador = true;trabEstudante = false;trabEstudante = false;

Page 25: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Definição de tipos - TypedefDefinição de tipos - Typedef

Definição de nomes para tipos

typedef tipo_de_dado novo_nome_do_tipo ;

Exemplos typedef unsigned long int int32;

definição de um novo tipo chamado int32

int32 somatorio; definicao de uma variável do tipo int32

Page 26: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Tipos de dados do c++ BuilderTipos de dados do c++ Builder

tipotamanho(bits) Mínimo Máximo

unsigned char 8 0 255

char 8 -128 127

short int 16 -32,768 32,767

unsigned int 32 0 4,294,967,295

int 32 -2,147483648 2,147,483,647

unsigned long 32 0 4,294,967,295

enum 32 -2,147483648 2,147,483,647

long 32 -2,147483648 2,147,483,647

float 32 1.18  10^-38 < |X| < 3.40  10^38

double 64 2.23  10^-308 < |X| < 1.79  10^308

long double 80 3.37  10^-4932 < |X| < 1.18  10^4932

Page 27: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercícosExercícos

Defina variáveis em C para manipular A média das notas de um ano lectivo O salário de um trabalhador O número de alunos de um país O saldo de uma conta bancária Número de dias entre duas datas O sexo de um aluno Factor rhesus do sangue (+ e -) A situação de uma aluno relativo à

aprovação A situação de uma aluno relativo á

matrícula.

Page 28: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

© M@nso 2003

Introdução à programação Computadores e programação I

Entrada e saída de Entrada e saída de dadosdados

Page 29: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Entrada e saida de dadosEntrada e saida de dados

scanf Entrada de dados pelo teclado

printf Saída de dado para a consola

scanf(“string de formato”, &&variavel , &&variavel ,…); scanf(“%f", &&altura); scanf(“%d", &&idade); scanf(“%f %d", &&altura, &&idade);

printf(“string de formato”, variavel , variavel ,…); printf(“ a altura é %f :", altura); printf(“ a idade é %d :", idade); printf(“\n altura: %f idade :%d \n", altura, idade);

Page 30: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Formato de dados (I/O)Formato de dados (I/O) c c

caractercaracter s s

cadeia de caracterescadeia de caracteres d d

inteirointeiro f f

real no formato numéricoreal no formato numérico e e

real no formato cientificoreal no formato cientifico

u u sem sinal sem sinal

l l grandegrande

h h pequenopequeno

o o octaloctal

x x HexadecimalHexadecimal

%c Caracter char%s cadeias de caracteres char[]

%d numero decimal int%hd numero decimal pequeno (short) short int%ld numero decimal grande (long) long int%u numero decimal sem sinal unsigned int%hd numero decimal sem sinal pequeno unsigned short int%ld numero decimal grande sem sinal unsigned long int%o numero decimal em octal int%x numero decimal em hexadecimal int

%e numero real no formato cientifico ( 1.2e45) float%le numero real no formato cientifico grande (long) double%f numero real no formato numérico float%lf numero real double

Page 31: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Programa gentilPrograma gentil

ExemploExemplo

#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ int idade;int idade; printf(“qual a sua idade:”);printf(“qual a sua idade:”); scanf(“ scanf(“ %d%d ” , ” , &idade&idade);); printf(“parabens, voce tem printf(“parabens, voce tem %d%d anos“, anos“, idadeidade););}}

#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ int idade;int idade; printf(“qual a sua idade:”);printf(“qual a sua idade:”); scanf(“ scanf(“ %d%d ” , ” , &idade&idade);); printf(“parabens, voce tem printf(“parabens, voce tem %d%d anos“, anos“, idadeidade););}}

Page 32: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Ficheiros geradosFicheiros gerados

Page 33: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Algoritmos computacionaisAlgoritmos computacionais

Acções de um algoritmo computacional Manipular dados

Receber dados Guardar dados Imprimir dados

Executar instruções Fazer operações aritméticas Fazer operações lógicas Escolha entre várias instruções. Repetir um conjunto de instruções

Page 34: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

© M@nso 2003

Introdução à programação Computadores e programação I

OperadoresOperadores

Page 35: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

25 205 12

1

InteirosInteiros

Operadores unários - (sinal)

Operadores binários + (Soma) - (Subtracção) / (Divisão inteira) % (Módulo)

NOTANOTAQualquer operação entre inteiros devolve um inteiro

Qualquer operação entre inteiros devolve um inteiro

ExemploExemplo

25 - 2 = 23 25 - 2 = 23 --3 - 2 = -53 - 2 = -525 / 2 = 12 25 + 2 = 2725 / 2 = 12 25 + 2 = 2725 % 2 = 1 25 * 2 = 5025 % 2 = 1 25 * 2 = 50

25 - 2 = 23 25 - 2 = 23 --3 - 2 = -53 - 2 = -525 / 2 = 12 25 + 2 = 2725 / 2 = 12 25 + 2 = 2725 % 2 = 1 25 * 2 = 5025 % 2 = 1 25 * 2 = 50

Page 36: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores unários – Pós fixoOperadores unários – Pós fixo

Operadores unários ++ (incremento) -- (decremento)

NotaNota

X++X++X = X+1X = X+1X++X++X = X+1X = X+1

NotaNota

X--X--X = X-1X = X-1X--X--X = X-1X = X-1

NotaNota

y = x++y = x++

y = xy = xx = x+1x = x+1

y = x++y = x++

y = xy = xx = x+1x = x+1

NotaNota

y = x--y = x--

y = xy = xx = x-1x = x-1

y = x--y = x--

y = xy = xx = x-1x = x-1

xx

3333yy

expressãoexpressão

y = x++;y = x++; y = x++;y = x++;

xx

4444yy

3333

Page 37: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores unários – Pré fixoOperadores unários – Pré fixo

Operadores unários ++ (incremento) -- (decremento)

NotaNota

++X++XX = X+1X = X+1++X++XX = X+1X = X+1

NotaNota

--X--XX = X-1X = X-1--X--XX = X-1X = X-1

NotaNota

y = ++xy = ++x

x = x+1x = x+1y = xy = x

y = ++xy = ++x

x = x+1x = x+1y = xy = x

NotaNota

y = --xy = --x

x = x-1x = x-1y = xy = x

y = --xy = --x

x = x-1x = x-1y = xy = x

xx

3333yy

expressãoexpressão

y = --x;y = --x; y = --x;y = --x;

xx

2222yy

2222

Page 38: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores bit a bitOperadores bit a bit

Manipulam directamente a representação binária dos números

e (and) &

ou (or) |

ou exclusivo (Xor) ^

Deslocamento à esquerda <<

Deslocamento à direita >>

OU 0 1

0 0 1

1 1 1

E 0 1

0 0 0

1 0 1

Multiplicação

Lógica

Multiplicação

Lógica

SomaLógica

SomaLógica

xor

0 1

0 0 1

1 1 0diferença

Lógica

diferençaLógica

0 0 0 0 0 1 1 0

Page 39: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores bit a bit - OROperadores bit a bit - OR

xx

91919191yy

121288121288

expressãoexpressão

z = x | y ;z = x | y ; z = x | y ;z = x | y ;

xx

91919191yy

121288121288

zz

zz

212199212199

OU 0 1

0 0 1

1 1 1

SomaLógica

SomaLógica

0 1 0 1 1 0 1 1 91

1 0 0 0 0 0 0 0 128|

1 1 0 1 1 0 1 1 219

Page 40: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores bit a bit - ANDOperadores bit a bit - AND

xx

90909090yy

20202020

expressãoexpressão

z = x & y ;z = x & y ; z = x & y ;z = x & y ;

xx

90909090yy

20202020

zz

zz

16161616

128 64 32 16 8 4 2 1

0 1 0 1 1 0 1 0 90

0 0 0 1 0 1 0 0 20&

0 0 0 1 0 0 0 0 16

E 0 1

0 0 0

1 0 1

Multiplicação

Lógica

Multiplicação

Lógica

Page 41: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores bit a bit - XOROperadores bit a bit - XOR

xx

90909090yy

20202020

expressãoexpressão

z = x ^ y ;z = x ^ y ; z = x ^ y ;z = x ^ y ;

xx

90909090yy

20202020

zz

zz

78787878

0 1 0 1 1 0 1 0 90

0 0 0 1 0 1 0 0 20^

0 1 0 0 1 1 1 0 78

xor

0 1

0 0 1

1 1 0diferença

Lógica

diferençaLógica

Page 42: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores bit a bit - DeslocamentoOperadores bit a bit - Deslocamento

xx

20202020yy

expressãoexpressão

y = x << y = x << 2;2; y = x << y = x << 2;2;

xx

20202020yy

80808080

0 0 0 1 0 1 0 0 20<< 2

0 1 0 1 0 0 0 0 80

•Algoritmo•deslocam-se os bites para a esquerda•os últimos bites perdem-se•introduzem-se zeros no inicio

Page 43: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores bit a bit - DeslocamentoOperadores bit a bit - Deslocamento

xx

20202020yy

expressãoexpressão

y = x >> y = x >> 2;2; y = x >> y = x >> 2;2;

xx

20202020yy

5555•Algoritmo

•deslocam-se os bites para a direita•os primeiros bites perdem-se•introduzem-se zeros no fim

0 0 0 1 0 1 0 0 20>>2

0 0 0 0 0 1 0 1 5

Page 44: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores sobre reaisOperadores sobre reais

Aritméticos multiplicação divisão soma subtracção

C Real

-3,14156100 0001 100 0001

Nome da variável

0100 0001 0100 0001

mantissa expoente

Page 45: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores compostosOperadores compostos

+= , -=,%=, *=, /=, >>=, <<=, &=, |=, ^= += , -=,%=, *=, /=, >>=, <<=, &=, |=, ^=

variável Operador= expressão Variavel = variavel operador expressão

exemplosexemplos

X+= 3;X+= 3;X = X+3;X = X+3;X+= 3;X+= 3;X = X+3;X = X+3;

exemplosexemplos

x/=y;x/=y;x = x /y;x = x /y;x/=y;x/=y;x = x /y;x = x /y;

exemplosexemplos

X*= 3;X*= 3;X = X*3;X = X*3;X*= 3;X*= 3;X = X*3;X = X*3;

exemplosexemplos

X|= y;X|= y;X = X | y;X = X | y;X|= y;X|= y;X = X | y;X = X | y;

Page 46: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Operadores sobre lógicosOperadores sobre lógicos

RELACIONAIS Maior

> Menor

< Igual

== Maior ou igual

>= Menor ou igual

<= Diferente

!=

LÒGICOS Conjunção

&& Disjunção

|| Negação

!

Page 47: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

AssociatividadeAssociatividade

Associatividade esquerda=> direita x + y + z

3 + z 7

z / x * y 2 * z

2

xx

2222yy

1111zz

4444rr

1111

Associatividade direita => esquerda r =x + y + z

7 r = 7 teste = !matriculado

teste = true x = -z

x=-4

matriculadomatriculado

falsefalsefalsefalsetesteteste

falsefalsefalsefalse

Page 48: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Prioridade dos operadoresPrioridade dos operadores

Operadores Associatividade () esquerda para a direita ! - ++ -- direita para a esquerda * / % esquerda para a direita + - esquerda para a direita << >> esquerda para a direita < <= > >= esquerda para a direita == != esquerda para a direita & esquerda para a direita ^ esquerda para a direita | esquerda para a direita && esquerda para a direita || esquerda para a direita ?: direita para a esquerda = += -= *= /= %= &= ^= |= <<= >>= direita para a esquerda

Page 49: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Algoritmos computacionaisAlgoritmos computacionais

Acções de um algoritmo computacional Manipular dados

Receber dados Guardar dados Imprimir dados

Executar instruções Fazer operações aritméticas Fazer operações lógicas Escolha entre várias instruções. Repetir um conjunto de instruções

Page 50: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercíciosExercícios

Construa um programa que calcule a área de um rectangulo

Ler lado1Ler lado1

Area := lado1*lado2Area := lado1*lado2

InicioInicio

Programa Área do rectânguloPrograma Área do rectângulo

#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ double Lado1, lado2, area;double Lado1, lado2, area; scanf(“%lf”, &lado1);scanf(“%lf”, &lado1); scanf(“%lf”, &lado2);scanf(“%lf”, &lado2); area = lado1 * lado2;area = lado1 * lado2; printf(“ area = %lf ”, area);printf(“ area = %lf ”, area);

}}

#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ double Lado1, lado2, area;double Lado1, lado2, area; scanf(“%lf”, &lado1);scanf(“%lf”, &lado1); scanf(“%lf”, &lado2);scanf(“%lf”, &lado2); area = lado1 * lado2;area = lado1 * lado2; printf(“ area = %lf ”, area);printf(“ area = %lf ”, area);

}}

fimfim

Ler lado2Ler lado2

Escrever Area

Page 51: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercíciosExercícios

Construa um programa que leia a nota teórica e a nota prática e imprima a nota final (não arredondada) da disciplina de IP

Nota de IPNota de IP#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ float nTeorica, nPratica, nFinal;float nTeorica, nPratica, nFinal; printf(“ introduza a nota teórica :“);printf(“ introduza a nota teórica :“); scanf(“%f”, &nTeorica);scanf(“%f”, &nTeorica); printf(“printf(“ introduza a nota prática:“);introduza a nota prática:“); scanf(“%f”, &nPratica);scanf(“%f”, &nPratica); nFinal = nTeorica * 0.6 + nPratica * 0.4;nFinal = nTeorica * 0.6 + nPratica * 0.4; printf(“A nota final e: %f “,nFinal);printf(“A nota final e: %f “,nFinal);}}

#include <stdio.h>#include <stdio.h>int main(int argc, char* argv[])int main(int argc, char* argv[]){{ float nTeorica, nPratica, nFinal;float nTeorica, nPratica, nFinal; printf(“ introduza a nota teórica :“);printf(“ introduza a nota teórica :“); scanf(“%f”, &nTeorica);scanf(“%f”, &nTeorica); printf(“printf(“ introduza a nota prática:“);introduza a nota prática:“); scanf(“%f”, &nPratica);scanf(“%f”, &nPratica); nFinal = nTeorica * 0.6 + nPratica * 0.4;nFinal = nTeorica * 0.6 + nPratica * 0.4; printf(“A nota final e: %f “,nFinal);printf(“A nota final e: %f “,nFinal);}}

Ler nTeoricaLer nTeorica

nFinal = nTeorica*0.6 +nPratica * 0.4

nFinal = nTeorica*0.6 +nPratica * 0.4

InicioInicio

fimfim

Ler nPraticaLer nPratica

Escrever nFinal

Page 52: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

© M@nso 2003

Introdução à programação Computadores e programação I

Selecção de intruçõesSelecção de intruções

Page 53: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção SimplesSelecção Simples

. . .

Se <condição> então

Instruções

fim_se

. . .

Se <condição> então

Instruções

fim_se

CondiçãoCondição

Bloco deInstruções

Bloco deInstruções

FluxogramaFluxograma

Se x > 0 então

escrever “numero:”

ler numero

fim_se

Se x > 0 então

escrever “numero:”

ler numero

fim_se

ExemploExemplo

V

C++C++

If (condição)If (condição){{ intrução;intrução; intrução;intrução; intrução;intrução; . . .. . .}}

If (condição)If (condição){{ intrução;intrução; intrução;intrução; intrução;intrução; . . .. . .}}

Um “Bloco de instruções” é limitado por chavetas { }

Um “Bloco de instruções” é limitado por chavetas { }

Linguagem estruturadaLinguagem estruturada

Page 54: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção Simples (exemplo)Selecção Simples (exemplo)

A empresa X faz um desconto de 15% em todas as facturas cujo total ultrapasse 1000 euros. Construa um programa que receba o total da factura e imprima o valor a pagar

A empresa X faz um desconto de 15% em todas as facturas cujo total ultrapasse 1000 euros. Construa um programa que receba o total da factura e imprima o valor a pagar

ExemploExemploInicioInicio

totalFactura>10000

totalFactura>10000

Ler totalFacturaLer totalFactura

totalFactura =totalFactura *0.85

totalFactura =totalFactura *0.85

FimFim

v

totalFactura

Page 55: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção Simples (exemplo)Selecção Simples (exemplo)

Calculo do total da facturaCalculo do total da factura

#include <stdio.h>#include <stdio.h>int main(int argc, char* int main(int argc, char* argv[])argv[]){{ float totalFactura; scanf(“%f”, &totalFactura); if( totalFactura > 1000.0) { totalFactura*= 0.85; } printf(“ %f “, totalFactura);}}

#include <stdio.h>#include <stdio.h>int main(int argc, char* int main(int argc, char* argv[])argv[]){{ float totalFactura; scanf(“%f”, &totalFactura); if( totalFactura > 1000.0) { totalFactura*= 0.85; } printf(“ %f “, totalFactura);}}

NOTANOTASe o bloco tiver apenas uma instrução podem omitir-se as chavetas

Se o bloco tiver apenas uma instrução podem omitir-se as chavetas

Page 56: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Visibilidade das variáveisVisibilidade das variáveis

int main(int argc, char* argv[]){ float totalFactura; sacanf(“ %f “, &totalFactura); if( totalFactura > 1000){ double desconto = totalFactura* 0.85; totalFactura -= desconto; } printf(“%f”, totalFactura); return 0;}

int main(int argc, char* argv[]){ float totalFactura; sacanf(“ %f “, &totalFactura); if( totalFactura > 1000){ double desconto = totalFactura* 0.85; totalFactura -= desconto; } printf(“%f”, totalFactura); return 0;}

Visibilidade das variáveis:•Desde que são declaradas•Até final do bloco

Page 57: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção em AlternativaSelecção em Alternativa

. . .

Se <condição> entao

Instruções

Senao

Instruções

Fim_se

. . .

Se <condição> entao

Instruções

Senao

Instruções

Fim_se

Linguagem estruturadaLinguagem estruturada

CondiçãoCondição

InstruçõesInstruções

FluxogramaFluxograma

Se numero>0 então

escreve “positivo”

Senão

escreve “negativo”

Fim_se

Se numero>0 então

escreve “positivo”

Senão

escreve “negativo”

Fim_se

ExemploExemplo

V

InstruçõesInstruções

F

C++C++

if (condição)if (condição){{ intrução1;intrução1; . . .. . .}}else else {{ intrução2;intrução2; . . .. . .}}

if (condição)if (condição){{ intrução1;intrução1; . . .. . .}}else else {{ intrução2;intrução2; . . .. . .}}

Page 58: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção em Alternativa (exemplo)Selecção em Alternativa (exemplo)

25 205 12

1

Construa um programa que imprima “Par” ou “Impar” consoante o número introduzido pelo utilizador o é ou não.

Construa um programa que imprima “Par” ou “Impar” consoante o número introduzido pelo utilizador o é ou não.

ExercícioExercício

128 64 32 16 8 4 2 1

0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 10 0 0 0 0 0 1 0 20 0 0 0 0 0 1 1 30 0 0 0 0 1 0 0 40 0 0 0 0 1 0 1 50 0 0 0 0 1 1 0 6

0 0 0 0 0 0 0 1&

0 0 0 0 0 0 0 X

Page 59: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção Simples (exemplo)Selecção Simples (exemplo)

Programa par ou imparPrograma par ou impar

main()main(){{ int numero; printf( “ numero :”); scanf(“%d”,&numero); if( numero % 2 == 0) printf(“ O numero é par”); else printf(“ o número é impar”); }}

main()main(){{ int numero; printf( “ numero :”); scanf(“%d”,&numero); if( numero % 2 == 0) printf(“ O numero é par”); else printf(“ o número é impar”); }}

25 205 12

1

n % 2 = 0n % 2 = 0

VF

Fim

Inicio

Ler nLer n

ImparPar

Page 60: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção encadeadaSelecção encadeada

Construa um programa que imprima o maior de três número introduzido pelo utilizador

Construa um programa que imprima o maior de três número introduzido pelo utilizador

ExercícioExercício

V1 > v2 eV1 > v3

V1 > v2 eV1 > v3

Maior=v1Maior=v1

V2>v3V2>v3

Maior=v2

Maior=v2 Maior=v3Maior=v3

ss

ss

nn

nn

Page 61: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção encadeada (exemplo)Selecção encadeada (exemplo)

Programa maior de trêsPrograma maior de três

int main(int argc, char* argv[])int main(int argc, char* argv[]){{ int v1, v2; v3;int v1, v2; v3; int maior;int maior; scanf(“ %d %d %d “, &v1, &v2, &v3);scanf(“ %d %d %d “, &v1, &v2, &v3); ifif( v1 > v2 && v1 > v3)( v1 > v2 && v1 > v3) maior= v1;maior= v1; elseelse {{ ifif( v2 > v3)( v2 > v3) maior= v2;maior= v2; elseelse maior=v3;maior=v3; }} printf(“ O maior é %d :”, maior);printf(“ O maior é %d :”, maior); return 0;return 0;}}

int main(int argc, char* argv[])int main(int argc, char* argv[]){{ int v1, v2; v3;int v1, v2; v3; int maior;int maior; scanf(“ %d %d %d “, &v1, &v2, &v3);scanf(“ %d %d %d “, &v1, &v2, &v3); ifif( v1 > v2 && v1 > v3)( v1 > v2 && v1 > v3) maior= v1;maior= v1; elseelse {{ ifif( v2 > v3)( v2 > v3) maior= v2;maior= v2; elseelse maior=v3;maior=v3; }} printf(“ O maior é %d :”, maior);printf(“ O maior é %d :”, maior); return 0;return 0;}}

Page 62: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercícioExercício

Contrua um programa que solicite ao utilizador a letra correspondente ao estado civil (S C D V ) e imprima por extenso o mesmo ou erro no caso de não ser um caractér válido

Contrua um programa que solicite ao utilizador a letra correspondente ao estado civil (S C D V ) e imprima por extenso o mesmo ou erro no caso de não ser um caractér válido

ecivilecivil

InicioInicio

ecivil=secivil=s

nãonão

Estado = SolteiroEstado = Solteiro

simsim

ecivil=cecivil=c

Estado = casadoEstado = casado

ecivil=decivil=d

Estado =divorciadoEstado =divorciado

simsimnãonão

ecivil=vecivil=v

Estado = viuvoEstado = viuvo

simsim

Estado = ERROEstado = ERRO

naonao

nãonão simsim

estado FimFim

Page 63: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercícioExercício

Estado civilEstado civilmain()main(){{ char ECivil; scanf(“%c”,&ECivil); if( ECivil ==‘S’) printf( “ Solteiro”); else if (ECivil ==‘C’ )

printf(“ Casado”); else if ( ECivil == ‘D)

printf(“Divorciado”); else if(ECivil == ‘V’)

printf(“Viuvo”); else

printf(“ERRO”); }}

main()main(){{ char ECivil; scanf(“%c”,&ECivil); if( ECivil ==‘S’) printf( “ Solteiro”); else if (ECivil ==‘C’ )

printf(“ Casado”); else if ( ECivil == ‘D)

printf(“Divorciado”); else if(ECivil == ‘V’)

printf(“Viuvo”); else

printf(“ERRO”); }}

ecivilecivil

InicioInicio

ecivil=secivil=s

nãonão

Estado = SolteiroEstado = Solteiro

simsim

ecivil=cecivil=c

Estado = casadoEstado = casado

ecivil=decivil=d

Estado =divorciadoEstado =divorciado

simsimnãonão

ecivil=vecivil=v

Estado = viuvoEstado = viuvo

simsim

Estado = ERROEstado = ERRO

naonao

nãonão simsim

estado FimFim

Page 64: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Selecção MúltiplaSelecção Múltipla

switchswitch

switch ( expressão)switch ( expressão){{ case constante1 :case constante1 : intruções;intruções; break;break; case constante2 :case constante2 : intruções;intruções; break;break; . . . . . . case constanten :case constanten : intruções;intruções; break;break; default:default: intruções;intruções;

}}

switch ( expressão)switch ( expressão){{ case constante1 :case constante1 : intruções;intruções; break;break; case constante2 :case constante2 : intruções;intruções; break;break; . . . . . . case constanten :case constanten : intruções;intruções; break;break; default:default: intruções;intruções;

}}

ecivilecivilss cc …… defeitodefeito

estado

ecivilecivil

InicioInicio

Estado = solteiroEstado = solteiro

Estado = casadoEstado = casado

Estado = ERROEstado = ERRO

FimFim

Estado = …Estado = …

Page 65: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercícioExercícioEstado civilEstado civil

#include <iostream.h>#include <iostream.h>main(){main(){ char ECivil;char ECivil; scanf(“%c”,&ECivil); switch ( ECivil)switch ( ECivil) {{ case ‘S’ :case ‘S’ : printf( “solteiro”);printf( “solteiro”); break;break;

case ‘C’ :case ‘C’ : printf(printf(“casado”);“casado”);

break;break;case ‘D’ :case ‘D’ :

printf(printf(“Divorciado”);“Divorciado”); break;break;

case ‘V’ :case ‘V’ : printf(printf(“Viuvo”);“Viuvo”); break;break;

default :default : printf(printf(“ERRO”);“ERRO”); }}}}

#include <iostream.h>#include <iostream.h>main(){main(){ char ECivil;char ECivil; scanf(“%c”,&ECivil); switch ( ECivil)switch ( ECivil) {{ case ‘S’ :case ‘S’ : printf( “solteiro”);printf( “solteiro”); break;break;

case ‘C’ :case ‘C’ : printf(printf(“casado”);“casado”);

break;break;case ‘D’ :case ‘D’ :

printf(printf(“Divorciado”);“Divorciado”); break;break;

case ‘V’ :case ‘V’ : printf(printf(“Viuvo”);“Viuvo”); break;break;

default :default : printf(printf(“ERRO”);“ERRO”); }}}}

Page 66: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercícioExercício

Estado civilEstado civilswitch ( ECivil)switch ( ECivil) {{

. . . . . . case ‘d’ :case ‘d’ :

case ‘D’ :case ‘D’ : printf(printf( “Divorciado”); “Divorciado”); break;break; . . .. . . }}

switch ( ECivil)switch ( ECivil) {{

. . . . . . case ‘d’ :case ‘d’ :

case ‘D’ :case ‘D’ : printf(printf( “Divorciado”); “Divorciado”); break;break; . . .. . . }}

NOTANOTAA escolha termina:

•quando chegar ao fim

•quando encontrar a instrução break

A escolha termina:

•quando chegar ao fim

•quando encontrar a instrução break

Page 67: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

ExercíciosExercícios

Construa um programa que indique se dois números introduzidos pelo utilizador são múltiplos um do outro.

Construa um programa que calcule as raízes de uma equação de 2º grau.

Altere o programa anterior para calcular as raízes reais e imaginárias.

Page 68: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

© M@nso 2003

Introdução à programação Computadores e programação I

ErrosErros

Page 69: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erros programasErros programas Erros de especificação

Não compreendemos o problema Erros Lógicos

O algoritmo está errado Erros de sintaxe

O algoritmo está mal programado Erros de ligação

Bibliotecas referenciadas que não existem Erros de execução

Dados mal introduzidos

Os erros são a base da experiência.

Page 70: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erros de especificaçãoErros de especificação

Construir um programa que as calcule as interacções do spin de um electrão num campo gravitacional desconhecido dado o número de mesões e fermiões pertencentes ao meio.

Page 71: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erros LógicosErros Lógicos

Solteiro casado ou erro

ecivilecivil

InicioInicio

ecivil=secivil=s

nãonão

Estado = SolteiroEstado = Solteiro

simsim

nãonão

estado

FimFim

ecivil=cecivil=c

Estado = casadoEstado = casado

simsim

Estado = casadoEstado = casado

Page 72: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erros de sintaxe mais comunsErros de sintaxe mais comuns

Escrita ambígua

if(m == 0)     if(n == 0)         printf("m e n são zero.“); else     printf("m não é zero.“);

if(m == 0)     if(n == 0)         printf("m e n são zero.“); else     printf("m não é zero.“);

Page 73: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erros de sintaxe mais comunsErros de sintaxe mais comuns

Esquecer as chavetas

int main(int argc, char* argv[]){ float totalFactura; sacanf(“ %f “, &totalFactura); if( totalFactura > 1000) double desconto = totalFactura* 0.85; totalFactura -= desconto; printf(“%f”, totalFactura); return 0;}

int main(int argc, char* argv[]){ float totalFactura; sacanf(“ %f “, &totalFactura); if( totalFactura > 1000) double desconto = totalFactura* 0.85; totalFactura -= desconto; printf(“%f”, totalFactura); return 0;}

Page 74: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erros de sintaxe mais comunsErros de sintaxe mais comuns

Colocar um ; a seguir ao if ou else

int main(int argc, char* argv[]){ float totalFactura; sacanf(“ %f “, &totalFactura);

if( totalFactura > 1000) ; { double desconto = totalFactura* 0.85; totalFactura -= desconto; } printf(“%f”, totalFactura); return 0;}

int main(int argc, char* argv[]){ float totalFactura; sacanf(“ %f “, &totalFactura);

if( totalFactura > 1000) ; { double desconto = totalFactura* 0.85; totalFactura -= desconto; } printf(“%f”, totalFactura); return 0;}

Page 75: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Erros de sintaxe mais comunsErros de sintaxe mais comuns

Esquecer o break; no ciclo switch

Estado civilEstado civil

switch ( ECivil)switch ( ECivil) {{ case ‘S’ :case ‘S’ : printf( “solteiro”);printf( “solteiro”);

case ‘C’ :case ‘C’ : printf(printf(“casado”);“casado”);case ‘D’ :case ‘D’ :

printf(printf(“Divorciado”);“Divorciado”);case ‘V’ :case ‘V’ :

printf(printf(“Viuvo”);“Viuvo”);default :default :

printf(printf(“ERRO”);“ERRO”); }}

switch ( ECivil)switch ( ECivil) {{ case ‘S’ :case ‘S’ : printf( “solteiro”);printf( “solteiro”);

case ‘C’ :case ‘C’ : printf(printf(“casado”);“casado”);case ‘D’ :case ‘D’ :

printf(printf(“Divorciado”);“Divorciado”);case ‘V’ :case ‘V’ :

printf(printf(“Viuvo”);“Viuvo”);default :default :

printf(printf(“ERRO”);“ERRO”); }}

Page 76: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

© M@nso 2003

Introdução à programação Computadores e programação I

ConclusãoConclusão

Page 77: © M@nso 2003 Introdução à programaçãoComputadores e programação I Linguagens de programação Introdução ao C

Introdução à programação Computadores e programação I

© M@nso 2004

Construção de programasConstrução de programas Especificação do problema

Compreender o problema Desenvolvimento do algoritmo

Especificar as entradas, saídas e uma forma de transformar as entradas em saídas

Tradução do algoritmo para uma linguagem de programação programar

Tradução do programa para linguagem máquina Compilar e linkar

Executar o programa testar