programação em c++ pimenta rodrigues pedro pereira manuela sousa iniciação à linguagem c++...

22
Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C+ + Programação em C++

Upload: internet

Post on 18-Apr-2015

139 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

Programação em C++Pimenta RodriguesPedro PereiraManuela Sousa

Iniciação à linguagem C++

Programação em C++

Page 2: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela 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;}

Page 3: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 4: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 5: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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.

Page 6: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 7: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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';

Page 8: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 9: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 10: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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)

Page 11: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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;}

Page 12: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 13: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 14: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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?

Page 15: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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;

Page 16: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 17: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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?

Page 18: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 19: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 20: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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

Page 21: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação 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

Page 22: Programação em C++ Pimenta Rodrigues Pedro Pereira Manuela Sousa Iniciação à linguagem C++ Programação em C++

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?