Você está na página 1de 22

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 :
– por um cabeçalho constituído por:
• tipo de dados que a função devolve.
#include <iostream.h> • o seu nome.
int main() { • parâmetros formais que recebe.
// Mensagem a mostrar no ecra. – por um corpo (definido entre “{ }”) com :
cout << "Hello, World!\n"; • declarações
return 0;
• 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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-2
Manuela Sousa
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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-3
Manuela Sousa
Ambiente de desenvolvimento

--editor
editor
––compilador
compilador
––linker/locator
linker/locator
––debugger
debugger

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-4
Manuela Sousa
Fases de geração de um programa

Executável

Erro

Erro

Erro
Modulo Modulo

Não cumpre
os objectivos
Enunciado
do Editar
C++ Compilar
Compilado Ligar (.EXE) Testar OK
problema ou
(.CPP) (.OBJ) (.COM)

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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-5
Manuela Sousa
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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-6
Manuela Sousa
Declarações e definições
Em C++ qualquer identificador tem que ser declarado antes de ser usado.

No entanto, a maior parte das


Declarar uma entidade, consiste
declarações, são também definições,
exclusivamente em anunciar a sua
isto é, definem a entidade que passa a
existência, explicitando-lhe o nome e o
ser designada por esse nome.
tipo.

extern int x;
float sqrt ( float ); 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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-7
Manuela Sousa
Operadores e expressões
Como
Comoconstituintes
constituintesdedeum
umprograma, Com
programa, Comvariáveis
variáveiseeoperadores,
operadores,constroem-se
constroem-se
constam também operadores aritmético, expressões
constam também operadores aritmético, expressões a que ficam associadosvalores.
a que ficam associados valores.
lógicos
lógicosee relacionais
relacionais ((+,+,-,-,*,*,/,/,=,=,&&,
&&,||,||, Expressões
Expressões operam sobre variáveis deforma
operam sobre variáveis de forma
etc.
etc.).). aaproduzir novos valores.
produzir novos valores.

#include <iostream.h> // Directiva para o pré processador.


void main() {
// 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
cout << "Qual o raio do circulo? "; cin >> raio;
de um circulo
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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-8
Manuela Sousa
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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2-9
Manuela Sousa
Alcance e espaço de memória ocupado
Tipo Ambie nte 16 bits Ambie nte 32 bits
signed int 2 bytes 4 bytes
(de -32768 a +32767) (- 2 147 483 648 a
+ 2 147 483 647)
unsigned int 2 bytes 4 bytes
(de 0 a 65535) (de 0 a 4 194 967 295)
float 4 bytes 4 bytes
(de 3.4E-38 a 3.4E+38) (de 3.4E-38 a 3.4E+38)
signed char 1 byte 1 byte
(-128 a +127) (-128 a +127)
unsigned char 1 byte 1 byte
(de 0 a 255) (de 0 a 255)
short ou short int 2 bytes 2 bytes
(Idêntico a int) (de -32768 a +32767)
unsigned short ou 2 bytes 2 bytes
(Idêntico a unsigned int) (de 0 a 65535)
unsigned short int
long ou long int 4 bytes 4 bytes
(- 2 147 483 648 a (- 2 147 483 648 a
+ 2 147 483 647) + 2 147 483 647)
unsigned long int 4 bytes 4 bytes
ou unsign long (0 a 4 194 967 295) (0 a 4 194 967 295)
double ou long double 8 bytes 8 bytes
(1.7E-308 a 1.7E+308) (1.7E-308 a 1.7E+308)

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 10
Manuela Sousa
Representação de dados formatados no stdout

#include <iostream.h>
#include <iomanip.h>
void main() { Qual será o output
int int_num = 255;
float float_num = 99.99895;
deste programa
// 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;
}

12345678901234567890
255
255
1250500750
99.99895

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 11
Manuela Sousa
Operadores - Precedência e ordem de avaliação (1)
Símbolo Descrição sumária Forma de aplicação Associatividade
:: resolução de alcance nome_classe :: membro
:: refere nome global :: nome 

-> selecção de membro apontador -> membro


[] Indexação apontador [ exp ]
() chamada a função exp ( lista_exp ) 
() construção de objecto tipo ( lista_exp )
sizeof dimensão de objecto sizeof exp
sizeof dimensão de tipo sizeof tipo
++ pós ou pré incremento lvalor ++ ou ++ lvalor
-- pós ou pré decremento lvalor -- ou -- lvalor
~ complemento bit a bit ~ exp
! negação lógica ! exp
- unário menos - exp
unário mais + exp
+ 
endereço de & lvalor
&
desreferência * exp
*
criar , alojar new tipo
new
destruir , desalojar delete apontador
delete
destruir array delete [ ] apontador
delete[]
cast , conversão de tipo ( tipo ) exp
()
* multiplicar exp * exp
/ dividir exp / exp 
% módulo, resto exp % exp
+ adição , mais exp + exp
- subtracção , menos exp - exp 

<< deslocar esquerda lvalor << exp


>> deslocar direita lvalor >> exp 

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 12
Manuela Sousa
Operadores - Precedência e ordem de avaliação (2)
Símbolo De scrição sumária Forma de aplicação Associatividade
< menor que exp < exp
<= menor ou igual que exp <= exp
> maior que exp > exp 
>= maior ou igual que exp >= exp
== Igual exp == exp
!= Diferente 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 lvalor = exp
*= multiplica e afecta lvalor * = exp
/= divide e afecta lvalor / = exp
%= módulo e afecta lvalor % = ex
+= soma e afecta lvalor + = exp
-= subtrai e afecta lvalor - = exp 
>>= desloca direita e afecta lvalor >> = exp
<<= desloca esquerda e afecta lvalor <<= exp
&= AND e afecta bit a bit lvalor & = exp
|= OR e afecta bit a bit lvalor | = exp
^= XOR e afecta bit a bit lvalor ^ = exp

, vírgula, sequência exp , exp 

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 13
Manuela Sousa
Instrução de controlo de execução
Decisão binária - if
Fluxograma EmC++

if ( A < B )
FALSE A<B TRUE cout << “A<B”;

c out<<"A>=B"; c out<<"A<B";
else
cout << “A>=B”;

Programa em C++

OOano #include <iostream.h>


anoéé void main() {
bissexto?
bissexto? 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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 14
Manuela Sousa
Operador condicional ternário (?:)
OOoperador
operadorcondicional
condicionalternário
ternárioééuma
umaforma
forma
compactada de exprimir uma acção condicional
compactada de exprimir uma acção condicional
if-else;
if-else;

modulo_n = (n<0) ? -n: n;

if (n<0) modulo_n=-n;
else modulo_n=n;

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 15
Manuela Sousa
Instrução de controlo de execução
Decisão múltipla - switch
F
lu
xog
ra
ma E
m C
++

i == 0 TRUE

cout<<"zero";
FALSE
s
wit
ch(i) {
cas
e 0
: c
out
<<“
zer
o”;br
eak
;
i == 1 TRUE cas
e 1
: c
out
<<“
um”
; b
rea
k;
cout<<"um; cas
e 2
: c
out
<<“
doi
s”;br
eak
;
FALSE def
aul
t:c o
ut<
<“o
utr
o”;
}

i == 2 TRUE

cout<<"dois";
FALSE

cout<<"outro";

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 16
Manuela Sousa
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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 17
Manuela Sousa
Instruções de controlo de execução
Repetição condicional - while, for, do-while
Fluxograma EmC++

i=1 ;
i = 1; while(i<6){
cout<<“i=“<<i<<endl;
i=i+1;
i = i + 1; }

cout<<" i = "<<i<<endl;

i<6 TRUE for(i =1;i <6;i=i+1)


cout<<“i=“<<i< <endl;
FALSE

do{
cout<<" i = "<<i<<endl; cout< <“i=“<<i<<endl;
i=i+1;
TRUE
}w hile(i<6) ;
i = i + 1;

i<6

FALSE

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 18
Manuela Sousa
Adivinhar um nº entre 0 e 7 em 3 tentativas (1)

Arvore de
decisão binária

FALSE X>=4 TRUE

FALSE X>=2 TRUE FALSE X>=6 TRUE

X>=1 X>=3 X>=5 X>=7


FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE

X=0 X=1 X=2 X=3 X=4 X=5 X=6 X=7

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 19
Manuela Sousa
Adivinhar um nº entre 0 e 7 em 3 tentativas (2)

Fluxograma Programa em C++

#include <iostream.h>
i=4; #include <ctype.h>
n=0; void main() {
cout << "Pense num numero de 0 a 7 "
" e prima uma tecla.";
cin.get();
TRUE i /= 2; // Adivinhar o número.
i>0
int number = 0;
for(int i = 4 ; i > 0; i /= 2) {
X >= i+n FALSE char ch;
FALSE
cout << "\nE’ maior ou igual que "
TRUE << (i + number) << " (S/N)?";
X=n;
cin >> ch;
n += i; if (toupper(ch) == 'S')
number += i;
}
cout <<"\nO numero que pensou e’ ”
<< number <<'.' << endl;
}

Programação em C++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 20
Manuela Sousa
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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 21
Manuela Sousa
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?
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++

Iniciação à linguagem C++


Pimenta Rodrigues
Pedro Pereira 2 - 22
Manuela Sousa

Você também pode gostar