Programação em C++
Iniciação à linguagem C++
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
1º Programa em C++
• Um programa em C++ é constituído por:
– Várias funções, das quais uma
obrigatoriamente tem que se chamar main.
• A função main(), como qualquer outra é
definida :
#include <iostream.h>
int main() {
// Mensagem a mostrar no ecra.
cout << "Hello, World!\n";
return 0;
}
– por um cabeçalho constituído por:
• tipo de dados que a função devolve.
• o seu nome.
• parâmetros formais que recebe.
– por um corpo (definido entre “{ }”) com :
• declarações
• definições
• instruções
• comentários
– Inclusão de ficheiros header com:
• protótipos de funções, macros, instruções,
declarações de tipos
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-2
Outro exemplo
Ex . - Mostrar a equivalência entre números decimais, hexadecimais e octais
#include<iostream.h>
#include<iomanip.h>
void main() {
int fim,inc,num; // Primeira linha (declaracoes).
fim=16;
// Segunda linha (afectação).
inc=1;
// Terceira linha (afectação).
// Quarta linha (expressão).
cout << "decimal hexadecimal octal" << endl;
// Quinta linha (instrução for).
for (num =0; num <= fim ;num= num + inc)
cout << dec <<num<<´-´<< hex <<num<<´-´<< oct <<num<<endl;
}
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-3
Ambiente de desenvolvimento
- editor
–compilador
–linker/locator
–debugger
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-4
Editar
(.CPP)
Compilar
(.OBJ)
Ligar
(.EXE)
ou
(.COM)
Não cumpre
os objectivos
Modulo
Compilado
Executável
Erro
Modulo
C++
Erro
Enunciado
do
problema
Erro
Fases de geração de um programa
T estar
OK
Sempre que um programa for constituído por vários
módulos, torna-se necessário criar um projecto,
indicando quais os módulos que devem ser ligados, na
fase de criação do programa final.
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-5
Palavras chave do C++
O C++ (como qualquer linguagem) define um
conjunto de palavras que não podem ser usadas
para objectivos diversos do seu significado.
Palavras chave do C++
asm
auto
break
case
catch
char
class
const
continue
default
delete
do
double
else
enum
extern
float
for
friend
goto
if
inline
int
long
new
operator
private
protected
public
register
return
short
signed
sizeof
static
struct
switch
template
this
throw
try
typedef
union
unsigned
virtual
void
volatile
while
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-6
Declarações e definições
Em C++ qualquer identificador tem que ser declarado antes de ser usado.
Declarar uma entidade, consiste
exclusivamente em anunciar a sua
existência, explicitando-lhe o nome e o
tipo.
extern int x;
float sqrt ( float );
No entanto, a maior parte das
declarações, são também definições, isto
é, definem a entidade que passa a ser
designada por esse nome.
int y; // variável y do tipo inteiro
/*variável do tipo char,
iniciada com o caracter 'k'.*/
char c='k';
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-7
Operadores e expressões
Com variáveis e operadores, constroem-se
expressões a que ficam associados valores.
Expressões operam sobre variáveis de forma a
produzir novos valores.
Como constituintes de um programa,
constam também operadores aritmético,
lógicos e relacionais ( +, -, *, /, =, &&, ||,
etc. ).
#include <iostream.h>
void main() {
// Directiva para o pré processador.
// Declaração (definição e iniciação) de uma constante do tipo float.
const float pi = 3.14159265;
int raio;
// Declaração (definição) de um inteiro.
float area; // Declaração (definição) de um float.
// Instruções de saída e entrada de dados
Cálculo da área
de um circulo
cout << "Qual o raio do circulo? "; cin >> raio;
area = pi * ( raio * raio ); // Aqui têm que existir conversões de tipos.
cout << "A area e’ " << area << endl; // Escrita do área no ecrã.
}
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-8
Tipos primitivos de dados e sua representação
Tipos fundamentais
Significado
Qualificadores
Aplica-se a
Representa
int
inteiro
short
int
menor dimensão
char
carácter
long
int ; double
maior dimensão
float
vírgula flutuante (floating point) de precisão
simples
signed
char; int
com sinal
double
vírgula flutuante de precisão dupla
unsigned
char; int
valor sem sinal
A partir dos tipos de variáveis básicos, definem-se outros tipos
de variáveis ditos tipos derivados, tais como arrays,
enumerados, apontadores, referências, estrutura e uniões
desses tipos fundamentais (ou básicos).
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2-9
Alcance e espaço de memória ocupado
Tipo
Ambiente 16 bits
Ambiente 32 bits
signed int
2 bytes
(de -32768 a +32767)
4 bytes
(- 2 147 483 648 a
+ 2 147 483 647)
unsigned int
2 bytes
(de 0 a 65535)
4 bytes
(de 0 a 4 194 967 295)
float
4 bytes
(de 3.4E-38 a 3.4E+38)
4 bytes
(de 3.4E-38 a 3.4E+38)
signed char
1 byte
(-128 a +127)
1 byte
(-128 a +127)
unsigned char
1 byte
(de 0 a 255)
1 byte
(de 0 a 255)
short ou short int
2 bytes
(Idêntico a int)
2 bytes
(de -32768 a +32767)
unsigned short ou
2 bytes
(Idêntico a unsigned int)
2 bytes
(de 0 a 65535)
long ou long int
4 bytes
(- 2 147 483 648 a
+ 2 147 483 647)
4 bytes
(- 2 147 483 648 a
+ 2 147 483 647)
unsigned long int
ou unsign long
4 bytes
(0 a 4 194 967 295)
4 bytes
(0 a 4 194 967 295)
unsigned short int
double ou long double 8 bytes
(1.7E-308 a 1.7E+308)
8 bytes
(1.7E-308 a 1.7E+308)
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 10
Representação de dados formatados no stdout
#include <iostream.h>
#include <iomanip.h>
void main() {
int int_num = 255;
float float_num = 99.99895;
// long int por omissão.
long big_num = 1250500750.75;
cout <<"12345678901234567890\n";
cout << int_num << endl;
cout << setw(6) << int_num << endl;
cout << big_num << endl;
cout << float_num << endl;
}
Qual será o output
deste programa
12345678901234567890
255
255
1250500750
99.99895
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 11
Operadores - Precedência e ordem de avaliação (1)
Símbolo
::
::
De scrição sumária
resolução de alcance
refere nome global
Forma de aplicação
nome_classe :: membro
:: nome
selecção de membro
Indexação
chamada a função
construção de objecto
dimensão de objecto
dimensão de tipo
apontador -> membro
apontador [ exp ]
exp ( lista_exp )
tipo ( lista_exp )
sizeof exp
sizeof tipo
pós ou pré incremento
pós ou pré decremento
complemento bit a bit
negação lógica
unário menos
unário mais
endereço de
desreferência
criar , alojar
destruir , desalojar
destruir array
cast , conversão de tipo
lvalor ++ ou ++ lvalor
lvalor -- ou -- lvalor
~ exp
! exp
- exp
+ exp
& lvalor
* exp
new tipo
delete apontador
delete [ ] apontador
( tipo ) exp

*
/
%
multiplicar
dividir
módulo, resto
exp * exp
exp / exp
exp % exp

+
-
adição , mais
subtracção , menos
exp + exp
exp - exp

<<
>>
deslocar esquerda
deslocar direita
lvalor << exp
lvalor >> exp

->
[]
()
()
sizeof
sizeof
++
-~
!
+
&
*
new
delete
delete[]
()
Associatividade


Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 12
Operadores - Precedência e ordem de avaliação (2)
Símbolo
<
<=
>
>=
Descrição sumária
menor que
menor ou igual que
maior que
maior ou igual que
exp
exp
exp
exp
==
!=
Igual
Diferente
exp == exp
exp != exp

&
AND bit a bit
exp & exp

^
XOR bit a bit
exp ^ exp
|
OR bit a bit
exp | exp


&&
AND lógico
exp && exp

||
OR lógico
exp || exp

?:
Operador condicional
exp ? exp : exp

afectação simples
multiplica e afecta
divide e afecta
módulo e afecta
soma e afecta
subtrai e afecta
desloca direita e afecta
desloca esquerda e afecta
AND e afecta bit a bit
OR e afecta bit a bit
XOR e afecta bit a bit
lvalor = exp
lvalor * = exp
lvalor / = exp
lvalor % = ex
lvalor + = exp
lvalor - = exp
lvalor >> = exp
lvalor <<= exp
lvalor & = exp
lvalor | = exp
lvalor ^ = exp

vírgula, sequência
exp , exp

=
*=
/=
%=
+=
-=
>>=
<<=
&=
|=
^=
,
Forma de aplicação
< exp
<= exp
> exp
>= exp
Associatividade

Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 13
Instrução de controlo de execução
Decisão binária - if
Fluxograma
Em C++
if ( A < B )
FALSE
A<B
cout<<"A>=B";
TRUE
cout<<"A<B";
cout << “A<B”;
else
cout << “A>=B”;
Programa em C++
O ano é
bissexto?
#include <iostream.h>
void main() {
int year;
cout << "Ano -> "; cin >> year;
if (year%400 == 0 || year%4 == 0 && year%100 != 0)
cout << "E’";
else cout << "Nao e’";
cout << " um ano bissexto." << endl;
}
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 14
Operador condicional ternário (?:)
O operador condicional ternário é uma forma
compactada de exprimir uma acção condicional ifelse;
modulo_n = (n<0) ? -n: n;
if (n<0)
modulo_n=-n;
else modulo_n=n;
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 15
Instrução de controlo de execução
Decisão múltipla - switch
Fluxograma
i == 0
Em C++
TRUE
cout<<"zero";
FALSE
i == 1
TRUE
cout<<"um;
FALSE
i == 2
switch( i ) {
case 0: cout<<“zero”; break;
case 1: cout<<“um”; break;
case 2: cout<<“dois”; break;
default: cout<<“outro”;
}
TRUE
cout<<"dois";
FALSE
cout<<"outro";
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 16
Quantos dias faltam até ao fim do mês?
#include<iostream.h>
void main() {
int dia, mes, a, numDias;
cout << "Dia -> "; cin >> dia;
cout << "Mes -> "; cin >> mes;
cout << "Ano -> "; cin >> a;
if ( mes > 0 && mes <= 12)
switch (mes) {
case 2 :
numDias = 28 + (a%400 == 0 || a%4 && a%100 != 0);
break;
case 4 : case 6 : case 9 : case 11:
numDias = 30; break;
default:
numDias = 31;
} else
numDias = 0;
if (dia > 0 && dia <= numDias)
cout << "Faltam " << (numDias - dia) << "dias." << endl;
else
cout << "Data invalida." << endl;
}
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 17
Instruções de controlo de execução
Repetição condicional - while, for, do-while
Em C++
Fluxograma
i = 1;
while ( i < 6 ) {
cout << “i=“ << i << endl;
i = i + 1 ;
}
i = 1;
i = i + 1;
cout<<" i = "<<i<<endl;
i<6
T RUE
for ( i=1 ; i<6 ; i=i+1 )
cout << “i=“ << i << endl;
F ALSE
cout<<" i = "<<i<<endl;
TRUE
i = i + 1;
do {
cout << “i=“ << i << endl;
i = i + 1 ;
} while ( i < 6 );
i<6
FALSE
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 18
Adivinhar um nº entre 0 e 7 em 3 tentativas (1)
Arvore de
decisão binária
X>=4
FALSE
FALSE
X>=2
T RUE
T RUE
X>=1
FALSE
X>=3
X>=6
T RUE
X>=5
X>=7
FALSE
T RUE
FALSE
T RUE
FALSE
T RUE
FALSE
T RUE
X=0
X=1
X=2
X=3
X=4
X=5
X=6
X=7
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 19
Adivinhar um nº entre 0 e 7 em 3 tentativas (2)
Fluxograma
Programa em C++
i=4;
n=0;
i>0
FALSE
X=n;
i /= 2;
T RUE
X >= i+n
T RUE
n += i;
FALSE
#include <iostream.h>
#include <ctype.h>
void main() {
cout << "Pense num numero de 0 a 7 "
" e prima uma tecla.";
cin.get();
// Adivinhar o número.
int number = 0;
for(int i = 4 ; i > 0; i /= 2) {
char ch;
cout << "\nE’ maior ou igual que "
<< (i + number) << " (S/N)?";
cin >> ch;
if (toupper(ch) == 'S')
number += i;
}
cout <<"\nO numero que pensou e’ ”
<< number <<'.' << endl;
}
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 20
Instruções de transferência de controlo
break e continue
void main() {
char buf[80];
cout << "Escreve uma string : ";
cin.getline(buf, 80, '\n');
for(int i = 0; i < strlen(buf); ++i)
if(buf[i] != '@')
continue;
else {
cout << "Caracter '@' encontrado na posição " << i << endl;
break;
}
if ( i == strlen(buf) )
cout << "caracter '@' não encontrado!" << endl;
}
cout << “BYE” << endl;
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 21
Instruções de transferência de controlo
goto
#include <iostream.h>
#include <ctype.h>
void main() {
char ch; cout<<"O programa verifica se um inteiro e' capicua.\n";
do { unsigned long number, invNumber = 0;
cout <<"Escreva o inteiro - "; cin >> number;
while ( number ) {
int digit = (int) (number % 10);
if ( (number/=10) == invNumber ||
E´capicua?
number == (invNumber = invNumber * 10 + digit)) {
cout << "Muito bem, o inteiro escrito";
}
goto endProgram;
}
cout<<"Nao e' capicua.\nQuer tentar de novo (S/N) ? ";
cin>>ch;
} while ( tolower(ch) == 's’ ); // Repetir até basta.
cout << "Por exemplo 12321";
endProgram:
cout << " e' capicua." << endl;
}
Programação em C++
Pimenta Rodrigues
Pedro Pereira
Manuela Sousa
Iniciação à linguagem C++
2 - 22
Download

2 - Iniciação à linguagem C++