c++ apostila c++ nivel basico

15
Francisco Adell Péricas 1 C++ – Programação Básica 1 Introdução Os programas de computador, ou softwares – processadores de texto, planilhas, navegadores Internet, e até mesmo o sistema operacional Windows – são arquivos cujas instruções dizem ao computador como realizar determinadas tarefas. No ambiente Windows, os arquivos com as extensões EXE e COM contêm comandos que o computador pode executar. Em outras palavras, esses arquivos de programas dão ao computador, normalmente uma após a outra, instruções específicas para que ele realize determinada tarefa. Para criar programas, usa-se uma linguagem de programação, dita de alto nível, como o C++, e especifica-se as instruções que o computador deve executar. Em seguida, por meio de um programa especial chamado compilador, converte-se as instruções de programação na linguagem de máquina (binária) que o computador compreende. Nas seções a seguir, serão apresentados os elementos constituintes da linguagem de programação C++ e a sua sintaxe básica. 2 Tipos de Dados 2.1 Definição de Dados São informações, que podem ser números ou caracteres, com os quais o programa opera. 2.2 Definição de Variáveis Representam localizações de memória onde são armazenados valores que podem ser modificados pelo programa. 2.3 Variáveis em C++ 2.3.1 Nome das variáveis Pode conter letras, números e caractere de sublinhado. Porém : 1º caractere NÃO pode ser número ex.: br_01 _br01 01_br (NÃO é permitido) letras maiúsculas é diferente de letras minúsculas (convenção : minúsculas) ex.: A1 é diferente de a1 não podemos usar palavras reservadas ex.: int, float, if, else, etc...

Upload: robinhoct

Post on 22-May-2015

7.259 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: C++   apostila c++ nivel basico

Francisco Adell Péricas 1

C++ – Programação Básica

1 Introdução Os programas de computador, ou softwares – processadores de texto, planilhas, navegadores Internet, e até mesmo o sistema operacional Windows – são arquivos cujas instruções dizem ao computador como realizar determinadas tarefas. No ambiente Windows, os arquivos com as extensões EXE e COM contêm comandos que o computador pode executar. Em outras palavras, esses arquivos de programas dão ao computador, normalmente uma após a outra, instruções específicas para que ele realize determinada tarefa. Para criar programas, usa-se uma linguagem de programação, dita de alto nível, como o C++, e especifica-se as instruções que o computador deve executar. Em seguida, por meio de um programa especial chamado compilador, converte-se as instruções de programação na linguagem de máquina (binária) que o computador compreende. Nas seções a seguir, serão apresentados os elementos constituintes da linguagem de programação C++ e a sua sintaxe básica.

2 Tipos de Dados

2.1 Definição de Dados

São informações, que podem ser números ou caracteres, com os quais o programa opera.

2.2 Definição de Variáveis

Representam localizações de memória onde são armazenados valores que podem ser modificados pelo programa.

2.3 Variáveis em C++

2.3.1 Nome das variáveis Pode conter letras, números e caractere de sublinhado. Porém :

• 1º caractere NÃO pode ser número ex.: br_01 _br01 01_br (NÃO é permitido)

• letras maiúsculas é diferente de letras minúsculas (convenção : minúsculas) ex.: A1 é diferente de a1

• não podemos usar palavras reservadas ex.: int, float, if, else, etc...

Page 2: C++   apostila c++ nivel basico

Francisco Adell Péricas 2

2.3.2 Tipos Básicos char apenas 1 caractere alfanumérico (ex.: ´f´) 1 byte short nºs inteiros (ex.: 123) 2 bytes int nºs inteiros (ex.: 1245234) 4 bytes long nºs inteiros (ex.: 1245234) 4 bytes float nºs fracionários com precisão simples (ex.: 7.5) 4 bytes doub le nºs fracionários com precisão dupla (ex.: 3.4E100) 8 bytes

2.3.3 Declaração de Variáveis Sintaxe:

tipo nome_variável; Ex.: int x, y; float f;

2.3.4 Inicialização de Variáveis Sintaxe:

nome_variável = valor; Ex.: x = y = 10; f = 3.5;

2.3.5 Declaração e Inicialização de Variáveis Sintaxe:

tipo nome_variável = valor; Ex.: int x =10, y =10; float f = 3.5;

2.4 Definição de Constantes Representam localizações na memória, de dados que não podem ser alterados durante a execução do programa.

2.5 Constantes em C++

2.5.1 Nome das variáveis Por convenção sempre MAIÚSCULAS

Page 3: C++   apostila c++ nivel basico

Francisco Adell Péricas 3

2.5.2 Declaração e Inicialização de Constantes Sintaxe:

#define NOME_CONSTANTE valor Ex.: #define PI 3.14159 #define MAX 500

3 Operadores

3.1 Operador de Atribu ição ( = ) Sintaxe:

nome_var iável = expressão; Ex.:

y = 2; // atribui o valor 2 a y x = 4 * y + 3; // atribui o valor da expressão a x

CUIDADO: Conversão de Tipos em Atribuições Regra: O valor do lado direito de uma atribuição é convertido no tipo do lado esquerdo. ex.:

int x; float f; x = f = 3.5; // resulta em f = 3.5 e x = 3 f = x = 3.5; // resulta em f = 3.0 e x = 3

3.2 Operadores Aritméticos

3.2.1 Operadores Unários (atuam sobre apenas um operando)

- (menos unár io) multiplica o operando por (-1) ++ (incremento) incrementa o operando em uma unidade -- (decremento) decrementa o operando em uma unidade

Ex.: x = 2;

y = 4*(x) + 3; Ao substituirmos (x) pela expressão, teremos: ++x incrementa o valor de x antes de usá-lo (portanto usaremos x = 3 e teremos y = 15) x++ incrementa o valor de x depois de usá-lo (portanto usaremos x = 2 e teremos y = 11) --x decrementa o valor de x antes de usá-lo (portanto usaremos x = 1 e teremos y = 7) x-- decrementa o valor de .x depois de usá-lo (portanto usaremos x = 2 e teremos y = 11)

Page 4: C++   apostila c++ nivel basico

Francisco Adell Péricas 4

3.2.2 Operadores Binários (atuam sobre dois operandos)

+ adição - subtração * multiplicação / divisão % mod - fornece o resto da divisão de 2 nºs inteiros & E binário | OU binário ! NÃO binário

Ex.: 10 % 2 = 0

11 % 2 = 1

3.2.3 Precedência

1. ++, -- 2. *, /, % 3. +, -

Para alterar a precedência basta colocar a expressão entre parênteses. Quando dois operandos têm o mesmo nível de precedência, eles são avaliados da esquerda para a direita. Ex.:

(x + y) / 2 // será feito 1º a soma e depois a divisão x / y * 2 // será feito 1º a divisão e depois a multiplicação

3.3 Operadores de Atribu ição Compostos Sintaxe:

expressão_1 operador = expressão_2 é equivalente a

expressão_1 = expressão_1 operador expressão_2 Ex.:

x = x * 5 x *= 5 a = a + 1 a += 1 ou a++ x = x / b x /= b y = y – 1 y -= 1 ou --y

3.4 Operadores Relacionais

3.4.1 Operadores São usados para comparar expressões. Resultam em falso ou verdadeiro.

== igual – comparação: compara se 2 valores são iguais > maior que < menor que >= maior ou igual

Page 5: C++   apostila c++ nivel basico

Francisco Adell Péricas 5

<= menor ou igual != diferente

Ex.:

4 == 3 // resulta em falso 3 > 2 // resulta em verdadeiro

3.4.2 Precedência

1. <, <=, >, >= 2. != , ==

3.5 Operadores Lóg icos Permitem relacionar duas ou mais expressões.

&& e - resulta em verdadeiro se ambas expressões forem verdadeiras | | ou - resulta em verdadeiro se pelo menos uma expressão for verdadeira ! não - resulta em verdadeiro se a expressão for falsa

Ex.:

(5 > 2) && (3 != 2) // resulta em verdadeiro – ambos verdadeiros (5 < 2) && (3 != 2) // resulta em falso – apenas 1 verdadeiro (5 < 2) && (3 == 2) // resulta em falso – ambos falsos (3 >= 2) | | (4 != 2) // resulta em verdadeiro – ambos verdadeiros (3 >= 2) | | (4 == 2) // resulta em verdadeiro – pelo menos 1 verdadeiro (3 <= 2) | | (4 == 2) // resulta em falso – ambos falsos !(4 == 2) // resulta em verdadeiro – pois a expressão é falsa !(4 != 2) // resulta em falso – pois a expressão é verdadeira

4 Controle de Fluxo

4.1 Instrução if...else Executa condicionalmente um grupo de instruções, dependendo do valor de uma expressão. Fluxograma:

V

F

condição?

comando 1 comando 2

...

F V

condição?

comando 1 comando 2

...

comando 1 comando 2

...

Page 6: C++   apostila c++ nivel basico

Francisco Adell Péricas 6

Sintaxes:

if (condição) {

[comandos] }

if (condição) {

[comandos] } else {

[comandos] } Comentários:

• Executando um bloco if, a condição é testada. Se a condição for verdadeira, as instruções seguintes são executadas. Se a condição for falsa, a condição else (se houver) será executada.

5 Estruturas de Repetição

5.1 Instrução for Repete um grupo de instruções um número específico de vezes. Fluxograma:

inic.

incr. condição?

V

F

comando 1 comando 2

...

Sintaxe:

for ([inicialização]; [condição]; [incremento]) {

[comandos] [break;] [comandos]

} Comentários:

• Qualquer número de instruções break pode ser posicionado em qualquer lugar do loop como meio alternativo de sair.

Page 7: C++   apostila c++ nivel basico

Francisco Adell Péricas 7

• Você pode aninhar loops for posicionando um dentro do outro. Dê um nome de variável exclusivo como seu contador a cada loop. A construção a seguir é correta:

for (I = 1; I <= 10; I++) {

for (J = 1; J <= 10; J++) {

for (K = 1; K <= 10; K++) { ... }

} }

5.2 Instrução while Executa uma série de instruções desde que uma determinada condição seja verdadeira. Fluxograma:

V

F

condição?

comando 1 comando 2

...

Sintaxe:

while (condição) {

[comandos] }

Comentários:

• Se a condição for verdadeira, todos os comandos serão executados. Então o controle retorna para a instrução while e a condição é novamente verificada. Se a condição ainda for verdadeira, o processo é repetido. Se não for verdadeira, a execução continua com a instrução seguinte ao bloco de comandos.

• Os loops while podem ser aninhados a qualquer nível. Dica: A instrução while fornece um meio mais estruturado e flexível para executar um loop.

5.3 Instrução do...while

Page 8: C++   apostila c++ nivel basico

Francisco Adell Péricas 8

Repete um bloco de instruções enquanto uma condição é verdadeira ou até que ela se torne verdadeira. Fluxograma:

V

F

condição?

comando 1 comando 2

...

Sintaxe:

do {

[comandos] [break;] [comandos]

} while (condição) Comentários:

• Qualquer número de instruções break pode ser posicionado em qualquer lugar em do…while como alternativa para sair de um do…while.

• Quando usada dentro de instruções do…while aninhadas, break transfere o controle para o loop que está aninhado em um nível acima do loop onde ocorre break.

6 Funções

6.1 Funções da Biblioteca Há uma lista imensa de funções que estão disponíveis a partir das bibliotecas dos compiladores. Para utilizar-se delas é preciso acessar a ajuda destas bibliotecas ou guias de referência de C++ para se ter a forma de utilização das funções e classes disponíveis. A seguir será apresentado as principais funções de entrada e saída de dados utilizadas no C++.

6.1.1 cout Esta função imprime dados na tela e o arquivo de cabeçalho a ser incluído: iostream.h Ex.:

float x = 1.25; int y = 1;

Page 9: C++   apostila c++ nivel basico

Francisco Adell Péricas 9

char z = ‘a’ ; cout << “FLOAT = “ << x << “ INT = ” << y << “ CHAR = “ << z << endl;

Saída na tela:

FLOAT = 1.25 INT = 1 CHAR = a O manipulador endl é util izado para passar o cursor para a próxima linha. O manipulador flush é utilizado para esvaziar o buffer de saída, apresentando o seu conteúdo imediatamente. O manipulador setprecision(n) define um determinado número de dígitos de precisão para ponto flutuante. Para formatar as saídas, util izam-se alguns métodos adicionais, os quais estão disponíveis no arquivo de cabeçalho iomanip.h

cout.width(10); // define uma largura de 10 caracteres cout.width(0); // retorna a saída para largura padrão cout.fil l(‘0’) ; // preenche os campos de uma largura de impressão com 0s

6.1.2 cin Esta função lê dados do teclado e o arquivo de cabeçalho a ser incluído: iostream.h Ex.:

float x; int y; char z; cin >> x >> y >> z;

Entrada de dados da tela:

1.25 1 a Para ler linhas inteiras pelo teclado, utiliza-se o método adiciona cin.getline( buff, len, delim), o qual está disponível no arquivo de cabeçalho iomanip.h

cin.getline(buffer, 25); // lê uma linha de até 25 caracteres do teclado até ENTER cin.getline(buffer, 20, ‘x’) ; // lê uma linha de até 20 caracteres do teclado até ‘x’

6.1.3 ofstream Esta classe abre um arquivo para escrita e o arquivo de cabeçalho a ser incluído: fstream.h Ex.:

float x = 1.25; int y = 1; ofstream tfile(“arq.txt” ); tfile << “FLOAT = “ << x << “ INT = ” << y << endl;

Cria o arquivo arq.txt no diretório corrente com o seguinte conteúdo:

FLOAT = 1.25 INT = 1

Page 10: C++   apostila c++ nivel basico

Francisco Adell Péricas 10

6.1.4 ifstream Esta classe abre um arquivo para leitura e o arquivo de cabeçalho a ser incluído: fstream.h Ex.:

char buff[ 250]; istream tfile(“arq.txt” ); while (!tfile.eof()) {

tfile.getline(buff, 250); cout << buff << endl;

} Lê o arquivo arq.txt do diretório corrente e apresenta-o na tela.

FLOAT = 1.25 INT = 1

6.2 Funções definidas pelo usuário É uma seção de código independente e autônoma, escrita para desempenhar uma tarefa específica. Deve conter protótipo e definição da função.

6.2.1 Protótipo da função Sintaxe:

tipo_retorno nome_função(tipo_arg nome1, ...., tipo_arg nomen);

• tipo_retorno – tipo de variável que a função retornará. Pode ser char, int, float, double e void (se não retornar nada).

• nome_função – descreve o que a função faz. • tipo_arg – tipo e nome das variáveis que serão passados para a função. Pode

ser char, int, float. • nomen – double, void.

Sempre termina com; (ponto e vírgula) e vem nas componentes iniciais.

6.2.2 Definição da função Sintaxe:

tipo_retorno nome_função(tipo_arg nome1, ...., tipo_arg nomen) { comando s; }

• tipo_retorno – tipo de variável que a função retornará. Pode ser char, int, float,

double e void (se não retornar nada). • nome_função – descreve o que a função faz. • tipo_arg – tipo e nome das variáveis que serão passados para a função. Pode

ser char, int, float.

Page 11: C++   apostila c++ nivel basico

Francisco Adell Péricas 11

• nomen – double, void. É a função propriamente dita. A 1ª linha é idêntica ao protótipo com exceção do ; (ponto e vírgula). O corpo da função deve estar entre { } (chaves).

7 Matrizes

7.1 Vetores Vetores nada mais são que matrizes unidimensionais. Vetores são uma estrutura de dados muito utilizada. É importante notar que vetores, matrizes bidimensionais e matrizes de qualquer dimensão são caracterizadas por terem todos os elementos pertencentes ao mesmo tipo de dado. Para se declarar um vetor pode-se utilizar a seguinte forma geral:

tipo_da_variável nome_da_variável [tamanho]; Quando o C++ vê uma declaração como esta ele reserva um espaço na memória suficientemente grande para armazenar o número de células especificadas em tamanho. Por exemplo, declarando:

float exemplo [20]; O C++ irá reservar 4x20=80 bytes. Estes bytes são reservados de maneira contígua. Na linguagem C a numeração começa sempre em zero. Isto significa que, no exemplo acima, os dados serão indexados de 0 a 19. Para acessá-los escreve-se: exemplo[0] exemplo[1] . . . exemplo[19] Mas ninguém o impede de escrever: exemplo[30] exemplo[103] Por quê? Porque o C++ não verifica se o índice utilizado está dentro dos limites válidos. Este é um cuidado que deve-se tomar. Se o programador não tiver atenção com os limites de validade para os índices ele corre o risco de ter variáveis sobre-escritas ou de ver o computador travar.

7.2 Matrizes bidimensionais A forma geral da declaração de uma matriz bidimensional é muito parecida com a declaração de um vetor:

tipo_da_variável nome_da_variável [altura][largura];

Page 12: C++   apostila c++ nivel basico

Francisco Adell Péricas 12

É muito importante ressaltar que, nesta estrutura, o índice da esquerda indexa as linhas e o da direita indexa as colunas. Quando vamos preencher ou ler uma matriz no C++ o índice mais à direita varia mais rapidamente que o índice à esquerda. Mais uma vez é bom lembrar que, na linguagem C++, os índices variam de zero ao valor declarado, menos um; mas o C++ não verifica isto para o usuário. Manter os índices na faixa permitida é tarefa do programador.

7.3 Matrizes multidimensionais O uso de matrizes multidimensionais na linguagem C++ é simples. Sua forma geral é:

tipo_da_variável nome_da_variável [tam1][tam2] ... [tamN]; Uma matriz N-dimensional funciona basicamente como outros tipos de matrizes. Basta lembrar que o índice que varia mais rapidamente é o índice mais à direita.

7.4 Inicialização de Matrizes Podemos inicializar matrizes, assim como podemos inicializar variáveis. A forma geral de uma matriz como inicialização é:

tipo_da_variável nome_da_variável [tam1][tam2] ... [tamN] = {lista_de_valores}; A lista de valores é composta por valores (do mesmo tipo da variável) separados por vírgula. Os valores devem ser dados na ordem em que serão colocados na matriz. Abaixo vemos alguns exemplos de inicializações de matrizes: float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 }; int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; O primeiro demonstra inicialização de vetores. O segundo exemplo demonstra a inicialização de matrizes multidimensionais, onde matrx está sendo inicializada com 1, 2, 3 e 4 em sua primeira linha, 5, 6, 7 e 8 na segunda linha e 9, 10, 11 e 12 na última linha. Repare que devemos incluir o ; no final da inicialização.

7.5 Inicialização sem especificação de tamanho Podemos, em alguns casos, inicializar matrizes das quais não sabemos o tamanho a priori. O compilador C++ vai, neste caso verificar o tamanho do que você declarou e considerar como sendo o tamanho da matriz. Isto ocorre na hora da compilação e não poderá mais ser mudado durante o programa, sendo muito útil, por exemplo, quando vamos inicializar uma matriz e não queremos contar quantos elementos serão necessários. Por exemplo: int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 }; Repare que o artifício para realizar a inicialização sem especificação de tamanho é não especificar o tamanho! No exemplo o valor não especificado será 5.

Page 13: C++   apostila c++ nivel basico

Francisco Adell Péricas 13

8 Strings Strings são vetores de caracteres (chars). As strings são o uso mais comum para os vetores. Devemos apenas ficar atentos para o fato de que as strings têm o seu último elemento como um '\0'. A declaração geral para uma string é:

char nome_da_string [tamanho]; Devemos lembrar que o tamanho da string deve incluir o '\0' final. A biblioteca padrão do C++ possui diversas funções que manipulam strings. Estas funções são úteis pois não se pode, por exemplo, igualar duas strings desta forma: string1=string2; // NÃO faça isto Fazer isto é um desastre. As strings devem ser igualadas elemento a elemento. A seguir serão apresentadas algumas funções básicas para manipulação de strings. As funções apresentadas nestas seções estão no arquivo cabeçalho string.h.

8.1 Funções de Manipulação de Strings

8.1.1 strcpy Sua forma geral é:

strcpy (string_destino,string_origem); A função strcpy() copia a string-origem para a string- destino.

8.1.2 strcat A função strcat() tem a seguinte forma geral:

strcat (string_destino,string_origem); A string de origem permanecerá inalterada e será anexada ao fim da string de destino.

8.1.3 strlen Sua forma geral é:

strlen (string); A função strlen() retorna o comprimento da string fornecida. O terminador nulo não é contado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser um a mais que o inteiro retornado por strlen().

8.1.4 strcmp

Page 14: C++   apostila c++ nivel basico

Francisco Adell Péricas 14

Sua forma geral é:

strcmp (string1,string2); A função strcmp() compara a string 1 com a string 2. Se as duas forem idênticas a função retorna zero. Se elas forem diferentes a função retorna não-zero.

8.2 Matrizes de strings Matrizes de strings são matrizes bidimensionais. Uma string é na realidade um vetor. Portanto um vetor de strings será uma lista de vetores. Esta estrutura é uma matriz bidimensional de caracteres. Podemos ver a forma geral de uma matriz de strings como sendo:

char nome_da_variável [num_de_strings][compr_das_strings]; Para acessar uma string individual é só usar apenas o primeiro índice:

nome_da_variável [índice]

8.3 Inicialização de Strings Podemos inicializar strings, assim como podemos inicializar matrizes. Abaixo vemos alguns exemplos de inicializações de strings: char str [10] = { 'J', 'o', 'a', 'o', '\0' }; char str [10] = "Joao"; char str_vect [3][10] = { "Joao", "Maria", "Jose" }; No primeiro exemplo vê-se como inicializar uma string e, no segundo exemplo, um modo mais compacto de inicializar uma string. O terceiro exemplo combina as duas técnicas para inicializar um vetor de strings. Repare que devemos incluir o ; no final da inicialização.

8.4 Inicialização sem especificação de tamanho Da mesma forma que ocorre com matrizes, podemos, em alguns casos, inicializar strings das quais não sabemos o tamanho a priori. O compilador C++ vai, neste caso verificar o tamanho do que você declarou e considerar como sendo o tamanho da matriz. Isto ocorre na hora da compilação e não poderá mais ser mudado durante o programa, sendo muito útil, por exemplo, quando vamos inicializar uma string e não queremos contar quantos caracteres serão necessários. Por exemplo: char mess [] = "Linguagem C: flexibilidade e poder."; No exemplo, a string mess terá tamanho 36. Repare que o artifício para realizar a inicialização sem especificação de tamanho é não especificar o tamanho!

Page 15: C++   apostila c++ nivel basico

Francisco Adell Péricas 15

9 Estrutura de um Programa em C++ Um programa em C++ é composto pelos seguintes elementos:

• Cabeçalho : contém arquivos de cabeçalho, declaração de constantes, protótipos de funções e de classes e variáveis globais

• Funções: contém variáveis locais e definições das funções • Função main( ): contém variáveis locais e instruções do programa