Post on 05-Jan-2016
description
© M@nso 2003
Introdução à programação Computadores e programação I
Linguagens de Linguagens de programaçãoprogramaçã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
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.
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
© M@nso 2003
Introdução à programação Computadores e programação I
Introdução à linguagem Introdução à linguagem CC
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
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;;}}
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
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
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;;
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
Introdução à programação Computadores e programação I
© M@nso 2004
Palavras reservadas do CPalavras reservadas do 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;
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;
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
Introdução à programação Computadores e programação I
© M@nso 2004
Alcance dos inteirosAlcance dos inteiros
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;
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
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
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
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;
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 ;
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;
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;
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
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
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.
© M@nso 2003
Introdução à programação Computadores e programação I
Entrada e saída de Entrada e saída de dadosdados
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);
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
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););}}
Introdução à programação Computadores e programação I
© M@nso 2004
Ficheiros geradosFicheiros gerados
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
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
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
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
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
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
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
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
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
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
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
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;
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
!
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
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
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
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
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
© M@nso 2003
Introdução à programação Computadores e programação I
Selecção de intruçõesSelecção de intruções
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
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
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
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
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; . . .. . .}}
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
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
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
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;}}
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
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
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 = …
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”); }}}}
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
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.
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.
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.
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
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.“);
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;}
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;}
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”); }}
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