• Nenhum resultado encontrado

C++ Orientado a Objetos

N/A
N/A
Protected

Academic year: 2021

Share "C++ Orientado a Objetos"

Copied!
23
0
0

Texto

(1)

C++ Orientado a Objetos

Prof. Flávio de Oliveira Silva, M.Sc.

[email protected]

fla iosil a@comp ter org

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. 115

[email protected]

C++

C++ e C - Comparação

C

 Linguagem compilada

 ANSI C – Padrão e Portabilidade C  Programação em Alto nível e baixo nível

 Programação Estruturada

 Utilização da memória: Ponteiros

C++

 Criado por Stroustroup em 1980

 Novos conceitos em procedimentos

Sobrecarga; Templates; exceções; converões de tipos

 Conceitos Programação orientada a objetos

(2)

Utilizando o DevC++

 Será utilizado o ambiente DevC+ + (Versão 4.9.9.2)  Ambiente gráfico; Em português; Gratuito

 Utiliza compiladores da família gcc

C i d P j t (

 Criando um novo Projeto (Arquivo  Novo  Projeto...)

 Um projeto contém todas as informações necessárias para compilar e criar programas.

 Em um projeto são armazenados todos os arquivos necessários (arquivos .cpp; .h e .rc)

 O projeto (hello.dev) deve ser salvo de preferência em uma pasta específica para o mesmo.

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. 117

DevC++ - Novo Projeto

Salvando Arquivos

 O DevC++ permite a criação de vários tipos de projetos

 Um projeto "Console Application" consiste de um programa que será executado no terminal do S.O em modo texto.

 Após criar o projeto automaticamente será criada a função main, necessária para a execução do mesmo

int main(int argc, char *argv[])

 Além disso um arquivo main.cpp será criado.

 Neste arquivo existe o código básico de uma "Console Application". Este arquivo deve ser salvo na pasta criada para o projeto.

 Para salvar um arquivo:

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

q

 Utilize a opção do menu Arquivo  Salvar (Ctrl + s) ou então a barra de

ferramentas

(3)

DevC++ - Editando programas

 O editor de programas possui recursos como:  Navegador de classes

 Diferentes cores para diferentes partes do código; complemento de código; entre outras

entre outras.

 Cada parte do código possui uma cor específica :  Palavras reservadas da linguagem – preto / negrito

 Texto (Strings) –vermelho  Números –roxo  Pré-processador -verde  Comentário –azul P d ã d D C 1 #include <cstdlib> 2 #include <iostream> 3 //Hello World! 4 using namespace std; 5

6 int main(int argc, char *argv[])

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

 Padrão cores do DevC++

119

6 int main(int argc, char argv[]) 7 {

8 int i = 1; 9 system("PAUSE");

10 return EXIT_SUCCESS; 11 }

DevC++ - Compilando Programas

Para compilar os programas

 Menu Executar  Compilar

(Ctrl + F9)

Recompilar todas as

unidades de código

 Executar  Rebuild All

(4)

DevC++ - Configuração

 Um problema muito comum é o compilador e o linker não encontrar os arquivos .h e as bibliotecas necessárias

 Para Configurar o DevC+ + para utilização do código em C+ +

I i i l t d tili d F t  O õ d

 Inicialmente deve ser utilizado o menu: Ferramentas  Opções do

Compilador

 Em seguida deve-se clicar na aba DIRETÓRIOS

Aba BINÁRIOS

 C:\Dev-Cpp\Bin

 Esta é a pasta que contém os executáveis (compilador; linker; etc.)

Aba BIBLIOTECAS C \De Cpp\lib

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.  C:\Dev-Cpp\lib

 Esta é a pasta que contém as bibliotecas que serão utilizadas pelo linker

Aba C++ INCLUDES

 Pastas que contém os arquivos .h de bibliotecas fornecidas com o DevC++

121

DevC++ - Configuração

C++ Includes

Estrutura de Dados

(5)

DevC++ - Depuração de Programas

Configuração

Um recurso importante do compilador é a possibilidade de

depurar (debug) o código.

Para isto inicialmente é necessário informar ao compilador

Para isto inicialmente é necessário informar ao compilador

que gere informações adicionais que serão utilizadas pelo

debugger.

Para configurar deve-se realizar o seguinte procedimento:

 Projeto  Opções do Projeto.

 Aba "Geração de Código / Otimização"

Selecionar "LINKER" e marcar "YES" em "Gerar informação de

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

ç depuração", conforme mostrado a seguir

 Aba "Compilador"

Adicionar a opção "-g" para forçar a para produção de informação de debug

123

DevC++ - Depuração de Programas

Configuração

Opções do Compilador

(6)

Aplicação Console

Código Básico - C

1. //Preprocessador inclui o arquivo stdio.h-definição da função printf

2. #include <stdio.h>

3. // Inclue funções básicas, neste caso a função system

4. #include <stdlib.h>

5. //Definição da função main. Uma aplicação console deve possuir uma

6. // função main

7. int main(int argc, char *argv[])

8. // Inicio do bloco da função main

9. {

10. // Imprime o texto - Hello World! – e duas quebras de linha

11. printf("Hello World!\n\n");

12. //Chama um comando do console do S.O., neste caso o comando PAUSE

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

12. //Chama um comando do console do S.O., neste caso o comando PAUSE

13. system("PAUSE");

14. //Finaliza o processamento da função main e retorna

15. return 0;

16.// fim do bloco da função main

17.}

125

Comandos e Expressões

 Comando é a menor unidade de um programa C++ e pode conter uma ou mais linhas

 Os comandos são finalizados por ;

 Um bloco contém uma sequência de comandos que são executados

 Um bloco contém uma sequência de comandos que são executados sequencialmente e é iniciado com o caractere { e termina com o caractere }

 É possível a criação de blocos dentro de blocos de programa

 Uma expressão representa uma operação executada pelo programa.

 Ex: Definição de Variável; Expressão Aritmética ou lógica; Mensagem entre objetos 1. {

2. expr1;

3. expr2; {

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. 4. { 5. exprI1; 6. exprI; 7. } 8. ... 9. expr3; 10.} 126

(7)

Tipos Básicos

 Tipos de dados são abstrações utilizadas e manipuladas por uma linguagem.

 Tipos fundamentais fazem parte da linguagem e estão sempre disponíveis para serem utilizados

 Quando uma classe é criada um novo tipo fica disponível para o programa

 Quando uma classe é criada um novo tipo fica disponível para o programa

 A tabela abaixo mostras os tipos fundamentais (plataforma 32 bits)

TIPO SINÔNIMO CARACTERÍSTICA TAMANHO (Bytes) MÍNIMOVALOR  MÁXIMOVALOR 

bool  booleano  1 0 1

char  signed char  caracteres 1 ‐128 127

unsigned char  caracteres sem sinal 1 0 255

short  short int; signed short int inteiro pequeno 2 ‐32768 32767 unsigned 

short  unsigned short int inteiro pequeno sem sinal 2 0 65535

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. 127

int signed; signed int inteiros 4 ‐2.147.483.648  2.147.483.648  unsigned int unsigned  inteiro sem sinal  4 0 4.294.967.295  long  long int; signed long int inteiro grande  4 ‐2.147.483.648  2.147.483.648  unsigned long  unsigned long int inteiro grande sem sinal  4 0 4.294.967.295 

float  ponto flutuante; precisão simples  4 ‐3.40E‐37 3.40E+38 double  ponto flutuante; precisão dupla  8 ‐1.70E‐307 1.7e+308  long double  ponto flutuante; precisão dupla  8 ‐1.70E‐307 1.7e+308 

Declaração Básica de Variáveis

 Toda variável deve ser declarada sendo necessário a definição do seu tipo

1. int iX;

2 dobule dX dY;

2. dobule dX, dY;

3. bool bValue;

 Durante a declaração é possível inicializar a variável, definindo um valor inicial para a mesma

4. int iX = 200; //Sintaxe C padrão

5. int iX(200), iY(244) //Sintaxe C++

 Uma variável declarada dentro um bloco é válida somente dentro daquele bloco. Neste caso ela possui um "escopo LOCAL"p p

 Uma variável declarada fora de um bloco possui um "escopo" GLOBAL"

A keyword const especifica uma variável cujo valor não pode ser modificado

(8)

Operadores Aritméticos

Símbolos – "+" "-" "* " "/ " "%"

1. int iA = 13; //declara e inicializa

2. int iV(7); //declara e inicializa 3. float f1; //declara a variável 4. f1 = 13; //Inicializa variável 5. iA+iV //retorna 20 6. iA-iV //retorna 6 7. iA*iV //retorna 91 8. iA/iV //retorna 1 Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. 9. f1/iV //retorna 1.8571428

10. f1%iV //operador módulo – retorna resto inteiro da

divisão de f1 por iV neste caso o valor é zero.

129

Operadores Aritméticos

INCREMENTO ("++") E DECREMENTO("--")

 Funcionam como operadores unários

1. int iY, iX = 10 //iY indefinido e iX igual a 10

2. //Incremento prefixado – incrementa primeiro iX e depois Atribui a iY

iY = ++iX;

//Neste ponto iY = 11 e iX = 11;

//Incremento pós-fixado – Primeiro atribui iX a //iY e depois incrementa iX;

iY iX++

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. 3. iY = iX++;

//Ao final iY = 11 e iX = 12;

(9)

Operadores Lógicos

Símbolos – "&&" (AND) "||" (OR) "!" (NOT)

int bX, bY;

bX

bY

bX && bY bX || bY

!bX

bX

bY

bX && bY bX || bY

!bX

true 

true 

true 

true 

false 

true 

false 

false 

true 

false 

true 

false 

true 

true 

false 

false 

false 

false 

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

Em C++ se uma expressão é false, o seu retorno equivale a

zero de tipo int - int false(0).

Uma expressão é true se retorna um valor diferente de zero

131

Operadores Relacionais

Símbolos

OPERAÇÃO SÍMBOLO OPERAÇÃO SÍMBOLO

IGUALDADE  ==  MAIOR QUE > 

Exemplos:

1. int iH = 4, iJ = 4, iK = 6; 2. iH == iJ //Retorna 1 3. iH == iK //Retorna 0 iK iK //R t 1 DESIGUALDADE  !=  MENOR OU IGUAL QUE  <=  MENOR QUE  <  MAIOR OU IGUAL QUE  >=  4. iK == iK //Retorna 1 5. iH < iK //Retorna 1 6. iH < iJ //Retorna 0 7. iH <= iJ //Retorna 1

(10)

Operadores Binários

Símbolos

"AND" BINÁRIO & "OR INCLUSIVO" BINÁRIO |

"OR EXCLUSIVO" BINÁRIO ^ COMPLEMENTO BINÁRIO ~

Exemplos

int c = 4; //binário 00000100

int d = 6; //binário 00000110

int bytRes;

bytRes = c & d; //retorna 4 00000100 bytRes = c ^ d; //retorna 2 00000010

OR EXCLUSIVO  BINÁRIO COMPLEMENTO BINÁRIO

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

bytRes = c d; //retorna 2 00000010 bytRes = c | d; //retorna 6 00000110 bytRes = ~c; //retorna -5 11111011 bytRes = d >> 2; //retorna 1 00000001 bytRes = d << 2; //retorna 24 00011000 133

Operador Condicional ( ? : )

Exemplo

a ? b : c //retorna o valor b se a é true, //caso contrário retorna o valor c

Estrutura de Dados

(11)

Operadores

Uso

 Associatividade da esquerda para direita

 Regras de Precedência

[] . e++ e---e !e ~e ++e -e---ee !e e ++e e

new * / % + -== != & ^ | && Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.  Exemplos:

a/b*c interpretado como (a/b)*c a+b*c/d interpretado como a+((b*c)/d)

135 && || ? : = += *= /= %= >>= <<= &= ^= !=

Operações Importantes

ATRIBUIÇÃO DE VALORES(Operador =)

 Variável (v e v1) à esquerda irá conter o valor E, especificado à direita.

v = E;

v = v1 = E; equivale a v = (v1 = E); //Evitar!!!

ATRIBUIÇÃO COM OPERADOR (op=)

 Sendo op um operador

 v op= f; equivale a v = v op f;

 Exemplo

(12)

Operações Importantes

Acessar um método de um objeto

Utiliza-se o operador ponto "." ou então o operador "-> "

 Exemplos:

Circle* pC = new Circle();

//No caso acima pC é um ponteiro para um circle pC->getName();

Circle c(3); //Neste caso Circle não é um ponteiro, c.getArea(); //mas sim uma variável estática!

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. 137

Estrutura de um Programa em C++

# include # define

Definições de Variáveis globais Protótipos de funções/classes

Funções criadas pelo programa / Métodos de classes int main() { ... return 0; } Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

}

(13)

Arquivos Include

 A diretiva #includeinforma que um arquivo de cabeçalho (* .h) deverá ser incluído, pelo processador, no ponto indicado

 Os arquivos de cabeçalho (header files) pode conter protótipos de funções; definições de constantes e definições de classes juntamente funções; definições de constantes e definições de classes juntamente com seus atributos e métodos

 Para incluir um arquivo somente é necessário informar o nome do arquivo sem a necessidade de indicar sua localização

 Para que a compilação ocorra corretamente é necessário que as pastas de arquivos INCLUDE esteja corretamente configurada no projeto ou então no ambiente de desenvolvimento.

P fi t d tã i d i l d

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

 Para configurar as pastas onde estão os arquivos de includes no DEVC++ deve ser utilizado o menu:

 FERRAMENTAS  OPÇÕES DO COMPILADOR  DIRETÓRIOS

139

Diretiva #define e Variáveis Globais

A diretiva

#define

é utilizada para dar um nome a um valor

constante que será utilizado em todo o programa.

Após a definição de uma constante através da diretiva

Após a definição de uma constante através da diretiva

#define, em todas as ocorrências subsequentes no código,

após a definição, o nome utilizado, será substituído pela

constante no momento da compilação

Com a diretiva #define é possível também criar macros que

são utilizados pelo programa

Exemplos:

Exemplos:

#define PI 3.141519

(14)

Estruturas de Controle

Estrutura de Seleção – if / if-else

 Uma instrução (ou bloco de instruções) somente será executada caso uma condição (expressão condicional E) resultar em verdadeiro (true)

if (E) S; S;

 Uma variação da estrutura acima é a estrutura if-else. Onde uma escolha é feita.

Se a expressão condicional (E) for verdadeira (true) então um o bloco de instruções logo após a expressão será executado. Caso contrário, sendo a expressão falsa (false) então o bloco que se encontra após a palavra else será executado.

if (E)

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. if (E)

S; else

R;

 Um bloco de instruções pode conter uma única linha de código ou então mais de uma linha envolvidos pelos sinais { e }

141

Estruturas de Controle

Estrutura de Seleção – if / if-else

 Exemplo – Bloco com um único comando

if (nota >= 60)

cout << "Aprovado" << endl; else

else

cout << "Reprovado" << endl;

 Exemplo – Bloco com vários comandos

if (ii == 0){ ii = 1;

cout << "Valor de ii atualizado" << endl; }

else {

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

ii = 0;

cout << "Valor de ii inicializado em zero" << endl; }

(15)

Estruturas de Controle

Seleção Múltipla – switch

 A estrutura if-else permite a seleção no máximo entre 2 blocos diferentes.

 Caso seja necessário um número maior de opções então deve ser utilizado a estrutura switch. Exemplo:

it h (E) { switch (E) { case c1 : S1; break; case c2 : S2; break; ... default : Sd; Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. }

143

Estruturas de Controle

Seleção Múltipla – switch

 Inicialmente a expressão E é avaliada. Caso a expressão E, resulte na constante c1, o bloco de instruções S1 será executado, até que a palavra break seja encontrada. O break indica que todos as linhas, relacionadas com o switch serão ignoradas

com o switch serão ignoradas

 Neste caso o próxima instrução após o switch será executada. Da

mesma forma caso E, resulte na constante c2 o bloco S2 será executado. E assim, sucessivamente.

 Caso a expressão E não resulte em nenhum valor constante presente no switch (c1, c2, ...) então o bloco padrão (default) Sd será executado

 O bloco default (Sd) é opcional, não sendo necessário sua presença. O l t t tili d it h d d ti bt h t

(16)

Estruturas de Controle

Seleção Múltipla – switch- Exemplo

int a = 2;

switch (a){

case 1 : { // este sinal é opcional, porém melhora a leitura do código cout << "A é igual a 1" << endl;

b k // d bl d fi li d b k

break; //cada bloco deve sempre ser finalizado com um break } //caso o bloco tenha sido aberto deve ser fechado

case 2 : {

cout << "A é igual a 2" << endl; break;

}

case 3 : {

cout << "A é igual a 3" << endl; break;

}

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. }

default : {

cout << "A é diferente de 1,2 e 3" << endl;

//Neste caso o break é opcional pois não existem outros bloco no switch }

} // final do comando switch

//continua a execução a partir deste ponto

145

Estruturas de Controle

Repetição – while

 Esta estrutura indica que a instrução ou bloco de instruções (S) que se encontra logo após uma expressão condicional (E) será executado ENQUANTO tal expressão por verdadeira (true) ou seja diferente de zero.

while (E) S;

 Quando a última instrução do bloco é executada a expressão (E) será novamente executada e caso continue verdadeira o bloco será executado mais uma vez, e assim, sucessivamente.

 A fim de evitar que a execução do bloco de instruções (S) execute indefinidamente é necessário que dentro deste bloco o valor da expressão condicional seja em algum momento alterado para falso (false).

No caso da instrução while sempre é feito um teste antes da execução do

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

No caso da instrução while, sempre é feito um teste antes da execução do bloco. Dessa forma para que o bloco seja executado, pelo menos uma vez, o resultado da expressão inicialmente seja verdadeiro.

Ao terminar a repetição a primeira instrução após a instrução while é executada.

(17)

Estruturas de Controle

Repetição – while – Exemplo

int a;

a = 0;

//A instrução abaixo fosse executada não permitiria a repetição //a = 10

//a = 10

while (a < 10) {

cout << "A ainda é menor que 10!" << endl;

//Sem a instrução abaixo a repetição nunca terminaria a++;

}

//Primeira instrução a ser executada após o while t << "A é i l 10!" << dl

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. cout << "Agora, a é igual a 10!" << endl;

147

Estruturas de Controle

Repetição – do/while

Esta estrutura é semelhante ao while, porém sempre o bloco de instruções (S) será executado pelo menos uma vez.

 Em seguida a expressão condicional (E) é avaliada e o bloco de instruções será executado ENQUANTO seu valor for verdadeiro instruções será executado ENQUANTO seu valor for verdadeiro.

do { S;

} while (E);

 Caso a expressão seja verdadeira a primeira instrução do bloco será executada novamente

Da mesma forma que o while, o bloco S deve alterar, em algum t lt d d li ã d ã E fi d

momento, o resultado da avaliação da expressão E a fim de que a mesma retorne o valor FALSE

(18)

Estruturas de Controle

Repetição – for

Neste caso a repetição é controlada por um contador da

seguinte forma:

for (C; E; I) S;

O bloco de instruções S, será executado enquanto a

expressão condicional E, for verdadeira

O contador é inicializado pela expressão C e a expressão I é

responsável por alterar o valor do contador

Em algum momento o retorno da expressão E deve ser falso

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

Em algum momento o retorno da expressão E deve ser falso

e normalmente a expressão utiliza o valor do contador I em

uma operação relacional

149

Estruturas de Controle

Repetição – for – exemplo

int i;

for (i = 0; i < 10; i++){

cout << "O contador I ainda é menor que 10!" << endl; }

}

//proxima instrução após o for

No exemplo acima, o contador é um número inteiro i. A instrução será executada enquanto a expressão for verdadeira (i < 10) e i será incrementado de 1 em 1.

Dentro do bloco de instruções pode ser utilizada instrução break que finalizará a repetição desviando o controle para a próxima instrução após a instrução for independente do resultado da expressão E

A instrução continue desvia o controle para o início da instrução for, não

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

executando o restante das instruções do laço, porém realiza o incremento e o teste

 A diferença entre continue e break, é que a instrução continue não finaliza a repetição.

breake continue podem ser utilizados também com while e do/while

(19)

Arrays (Vetores)

Declaração

 O array é uma importante estrutura de dados e que normalmente existe de forma nativa na maioria da linguagens

 Consiste em um grupo de “OBJETOS” do mesmo tipo, onde a cada objeto é associado um “ÍNDICE” único.

associado um ÍNDICE único.

Em um array é possível o acesso direto a um objeto utilizando este índice

 Estes objetos estão armazenados em uma posição contígua da memória. O número de objetos contidos é definido como sendo o TAMANHO do vetor.

 A seguir são mostrados exemplos de sintaxe para a criação de um array em C++

//O código abaixo declara um array de 50 posições int iNotas[50];

//Na declaração abaixo o tamanho é calculado pelo compilador

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. int iPrimos[] = {1, 3, 5, 7, 11};

//Cria um array de objetos da classe Circle Circle aCircle[10];

151

Arrays (Vetores)

Acesso

 O acesso da cada elemento pode ser feito da seguinte forma: aNotas[0] = 15 //Primeiro elemento

...

aNotas[49] = 34 //Último elemento

 Os vetores são estruturas “estáticas”, sendo que uma vez criados não podem ter o seu tamanho alterado. Porém sua criação é feita de forma dinâmica, durante a execução do código.

 Para um array de comprimento n, seus índices variam de 0 a n-1.

 Um índice equivale a um deslocamento a partir do início do vetor.

 Em c+ + é possível deslocar após o final do vetor Isto deve ser sempre  Em c+ + é possível deslocar após o final do vetor. Isto deve ser sempre

(20)

Arrays (Vetores)

Acesso com Expressões

 É possível manipular em expressões tanto o índice do vetor, quanto cada elemento.

 Também é possível utilizar variáveis inteiras para variar o índice

 Exemplos

//Soma de elementos

int iSoma = aNotas[0] + aNotas[3] + aNotas[3+1]; int iPrimeiro, iSegundo, iTerceiro, iResultado ; iPrimeiro = 0;

iSegundo = 1; iTerceiro = 2;

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

//adiciona 7 a quarto elemento do vetor (0+1+2=3) aNotas[iPrimeiro + iSegundo + iTerceiro ] += 7; iResultado = aNotas[iPrimeiro]/2 + aNotas[3/3]*3

153

Arrays (Vetores)

Comprimento do Vetor

O comprimento de um vetor pode ser obtido utilizando-se o

operador sizeof.

O operador sizeof retorna o tamanho em bytes do operando

O operador sizeof retorna o tamanho em bytes do operando

int iSizeOfInt = sizeof(int);

int iSizeOfCircle = sizeof(Circle);

Para calcular o número de elementos do vetor, basta calcular

o tamanho em bytes do vetor e dividir pelo tamanho de um

elemento deste vetor da seguinte forma:

int iArraySize(0);

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.

y ( );

iArraySize =(sizeof aNotas)/(sizeof aNotas[0]); iArraySize =(sizeof aCircle)/(sizeof aCircle[0]);

(21)

Arrays (Vetores)

Percorrendo os elementos

 Para percorrer os elementos de um vetor deve ser utilizada alguma estrutura de repetição

A estrutura mais comum para esta atividade é o for, pois é limitado por um contador que deve ser no máximo igual ao tamanho do vetor

um contador que deve ser no máximo igual ao tamanho do vetor

 A linguagem C++ permite o acesso fora dos limites do vetor e isto deve sempre ser evitado

 Exemplo

int iArraySize(0);

iArraySize =(sizeof aNotas)/(sizeof aNotas[0]); for (int ii = 0; ii < iArraySize ; ii++){

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. if (aNotas[ii] >= 60)

cout << “Aprovado" << endl; else

cout << “Reprovado" << endl; }

155

Arrays (Vetores)

Multidimensionais

O vetores podem possui mais de uma dimensão

Neste caso cada elemento do vetor possui mais de um

índice associado ao mesmo.

índice associado ao mesmo.

Matriz

 Uma matriz, por exemplo, é um vetor de duas dimensões

 Neste caso pode ser dito que a informação está organizada em linhas e colunas.

 Exemplo:

int aMatriz[2][3];

Vetor com três dimensões

(22)

Arrays (Vetores)

Multidimensionais - Elementos

 A fim de percorrer todos todos os elementos de um vetor

multidimensional é necessário criar variáveis inteiras tantos quantos forem os índices associados ao vetor

 Percorrendo os elementos de um vetor bidimensional(matriz)

 Percorrendo os elementos de um vetor bidimensional(matriz)

for (int i = 0; i < iRowSize; i++){

cout << "Percorrendo linha " << i << "da matriz" << endl; for (int j = 0; j < iColSize; j++){

if (j == 0)

cout << "Percorrendo coluna " << j << endl;

cout<<"M[“<< i << "," << j <<"]"<< aMatriz[i,j] << endl; }

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. }

157

Arrays (Vetores)

Strings

 Em c++, assim como em C, as sequências de caracteres (Strings) são tratadas como um vetor de caracteres, ou seja de elementos do tipo char

 Inicializando um vetor de caracteres

h N [] "Fl i " C [4] "C " char sNome[]="Flavio", sCurso[4]= "C+ + "; char sLinhaDeTexto[256];

 O tamanho do vetor equivale o número de bytes do mesmo, visto que cada elemento do tipo char, possui um byte.

 Um vetor de caracteres sempre é finalizado pelo caracter NULL ('\0')

 Ao percorrer um vetor de caracteres deve-se encerrar esta operação ao encontrar um caracter NULL POSIÇÃO 

VALOR

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc.  Esta condição é normalmente utilizada nas

estruturas de repetição (while)

158 VETOR VALOR [0] 'C' [1] '+' [2] '+' [3] '\0' [4] '?'

(23)

Arrays (Vetores)

Strings – Percorrendo os elementos

Normalmente é utilizando uma estrutura de repetição while

 A sequencia é percorrida enquanto um caracter NULL não é encontrado

 Exemplo

...

char sNome[]="Flavio" int ii(0);

while (sNome[ii] != '\0'){ cout << sNome[ii] << endl; ii = ii++;

}

Estrutura de Dados

Prof. Flávio de Oliveira Silva, M.Sc. ...

Referências

Documentos relacionados

Por exemplo, os Tribunais de Justiça do Rio de Janeiro, de São Paulo e do Mato Grosso do Sul partilhavam dessa mesma característica, possuindo mais de um sistema em sua

Ao serem atravessados por raios X, tecidos mais densos (como o fígado) ou com elementos mais pesados (como o cálcio), absorvem mais radiação que ou com elementos mais pesados (como

Não existem documentos com informações claras sobre a história do surgimento e da evolução desta cerveja. A Foreign é uma cerveja

Chora Peito Chora Joao Bosco e Vinicius 000 / 001.. Chão De Giz Camila e

Este aumento do volume e da espessura da parede da bexiga pode ser uma adaptação fisiológica ao aumento da diurese observada em animais diabéticos e/ou a um possível aumento

Sendo assim, o estudo apresenta como objetivo investigar o nível de sobrepeso e/ou obesidade em idosos assistidos pelo NASF do Município de Patos-PB.. A pesquisa se

A diferença significativa entre as médias de ajuste visual verificadas para a condição de contorno subjetivo médio e para a condição controle (sem contorno) mostrou que a

(E) não terão acesso às ações e serviços de saúde do SUS... “X” é um termo genérico para qualquer programa