Upload
eleniltonrs
View
300
Download
14
Embed Size (px)
Citation preview
Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Iniciação à linguagem C++
Programação em C++
Iniciação à linguagem C++ 2 - 2 Programação em C++Pimenta RodriguesPedro PereiraManuela 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. • 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
#include <iostream.h>int main() { // Mensagem a mostrar no ecra. cout << "Hello, World!\n"; return 0;}
Iniciação à linguagem C++ 2 - 3 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Outro exemplo
#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; }
Ex . - Mostrar a equivalência entre números decimais, hexadecimais e octais
Iniciação à linguagem C++ 2 - 4 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Ambiente de desenvolvimento
- editor–compilador
–linker/locator–debugger
- editor–compilador
–linker/locator–debugger
Iniciação à linguagem C++ 2 - 5 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Fases de geração de um programa
Editar
Enunciadodo
problema
ModuloC++
(.CPP)
Compilar
ModuloCompilado
(.OBJ)
Ligar
Executável
(.EXE)ou
(.COM)
Testar OK
Erro
Erro
Erro
Não
cum
pre
os o
bjec
tivos
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.
Iniciação à linguagem C++ 2 - 6 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
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++
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
Iniciação à linguagem C++ 2 - 7 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Declarar uma entidade, consiste exclusivamente em anunciar a sua
existência, explicitando-lhe o nome e o tipo.
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.
Declarações e definições
Em C++ qualquer identificador tem que ser declarado antes de ser usado.
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';
Iniciação à linguagem C++ 2 - 8 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Operadores e expressõesComo constituintes de um programa,
constam também operadores aritmético, lógicos e relacionais ( +, -, *, /, =, &&,
||, etc. ).
Como constituintes de um programa, constam também operadores aritmético, lógicos e relacionais ( +, -, *, /, =, &&,
||, etc. ).
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.
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.
#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 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ã.
}
Cálculo da área de um circulo
Iniciação à linguagem C++ 2 - 9 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Tipos primitivos de dados e sua representação
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).
Tipos fundamentais Significado
int inteiro
char carácter
float vírgula flutuante (floating point) de precisãosimples
double vírgula flutuante de precisão dupla
Qualificadores Aplica-se a Representa
short int menor dimensão
long int ; double maior dimensão
signed char; int com sinal
unsigned char; int valor sem sinal
Iniciação à linguagem C++ 2 - 10 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
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
unsigned short int
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 intou unsign long
4 bytes(0 a 4 194 967 295)
4 bytes(0 a 4 194 967 295)
double ou long double 8 bytes(1.7E-308 a 1.7E+308)
8 bytes(1.7E-308 a 1.7E+308)
Iniciação à linguagem C++ 2 - 11 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Representação de dados formatados no stdout
Qual será o output deste programa
12345678901234567890255 255125050075099.99895
#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;}
Iniciação à linguagem C++ 2 - 12 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Operadores - Precedência e ordem de avaliação (1)
Símbolo Descrição sumária Forma de aplicação Associatividade::::
resolução de alcancerefere nome global
nome_classe :: membro:: nome
->[]()()
sizeofsizeof
selecção de membroIndexaçãochamada a funçãoconstrução de objectodimensão de objectodimensão de tipo
apontador -> membroapontador [ exp ]exp ( lista_exp )tipo ( lista_exp )sizeof expsizeof tipo
++--~!-
+&*
newdelete
delete[]()
pós ou pré incrementopós ou pré decrementocomplemento bit a bitnegação lógicaunário menosunário maisendereço dedesreferênciacriar , alojardestruir , desalojardestruir arraycast , conversão de tipo
lvalor ++ ou ++ lvalorlvalor -- ou -- lvalor~ exp! exp- exp+ exp& lvalor* expnew tipodelete apontadordelete [ ] apontador( tipo ) exp
*/
%
multiplicardividirmódulo, resto
exp * expexp / expexp % exp
+-
adição , maissubtracção , menos
exp + expexp - exp
<<>>
deslocar esquerdadeslocar direita
lvalor << explvalor >> exp
Iniciação à linguagem C++ 2 - 13 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Operadores - Precedência e ordem de avaliação (2)
Símbolo Descrição sumária Forma de aplicação Associatividade<
<=>
>=
menor quemenor ou igual quemaior quemaior ou igual que
exp < expexp <= expexp > expexp >= exp
==!=
IgualDiferente
exp == expexp != 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 simplesmultiplica e afectadivide e afectamódulo e afectasoma e afectasubtrai e afectadesloca direita e afectadesloca esquerda e afectaAND e afecta bit a bitOR e afecta bit a bitXOR e afecta bit a bit
lvalor = explvalor * = explvalor / = explvalor % = exlvalor + = explvalor - = explvalor >> = explvalor <<= explvalor & = explvalor | = explvalor ̂= exp
, vírgula, sequência exp , exp
Iniciação à linguagem C++ 2 - 14 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Instrução de controlo de execução
Fluxograma Em C++
A<B
cout<<"A<B";
TRUE
cout<<"A>=B";
FALSE
if ( A < B )
cout << “A<B”;
else
cout << “A>=B”;
Decisão binária - if
#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 em C++
O ano é bissexto?
O ano é bissexto?
Iniciação à linguagem C++ 2 - 15 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
modulo_n = (n<0) ? -n: n;
Operador condicional ternário (?:)
O operador condicional ternário é uma forma compactada de exprimir uma acção condicional
if-else;
O operador condicional ternário é uma forma compactada de exprimir uma acção condicional
if-else;
if (n<0) modulo_n=-n;else modulo_n=n;
Iniciação à linguagem C++ 2 - 16 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Instrução de controlo de execução
Fluxograma Em C++
i == 0
cout<<"zero";
TRUE
i == 1 TRUE
cout<<"um;
FALSE
i == 2
cout<<"dois";
TRUE
FALSE
FALSE
cout<<"outro";
switch( i ) { case 0: cout<<“zero”; break; case 1: cout<<“um”; break; case 2: cout<<“dois”; break; default: cout<<“outro”;}
Decisão múltipla - switch
Iniciação à linguagem C++ 2 - 17 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
#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;}
Quantos dias faltam até ao fim do mês?
Iniciação à linguagem C++ 2 - 18 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Instruções de controlo de execução
Fluxograma Em C++
i = 1;
i<6
i = i + 1;
cout<<" i = "<<i<<endl;
TRUE
FALSE
i = 1;while ( i < 6 ) { cout << “i=“ << i << endl; i = i + 1 ;}
for ( i=1 ; i<6 ; i=i+1 ) cout << “i=“ << i << endl;
cout<<" i = "<<i<<endl;
i = i + 1;
i<6
TRUE
FALSE
do { cout << “i=“ << i << endl; i = i + 1 ;} while ( i < 6 );
Repetição condicional - while, for, do-while
Iniciação à linguagem C++ 2 - 19 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Adivinhar um nº entre 0 e 7 em 3 tentativas (1)
X>=4
X>=2 X>=6
X>=1
X=0 X=1 X=2 X=3 X=4 X=5 X=6 X=7
X>=3 X>=5 X>=7
FALSE
FALSE FALSE
FALSE FALSE FALSE FALSE TRUETRUETRUETRUE
TRUE
TRUE
TRUE
Arvore de decisão binária
Iniciação à linguagem C++ 2 - 20 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Adivinhar um nº entre 0 e 7 em 3 tentativas (2)
i=4;n=0;
i>0
X >= i+n
n += i;
i /= 2;
X = n ;
FALSE
TRUE
TRUE
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;}
Fluxograma Programa em C++
Iniciação à linguagem C++ 2 - 21 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Instruções de transferência de controlo
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;}
break e continue
Iniciação à linguagem C++ 2 - 22 Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa
Instruções de transferência de controlo
#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 ||
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;}
goto
E´capicua?E´capicua?