Sei sulla pagina 1di 20

Estrutura de Dados e Algoritmos e Programao e Computadores II

Aula 2: Introduo linguagem C++

Introduo linguagem C++


Conceitos bsicos: variveis, tipos de dados, constantes, I/O, etc. Estruturas de controlo. Funes. Ponteiros. Passagem de parmetros. Alocao dinmica de memria. Arquivos.

Hello World!
// my first program in C++ #include <iostream.h> int main () { cout << "Hello World!"; return 0; } Hello World!

Conceitos bsicos: tipos de dados


Name
char short long int float double long double bool

Bytes Range
1 2 4 4 4 8 10 1 signed: -128 to 127 | unsigned: 0 to 255 signed: -32768 to 32767 | unsigned: 0 to 65535 signed:-2147483648 to 2147483647 unsigned: 0 to 4294967295 Veja long 3.4e + / - 38 (7 digits) 1.7e + / - 308 (15 digits) 1.2e + / - 4932 (19 digits) true or false

Conceitos bsicos: variveis


Declaraes
int a, b, c; unsigned short NumberOfSons; signed int MyAccountBalance;

Inicializao
int a = 0; int a (0); // formas semelhantes

Conceitos bsicos: variveis


Operaes
a = 5; b = 2; a = a + 1; result = a - b; cout << result; 4

Conceitos bsicos: variveis


Escopo das variveis
Em C++, o escopo de uma varivel local dado pelo bloco no qual ele declarado. Um bloco um grupo de instrues agrupados com chaves { }.

Conceitos bsicos: constantes


Definio
#define PI 3.14159265 #define NEWLINE '\n' #define WIDTH 100

Declarao
const int width = 100; const char tab = '\t'; const zip = 12440; // tipo: int

Conceitos bsicos: operadores


Associao
int a = b = a = b = a = a, b; 10; 4; b; 7; 2 + (b = // a:? b:? // a:10 b:? // a:10 b:4 // a:4 b:4 // a:4 b:7 5); // a:7 b:5

a = b = c = 5; // todos iguais 5

Conceitos bsicos: operadores


Operadores Aritmticos
+ * / % adio subtrao multiplicao diviso resto da diviso

Conceitos bsicos: operadores


Operaes compostas de associao
+=, -=, *=, /=, %=, >>=, <<=
value += increase; // value = value + increase; a -= 5; // a = a - 5; a /= b; // a = a / b; price *= units + 1; // price = price * (units + 1);

Conceitos bsicos: operadores


Incrementar e decrementar
int a = 0; a++; a+=1; a=a+1; B=3; A=++B; B=3; A=B++; // incrementa 1, a: 1 // incrementa 1, a: 2 // incrementa 1, a: 3

// A: 4

B: 4

// A: 3

B: 4

Conceitos bsicos: operadores


Operaes relacionais
== != > < >= <= Igual Diferente Maior que Menor que Maior ou igual que Menor ou igual que

Conceitos bsicos: operadores


Operaes lgicas
! && || Negao Operao AND Operao OR

Operao Condicional
condition ? result1 : result2 7==5 ? 4 : 3 // retorna 3, j que // 7 diferente de 5. a>b ? a : b // retorna o maior.

Conceitos bsicos: I/O


Output (cout)
cout << Sentena de sada"; cout << 120; // imprime 120 na tela cout << x; // imprime a varivel x cout << Ol, eu tenho " << idade << " anos e meu cdigo postal " << zipcode << endl;

Conceitos bsicos: I/O


Input (cin)
int age; cin >> age; cin >> a >> b; // equivalente a: cin >> a; cin >> b;

Estruturas de controlo
Um bloco de instrues um grupo de instrues separadas por ponto-e-vrgula (;) mas agrupadas em um bloco delimitado por chaves: { e }. Um statement refere-se tambm para uma instruo simples quanto a um bloco de instrues.

Estruturas de controlo
Estrutura Condicional: if e else
if (condition) statement
if (x == 100) cout << "x is 100"; if (x == 100) { cout << "x is "; cout << x; }

Estruturas de controlo
if (condition) statement1 else statement2
if (x == 100) cout << "x is 100"; else cout << "x is not 100"; if (x > 0) cout << "x else if (x < cout << "x else cout << "x

is positive"; 0) is negative"; is 0";

Estruturas de controlo
Estruturas de Repetio ou Laos
while (expression) statement
#include <iostream.h> int main () { int n; cout << "Enter the starting number > "; cin >> n; while (n>0) { cout << n << ", "; --n; } cout << "FIRE!"; return 0; }

10

Estruturas de controlo
do statement while (condition);
#include <iostream.h> int main () { unsigned long n; do { cout << "Enter number (0 to end): "; cin >> n; cout << "You entered: " << n << "\n"; } while (n != 0); return 0; }

Estruturas de controlo
for (initialization; condition; increase) statement;
#include <iostream.h> int main () { for (int n=10; n>0; n--) { cout << n << ", "; } cout << "FIRE!"; return 0; }

11

Estruturas de controlo
Os campos initialization e increase so opcionais. Utilizando o operador vrgula (,) possvel especificar mais de uma operao em qualquer campo.

Estruturas de controlo
Estrutura Seletiva switch
switch (expression) { case constant1: block of instructions 1 break; case constant2: block of instructions 2 break; . . . default: default block of instructions }

12

Funes
Uma funo um bloco de instrues que executado quando ele chamado de algum outro ponto do programa. type name ( argument1, argument2, ...)

statement

type o tipo de dado retornado pela funo. name o nome atribudo a funo. arguments (quantos forem especificados) so valores passados
para dentro da funo quando sua chamada realizada. Cada argumento consiste de um tipo de dado seguido de seu identificador, como uma declarao de varivel. statement o corpo da funo, que pode ser uma simples instruo ou um bloco de instruo.

Funes
#include <iostream.h> int addition (int a, int b) { int r; r=a+b; return (r); } int main () { int z; z = addition (5,3); cout << "The result is " << z; return 0; }

13

Funes
Passagem dos parmetros (argumentos)

e quando for executado return (r);

Funes
Argumentos passados

por valor

e por referncia

Ateno: argumentos por referncia exclusivo do C++, sendo que em C necessrio o uso de ponteiros.

14

Ponteiros
At the moment in which we declare a variable it must be stored in a concrete location in this succession of cells (the memory). We generally do not decide where the variable is to be placed - fortunately that is something automatically done by the compiler and the operating system at runtime, but once the operating system has assigned an address there are some cases in which we may be interested in knowing where the variable is stored.

Ponteiros
Operador de endereo (&) & significa literalmente o endereo de"
andy = 25; fred = andy; ted = &andy;

15

Ponteiros
Operador de referncia (*) * significa literalmente o valor

apontado por
beth = *ted;

Ponteiros
No exemplo a seguir: andy = 25; ted = &andy; Todas as expresses abaixo so verdadeiras: andy == 25 &andy == 1776 ted == 1776 *ted == 25

16

Ponteiros
Declarao de variveis do tipo ponteiro
type * pointer_name;
int * number; char * character; float * greatnumber;

Ponteiros
#include <iostream.h> int main () { int value1 = 5, value2 = 15; int * mypointer; mypointer = &value1; *mypointer = 10; mypointer = &value2; *mypointer = 20; cout << "value1==" << value1 << "/ value2==" << value2; return 0; }

17

Ponteiros
Ponteiros e vetores
O identificador de um vetor equivalente ao endereo de seu primeiro elemento, como um ponteiro equivalente ao endereo do primeiro elemento que ele aponta, assim de fato eles so (quase) a mesma coisa.

Ponteiros
A diferena:
Supondo essas 2 declaraes:
int numbers [20]; int * p;

a seguinte operao ser vlida:


p = numbers;

mas a seguinte no:


numbers = p;

Isso porque o vetor um ponteiro constante, e nenhum valor pode ser associado a ele.

18

Ponteiros
#include <iostream.h> int main () { int numbers[5]; int * p; p = numbers; *p = 10; p++; *p = 20; p = &numbers[2]; *p = 30; p = numbers + 3; *p = 40; p = numbers; *(p+4) = 50; for (int n=0; n<5; n++) cout << numbers[n] << ", "; return 0; }

Ponteiros
Ver no Tutorial de C++:
Inicializao de ponteiro Aritmtica de ponteiros Ponteiro para ponteiros Ponteiro void Ponteiros para funes

19

Alocao Dinmica de Memria


Operators new and new[ ]
pointer = new type pointer = new type [elements]

int * bobby; bobby = new int [5]; if (bobby == NULL) { // error assigning memory. Take measures. };

Alocao Dinmica de Memria


O tamanho do vetor determinado na sua declarao. Enquanto que na alocao dinmica o tamanho do vetor pode ser redimensionado do decorrer do programa. No entanto, ao final o espao alocado deve ser liberado. Operator delete
delete pointer; delete [] pointer;

20

Potrebbero piacerti anche