Você está na página 1de 15

C++ Programao Bsica

1 Introduo

Os programas de computador, ou softwares processadores de texto, planilhas,


navegadores Internet, e at mesmo o sistema operacional Windows so arquivos
cujas instrues dizem ao computador como realizar determinadas tarefas.

No ambiente Windows, os arquivos com as extenses EXE e COM contm comandos


que o computador pode executar. Em outras palavras, esses arquivos de programas
do ao computador, normalmente uma aps a outra, instrues especficas para que
ele realize determinada tarefa.

Para criar programas, usa-se uma linguagem de programao, dita de alto nvel, como
o C++, e especifica-se as instrues que o computador deve executar. Em seguida,
por meio de um programa especial chamado compilador, converte-se as instrues de
programao na linguagem de mquina (binria) que o computador compreende.

Nas sees a seguir, sero apresentados os elementos constituintes da linguagem de


programao C++ e a sua sintaxe bsica.

2 Tipos de Dados

2.1 Definio de Dados

So informaes, que podem ser nmeros ou caracteres, com os quais o programa


opera.

2.2 Definio de Variveis

Representam localizaes de memria onde so armazenados valores que podem ser


modificados pelo programa.

2.3 Variveis em C++

2.3.1 Nome das variveis

Pode conter letras, nmeros e caractere de sublinhado. Porm :


1 caractere NO pode ser nmero
ex.: br_01
_br01
01_br (NO permitido)
letras maisculas diferente de letras minsculas (conveno : minsculas)
ex.: A1 diferente de a1
no podemos usar palavras reservadas
ex.: int, float, if, else, etc...

Francisco Adell Pricas 1


2.3.2 Tipos Bsicos

char apenas 1 caractere alfanumrico (ex.: f) 1 byte


short ns inteiros (ex.: 123) 2 bytes
int ns inteiros (ex.: 1245234) 4 bytes
long ns inteiros (ex.: 1245234) 4 bytes
float ns fracionrios com preciso simples (ex.: 7.5) 4 bytes
double ns fracionrios com preciso dupla (ex.: 3.4E100) 8 bytes

2.3.3 Declarao de Variveis

Sintaxe:
tipo nome_varivel;

Ex.:
int x, y;
float f;

2.3.4 Inicializao de Variveis

Sintaxe:
nome_varivel = valor;

Ex.:
x = y = 10;
f = 3.5;

2.3.5 Declarao e Inicializao de Variveis

Sintaxe:
tipo nome_varivel = valor;

Ex.:
int x =10, y =10;
float f = 3.5;

2.4 Definio de Constantes

Representam localizaes na memria, de dados que no podem ser alterados


durante a execuo do programa.

2.5 Constantes em C++

2.5.1 Nome das variveis

Por conveno sempre MAISCULAS

Francisco Adell Pricas 2


2.5.2 Declarao e Inicializao de Constantes

Sintaxe:
#define NOME_CONSTANTE valor

Ex.:
#define PI 3.14159
#define MAX 500

3 Operadores

3.1 Operador de Atribuio ( = )

Sintaxe:
nome_varivel = expresso;

Ex.:
y = 2; // atribui o valor 2 a y
x = 4 * y + 3; // atribui o valor da expresso a x

CUIDADO: Converso de Tipos em Atribuies

Regra: O valor do lado direito de uma atribuio 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 Aritmticos

3.2.1 Operadores Unrios (atuam sobre apenas um operando)

- (menos unrio) 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 expresso, 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)

Francisco Adell Pricas 3


3.2.2 Operadores Binrios (atuam sobre dois operandos)

+ adio
- subtrao
* multiplicao
/ diviso
% mod - fornece o resto da diviso de 2 ns inteiros
& E binrio
| OU binrio
! NO binrio

Ex.: 10 % 2 = 0
11 % 2 = 1

3.2.3 Precedncia

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

Para alterar a precedncia basta colocar a expresso entre parnteses. Quando dois
operandos tm o mesmo nvel de precedncia, eles so avaliados da esquerda para a
direita.

Ex.:
(x + y) / 2 // ser feito 1 a soma e depois a diviso
x/y* 2 // ser feito 1 a diviso e depois a multiplicao

3.3 Operadores de Atribuio Compostos

Sintaxe:
expresso_1 operador = expresso_2
equivalente a
expresso_1 = expresso_1 operador expresso_2

Ex.:
x=x*5 x *= 5
a =a +1 a += 1 ou a++
x=x/b x /= b
y=y1 y -= 1 ou --y

3.4 Operadores Relacionais

3.4.1 Operadores

So usados para comparar expresses. Resultam em falso ou verdadeiro.

== igual comparao: compara se 2 valores so iguais


> maior que
< menor que
>= maior ou igual

Francisco Adell Pricas 4


<= menor ou igual
!= diferente

Ex.:
4 == 3 // resulta em falso
3>2 // resulta em verdadeiro

3.4.2 Precedncia

1. <, <=, >, >=


2. != , ==

3.5 Operadores Lgicos

Permitem relacionar duas ou mais expresses.

&& e - resulta em verdadeiro se ambas expresses forem verdadeiras


|| ou - resulta em verdadeiro se pelo menos uma expresso for verdadeira
! no - resulta em verdadeiro se a expresso 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 expresso falsa
!(4 != 2) // resulta em falso pois a expresso verdadeira

4 Controle de Fluxo

4.1 Instruo if...else

Executa condicionalmente um grupo de instrues, dependendo do valor de uma


expresso.

Fluxograma:

condio? condio?
V F V

F
comando 1 comando 1 comando 1
comando 2 comando 2 comando 2
... ... ...

Francisco Adell Pricas 5


Sintaxes:
if (condio)
{
[comandos]
}

if (condio)
{
[comandos]
}
else
{
[comandos]
}

Comentrios:
Executando um bloco if, a condio testada. Se a condio for verdadeira,
as instrues seguintes so executadas. Se a condio for falsa, a condio
else (se houver) ser executada.

5 Estruturas de Repetio

5.1 Instruo for

Repete um grupo de instrues um nmero especfico de vezes.

Fluxograma:

inic.
condio?
incr. F

comando 1
comando 2
...

Sintaxe:
for ([inicializao]; [condio]; [incremento])
{
[comandos]
[break;]
[comandos]
}

Comentrios:
Qualquer nmero de instrues break pode ser posicionado em qualquer lugar
do loop como meio alternativo de sair.

Francisco Adell Pricas 6


Voc pode aninhar loops for posicionando um dentro do outro. D um nome de
varivel exclusivo como seu contador a cada loop. A construo a seguir
correta:

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


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

5.2 Instruo while

Executa uma srie de instrues desde que uma determinada condio seja
verdadeira.

Fluxograma:

condio?
V

F
comando 1
comando 2
...

Sintaxe:
while (condio)
{
[comandos]
}

Comentrios:
Se a condio for verdadeira, todos os comandos sero executados. Ento o
controle retorna para a instruo while e a condio novamente verificada.
Se a condio ainda for verdadeira, o processo repetido. Se no for
verdadeira, a execuo continua com a instruo seguinte ao bloco de
comandos.
Os loops while podem ser aninhados a qualquer nvel.

Dica: A instruo while fornece um meio mais estruturado e flexvel para executar um
loop.

5.3 Instruo do...while

Francisco Adell Pricas 7


Repete um bloco de instrues enquanto uma condio verdadeira ou at que ela
se torne verdadeira.

Fluxograma:

comando 1
comando 2
...

V
condio?

Sintaxe:
do
{
[comandos]
[break;]
[comandos]
} while (condio)

Comentrios:
Qualquer nmero de instrues break pode ser posicionado em qualquer lugar
em dowhile como alternativa para sair de um dowhile.
Quando usada dentro de instrues dowhile aninhadas, break transfere o
controle para o loop que est aninhado em um nvel acima do loop onde ocorre
break.

6 Funes

6.1 Funes da Biblioteca

H uma lista imensa de funes que esto disponveis a partir das bibliotecas dos
compiladores. Para utilizar-se delas preciso acessar a ajuda destas bibliotecas ou
guias de referncia de C++ para se ter a forma de utilizao das funes e classes
disponveis.

A seguir ser apresentado as principais funes de entrada e sada de dados


utilizadas no C++.

6.1.1 cout

Esta funo imprime dados na tela e o arquivo de cabealho a ser includo: iostream.h

Ex.:
float x = 1.25;
int y = 1;

Francisco Adell Pricas 8


char z = a;
cout << FLOAT = << x << INT = << y << CHAR = << z << endl;

Sada na tela:

FLOAT = 1.25 INT = 1 CHAR = a

O manipulador endl utilizado para passar o cursor para a prxima linha. O manipulador flush
utilizado para esvaziar o buffer de sada, apresentando o seu contedo imediatamente. O
manipulador setprecision(n) define um determinado nmero de dgitos de preciso para ponto
flutuante.

Para formatar as sadas, utilizam-se alguns mtodos adicionais, os quais esto disponveis no
arquivo de cabealho iomanip.h

cout.width(10); // define uma largura de 10 caracteres


cout.width(0); // retorna a sada para largura padro
cout.fill(0); // preenche os campos de uma largura de impresso com 0s

6.1.2 cin

Esta funo l dados do teclado e o arquivo de cabealho a ser includo: 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 mtodo adiciona cin.getline( buff, len, delim),
o qual est disponvel no arquivo de cabealho 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 cabealho a ser includo: 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 diretrio corrente com o seguinte contedo:

FLOAT = 1.25 INT = 1

Francisco Adell Pricas 9


6.1.4 ifstream

Esta classe abre um arquivo para leitura e o arquivo de cabealho a ser includo: 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 diretrio corrente e apresenta-o na tela.

FLOAT = 1.25 INT = 1

6.2 Funes definidas pelo usurio

uma seo de cdigo independente e autnoma, escrita para desempenhar uma tarefa
especfica. Deve conter prottipo e definio da funo.

6.2.1 Prottipo da funo

Sintaxe:
tipo_retorno nome_funo(tipo_arg nome1, ...., tipo_arg nomen);

tipo_retorno tipo de varivel que a funo retornar. Pode ser char, int, float,
double e void (se no retornar nada).
nome_funo descreve o que a funo faz.
tipo_arg tipo e nome das variveis que sero passados para a funo. Pode
ser char, int, float.
nomen double, void.

Sempre termina com; (ponto e vrgula) e vem nas componentes iniciais.

6.2.2 Definio da funo

Sintaxe:
tipo_retorno nome_funo(tipo_arg nome1, ...., tipo_arg nomen)
{
comandos;
}

tipo_retorno tipo de varivel que a funo retornar. Pode ser char, int, float,
double e void (se no retornar nada).
nome_funo descreve o que a funo faz.
tipo_arg tipo e nome das variveis que sero passados para a funo. Pode
ser char, int, float.

Francisco Adell Pricas 10


nomen double, void.

a funo propriamente dita. A 1 linha idntica ao prottipo com exceo do ;


(ponto e vrgula). O corpo da funo deve estar entre { } (chaves).

7 Matrizes

7.1 Vetores

Vetores nada mais so que matrizes unidimensionais. Vetores so uma estrutura de


dados muito utilizada. importante notar que vetores, matrizes bidimensionais e
matrizes de qualquer dimenso so 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_varivel nome_da_varivel [tamanho];

Quando o C++ v uma declarao como esta ele reserva um espao na memria
suficientemente grande para armazenar o nmero de clulas especificadas em
tamanho. Por exemplo, declarando:

float exemplo [20];

O C++ ir reservar 4x20=80 bytes. Estes bytes so reservados de maneira contgua.


Na linguagem C a numerao comea sempre em zero. Isto significa que, no exemplo
acima, os dados sero indexados de 0 a 19. Para acess-los escreve-se:

exemplo[0]
exemplo[1]
.
.
.
exemplo[19]

Mas ningum o impede de escrever:

exemplo[30]
exemplo[103]

Por qu? Porque o C++ no verifica se o ndice utilizado est dentro dos limites
vlidos. Este um cuidado que deve-se tomar. Se o programador no tiver ateno
com os limites de validade para os ndices ele corre o risco de ter variveis sobre-
escritas ou de ver o computador travar.

7.2 Matrizes bidimensionais

A forma geral da declarao de uma matriz bidimensional muito parecida com a


declarao de um vetor:

tipo_da_varivel nome_da_varivel [altura][largura];

Francisco Adell Pricas 11


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++ no verifica isto para o usurio. 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_varivel nome_da_varivel [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 Inicializao de Matrizes

Podemos inicializar matrizes, assim como podemos inicializar variveis. A forma geral
de uma matriz como inicializao :

tipo_da_varivel nome_da_varivel [tam1][tam2] ... [tamN] = {lista_de_valores};

A lista de valores composta por valores (do mesmo tipo da varivel) separados por
vrgula. Os valores devem ser dados na ordem em que sero colocados na matriz.
Abaixo vemos alguns exemplos de inicializaes 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 inicializao de vetores. O segundo exemplo demonstra a


inicializao 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 inicializao.

7.5 Inicializao sem especificao de tamanho

Podemos, em alguns casos, inicializar matrizes das quais no 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 compilao e no
poder mais ser mudado durante o programa, sendo muito til, por exemplo, quando
vamos inicializar uma matriz e no queremos contar quantos elementos sero
necessrios. Por exemplo:

int matrx [][2] = { 1,2,2,4,3,6,4,8,5,10 };

Repare que o artifcio para realizar a inicializao sem especificao de tamanho


no especificar o tamanho! No exemplo o valor no especificado ser 5.

Francisco Adell Pricas 12


8 Strings

Strings so vetores de caracteres (chars). As strings so o uso mais comum para os


vetores. Devemos apenas ficar atentos para o fato de que as strings tm o seu ltimo
elemento como um '\0'. A declarao geral para uma string :

char nome_da_string [tamanho];

Devemos lembrar que o tamanho da string deve incluir o '\0' final. A biblioteca padro
do C++ possui diversas funes que manipulam strings. Estas funes so teis pois
no se pode, por exemplo, igualar duas strings desta forma:

string1=string2; // NO faa isto

Fazer isto um desastre. As strings devem ser igualadas elemento a elemento.

A seguir sero apresentadas algumas funes bsicas para manipulao de strings.


As funes apresentadas nestas sees esto no arquivo cabealho string.h.

8.1 Funes de Manipulao de Strings

8.1.1 strcpy

Sua forma geral :

strcpy (string_destino,string_origem);

A funo strcpy() copia a string-origem para a string- destino.

8.1.2 strcat

A funo 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 funo strlen() retorna o comprimento da string fornecida. O terminador nulo no


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

Francisco Adell Pricas 13


Sua forma geral :

strcmp (string1,string2);

A funo strcmp() compara a string 1 com a string 2. Se as duas forem idnticas a


funo retorna zero. Se elas forem diferentes a funo retorna no-zero.

8.2 Matrizes de strings

Matrizes de strings so 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_varivel [num_de_strings][compr_das_strings];

Para acessar uma string individual s usar apenas o primeiro ndice:

nome_da_varivel [ndice]

8.3 Inicializao de Strings

Podemos inicializar strings, assim como podemos inicializar matrizes. Abaixo vemos
alguns exemplos de inicializaes 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
tcnicas para inicializar um vetor de strings. Repare que devemos incluir o ; no final da
inicializao.

8.4 Inicializao sem especificao de tamanho

Da mesma forma que ocorre com matrizes, podemos, em alguns casos, inicializar
strings das quais no 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 compilao e no poder mais ser mudado durante o
programa, sendo muito til, por exemplo, quando vamos inicializar uma string e no
queremos contar quantos caracteres sero necessrios. Por exemplo:

char mess [] = "Linguagem C: flexibilidade e poder.";

No exemplo, a string mess ter tamanho 36. Repare que o artifcio para realizar a
inicializao sem especificao de tamanho no especificar o tamanho!

Francisco Adell Pricas 14


9 Estrutura de um Programa em C++

Um programa em C++ composto pelos seguintes elementos:

Cabealho: contm arquivos de cabealho, declarao de constantes,


prottipos de funes e de classes e variveis globais
Funes: contm variveis locais e definies das funes
Funo main( ): contm variveis locais e instrues do programa

Francisco Adell Pricas 15