Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
1
Estrutura de Dados e Algoritmos e Programação e Computadores II
Aula 2: Introdução à linguagem C++
Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc.Estruturas de controlo.Funções.Ponteiros.Passagem de parâmetros.Alocação dinâmica de memória.Arquivos.
2
Hello World!
// my first program in C++
#include <iostream.h>
int main () {
cout << "Hello World!";
return 0;
}
Hello World!
Conceitos básicos: tipos de dados
signed: -32768 to 32767 | unsigned: 0 to 65535 2short
true or false1bool
1.2e + / - 4932 (19 digits) 10long double
1.7e + / - 308 (15 digits) 8double
3.4e + / - 38 (7 digits) 4float
Veja long4int
signed:-2147483648 to 2147483647unsigned: 0 to 4294967295
4long
signed: -128 to 127 | unsigned: 0 to 2551char
RangeBytesName
3
Conceitos básicos: variáveisDeclarações
int a, b, c;
unsigned short NumberOfSons;
signed int MyAccountBalance;
Inicializaçãoint a = 0; // formas semelhantes
int a (0);
Conceitos básicos: variáveisOperações
a = 5;
b = 2;
a = a + 1;
result = a - b;
cout << result;
4
4
Conceitos básicos: variáveisEscopo das variáveis
Em C++, o escopo de uma variável local é dado pelo bloco no qual ele é declarado.Um bloco é um grupo de instruções agrupados com chaves { }.
Conceitos básicos: constantes
Definição#define PI 3.14159265#define NEWLINE '\n'#define WIDTH 100
Declaraçãoconst int width = 100;const char tab = '\t';const zip = 12440; // tipo: int
5
Conceitos básicos: operadores
Associaçãoint a, b; // a:? b:?
a = 10; // a:10 b:?
b = 4; // a:10 b:4
a = b; // a:4 b:4
b = 7; // a:4 b:7
a = 2 + (b = 5); // a:7 b:5
a = b = c = 5; // todos iguais à 5
Conceitos básicos: operadores
Operadores Aritméticos+ adição
- subtração
* multiplicação
/ divisão
% resto da divisão
6
Conceitos básicos: operadores
Operações compostas de associação+=, -=, *=, /=, %=, >>=, <<=
value += increase; // value = value + increase;
a -= 5; // a = a - 5;
a /= b; // a = a / b;
price *= units + 1; // price = price * (units + 1);
Conceitos básicos: operadoresIncrementar e decrementar
int a = 0;
a++; // incrementa 1, a: 1
a+=1; // incrementa 1, a: 2
a=a+1; // incrementa 1, a: 3
B=3;A=++B; // A: 4 B: 4
B=3;
A=B++; // A: 3 B: 4
7
Conceitos básicos: operadores
Operações relacionais
== Igual
!= Diferente
> Maior que
< Menor que
>= Maior ou igual que
<= Menor ou igual que
Conceitos básicos: operadoresOperações lógicas
! Negação&& Operação AND
|| Operação OR
Operação Condicionalcondition ? result1 : result2
7==5 ? 4 : 3 // retorna 3, já que
// 7 é diferente de 5.
a>b ? a : b // retorna o maior.
8
Conceitos básicos: I/O
Output (cout)cout << “Sentença de saída";
cout << 120; // imprime 120 na tela
cout << x; // imprime a variável x
cout << “Olá, eu tenho " << idade << " anos e meu código postal é " << zipcode << endl;
Conceitos básicos: I/O
Input (cin)int age;
cin >> age;
cin >> a >> b; // é equivalente a:
cin >> a;
cin >> b;
9
Estruturas de controloUm bloco de instruções é um grupo de instruções separadas por ponto-e-vírgula (;) mas agrupadas em um bloco delimitado porchaves: { e }.Um statement refere-se também para umainstrução simples quanto a um bloco de instruções.
Estruturas de controlo
Estrutura Condicional: if e elseif (condition) statement
if (x == 100)cout << "x is 100";
if (x == 100){cout << "x is ";cout << x;
}
10
Estruturas de controloif (condition) statement1 else statement2
if (x == 100)cout << "x is 100";
elsecout << "x is not 100";
if (x > 0)
cout << "x is positive";
else if (x < 0)
cout << "x is negative";
else
cout << "x is 0";
Estruturas de controloEstruturas de Repetição ou Laços
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;
}
11
Estruturas de controlodo 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 controlofor (initialization; condition; increase) statement;
#include <iostream.h>
int main ()
{
for (int n=10; n>0; n--) {
cout << n << ", ";}
cout << "FIRE!";
return 0;
}
12
Estruturas de controloOs campos initialization e increase são opcionais.Utilizando o operador vírgula (,) é possível especificar mais de uma operação em qualquer campo.
Estruturas de controloEstrutura Seletiva switch
switch (expression) {case constant1:
block of instructions 1break;case constant2:
block of instructions 2break;...default:
default block of instructions}
13
FunçõesUma função é um bloco de instruções que é executado quando ele é chamado de algum outro ponto do programa.type name ( argument1, argument2, ...) statement
type é o tipo de dado retornado pela função.name é o nome atribuído a função.arguments (quantos forem especificados) são valores passados para dentro da função quando sua chamada é realizada. Cada argumento consiste de um tipo de dado seguido de seu identificador, como uma declaração de variável.statement é o corpo da função, que pode ser uma simples instrução ou um bloco de instrução.
Funções#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;
}
14
FunçõesPassagem dos parâmetros (argumentos)
e quando for executado return (r);
Funções
Argumentos passados
por valor e por referência
Atenção: argumentos por referência é exclusivo do C++, sendo que em C é necessário o uso de ponteiros.
15
PonteirosAt the moment in which we declare a variableit must be stored in a concrete location in thissuccession of cells (the memory).We generally do not decide where thevariable is to be placed - fortunately that is something automatically done by thecompiler and the operating system atruntime, but once the operating system hasassigned an address there are some cases in which we may be interested in knowingwhere the variable is stored.
Ponteiros
Operador de endereço (&)& significa literalmente “o endereço de"andy = 25;fred = andy;ted = &andy;
16
Ponteiros
Operador de referência (*) * significa literalmente “o valor apontado por“
beth = *ted;
PonteirosNo exemplo a seguir:
andy = 25;ted = &andy;
Todas as expressões abaixo são verdadeiras:
andy == 25&andy == 1776ted == 1776*ted == 25
17
PonteirosDeclaração de variáveis 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;
}
18
Ponteiros
Ponteiros e vetoresO identificador de um vetor é equivalente ao endereço de seu primeiro elemento,como um ponteiro é equivalente ao endereço do primeiro elemento que ele aponta,assim de fato eles são (quase) a mesma coisa.
PonteirosA diferença:
Supondo essas 2 declarações:int numbers [20];int * p;
a seguinte operação será válida:p = numbers;
mas a seguinte não:numbers = p;
Isso porque o vetor é um ponteiro constante, e nenhum valor pode ser associado a ele.
19
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++:Inicialização de ponteiroAritmética de ponteirosPonteiro para ponteirosPonteiro voidPonteiros para funções
20
Alocação Dinâmica de Memória
Operators new and new[ ]pointer = new typepointer = new type [elements]
int * bobby;bobby = new int [5];if (bobby == NULL) {
// error assigning memory. Take measures.};
Alocação Dinâmica de Memória
O tamanho do vetor é determinado na sua declaração.Enquanto que na alocação dinâmica o tamanho do vetor pode ser redimensionado do decorrer do programa.No entanto, ao final o espaço alocado deve ser liberado.Operator delete
delete pointer; delete [] pointer;