SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
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...

Francisco Adell Péricas                                                            1
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
double       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

Francisco Adell Péricas                                                     2
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 Atribuição ( = )

Sintaxe:
        nome_variá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ário)           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)



Francisco Adell Péricas                                                                       3
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 Atribuiçã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

Francisco Adell Péricas                                                          4
<=       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ógicos

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:



                  condição?                                       condição?
                                    V                      F                     V

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




Francisco Adell Péricas                                                                            5
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.
                                                   condição?
                                          incr.                F

                                                    V

                                             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.




Francisco Adell Péricas                                                       6
•    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:




                                    condição?
                                                    V

                                        F
                                                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




Francisco Adell Péricas                                                            7
Repete um bloco de instruções enquanto uma condição é verdadeira ou até que ela
se torne verdadeira.

Fluxograma:



                                         comando 1
                                         comando 2
                                            ...



                                                        V
                                         condição?


                                              F




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;

Francisco Adell Péricas                                                                 8
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 é utilizado 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, utilizam-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.fill(‘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


Francisco Adell Péricas                                                                            9
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)
       {
       comandos;
       }

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

Francisco Adell Péricas                                                                       10
•    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];


Francisco Adell Péricas                                                             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++ 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.




Francisco Adell Péricas                                                              12
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



Francisco Adell Péricas                                                            13
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!




Francisco Adell Péricas                                                               14
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




Francisco Adell Péricas                                                15

Contenu connexe

Tendances

Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoessamuelthiago
 
Perl From Vi, Part I
Perl From Vi, Part IPerl From Vi, Part I
Perl From Vi, Part ILuciano Rocha
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2michellobo
 
Etapa1%282%29
Etapa1%282%29Etapa1%282%29
Etapa1%282%29luisc881
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaBonoBee
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaAdriano Teixeira de Souza
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Elaine Cecília Gatto
 

Tendances (19)

Aula3
Aula3Aula3
Aula3
 
Jemcalculoi1
Jemcalculoi1Jemcalculoi1
Jemcalculoi1
 
Fundamentos de C#
Fundamentos de C#Fundamentos de C#
Fundamentos de C#
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Pged 01
Pged 01Pged 01
Pged 01
 
Perl From Vi, Part I
Perl From Vi, Part IPerl From Vi, Part I
Perl From Vi, Part I
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
 
Etapa1%282%29
Etapa1%282%29Etapa1%282%29
Etapa1%282%29
 
Simulador Funcional
Simulador FuncionalSimulador Funcional
Simulador Funcional
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memória
 
Estrutura de Dados - Ponteiros
Estrutura de Dados - PonteirosEstrutura de Dados - Ponteiros
Estrutura de Dados - Ponteiros
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1
 

En vedette

Manual c++
Manual c++Manual c++
Manual c++slent
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Leandro Rezende
 
Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++Grupo A
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portuguesLaura
 
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...Flávio Freitas
 
Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Ivan Ricarte
 
Apostila html para-iniciantes
Apostila html para-iniciantesApostila html para-iniciantes
Apostila html para-iniciantesJeferson Souza
 
Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicaçõesnataferraz
 
Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13Moisés Moura
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoBernardo Fontes
 
python: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicospython: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicosAdriano Petrich
 

En vedette (20)

Apostila C++
Apostila C++ Apostila C++
Apostila C++
 
Manual c++
Manual c++Manual c++
Manual c++
 
Apostila c++ básico
Apostila c++ básicoApostila c++ básico
Apostila c++ básico
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
Fichamento word
Fichamento wordFichamento word
Fichamento word
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++Princípios e Práticas de Programação com C++
Princípios e Práticas de Programação com C++
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
 
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
Solução dos exercícios do livro Algoritmos e Estruturas de Dados dos autores ...
 
Princípios da organização de código fonte C++
Princípios da organização de código fonte C++Princípios da organização de código fonte C++
Princípios da organização de código fonte C++
 
Apostila html para-iniciantes
Apostila html para-iniciantesApostila html para-iniciantes
Apostila html para-iniciantes
 
Linguagem C 06 Funcoes
Linguagem C 06 FuncoesLinguagem C 06 Funcoes
Linguagem C 06 Funcoes
 
Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicações
 
Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13Caelum csharp-dotnet-fn13
Caelum csharp-dotnet-fn13
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Django: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazoDjango: um framework web para perfeccionistas com prazo
Django: um framework web para perfeccionistas com prazo
 
python: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicospython: Listas, deques, Dicionarios e outros monstros mitologicos
python: Listas, deques, Dicionarios e outros monstros mitologicos
 
Estruturas
EstruturasEstruturas
Estruturas
 

Similaire à C++ apostila c++ nivel basico

Similaire à C++ apostila c++ nivel basico (20)

Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Estrutura de Dados - Características da linguagem C - 2
Estrutura de Dados - Características da linguagem C - 2Estrutura de Dados - Características da linguagem C - 2
Estrutura de Dados - Características da linguagem C - 2
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Aula de C e C++
Aula de C e C++Aula de C e C++
Aula de C e C++
 
3ª aula php
3ª aula php3ª aula php
3ª aula php
 
Formulas excel para facilitar o dia a dia
Formulas excel para facilitar o dia a diaFormulas excel para facilitar o dia a dia
Formulas excel para facilitar o dia a dia
 
Formulas excel
Formulas excelFormulas excel
Formulas excel
 
Aula 05 - Estrutura de Controle em PHP.pdf
Aula 05 - Estrutura de Controle em PHP.pdfAula 05 - Estrutura de Controle em PHP.pdf
Aula 05 - Estrutura de Controle em PHP.pdf
 
Aula 2
Aula 2Aula 2
Aula 2
 
Cap3 icc final
Cap3 icc finalCap3 icc final
Cap3 icc final
 
Tipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoTipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxo
 
Tipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoTipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxo
 
Algoritmos - capítulo 2
Algoritmos - capítulo 2Algoritmos - capítulo 2
Algoritmos - capítulo 2
 
Visualg
VisualgVisualg
Visualg
 
EstrutControleC.pdf
EstrutControleC.pdfEstrutControleC.pdf
EstrutControleC.pdf
 
Aritmética de máquina
Aritmética de máquinaAritmética de máquina
Aritmética de máquina
 
Apostilaexcel3funcao
Apostilaexcel3funcaoApostilaexcel3funcao
Apostilaexcel3funcao
 
Formulas excel
Formulas excelFormulas excel
Formulas excel
 
Formulas excel
Formulas excelFormulas excel
Formulas excel
 
Unidade7 1
Unidade7 1Unidade7 1
Unidade7 1
 

Plus de robinhoct

Redes noções basicas
Redes noções basicasRedes noções basicas
Redes noções basicasrobinhoct
 
Visual basic apostila up vb6 para vbnet
Visual basic   apostila up vb6 para vbnetVisual basic   apostila up vb6 para vbnet
Visual basic apostila up vb6 para vbnetrobinhoct
 
Sql apostila de sql
Sql   apostila de sqlSql   apostila de sql
Sql apostila de sqlrobinhoct
 
Redes redes locais
Redes   redes locaisRedes   redes locais
Redes redes locaisrobinhoct
 
Redes nocoes basicas
Redes nocoes basicasRedes nocoes basicas
Redes nocoes basicasrobinhoct
 
Redes montando pequenas redes
Redes   montando pequenas redesRedes   montando pequenas redes
Redes montando pequenas redesrobinhoct
 
Redes endereços ip
Redes   endereços ipRedes   endereços ip
Redes endereços iprobinhoct
 
Redes cabeamento estruturado
Redes   cabeamento estruturadoRedes   cabeamento estruturado
Redes cabeamento estruturadorobinhoct
 
Redes apotila wireless passo a passo
Redes   apotila wireless passo a passoRedes   apotila wireless passo a passo
Redes apotila wireless passo a passorobinhoct
 
Poo apostila a programacao orientada
Poo   apostila a programacao orientadaPoo   apostila a programacao orientada
Poo apostila a programacao orientadarobinhoct
 
Php curso de php com my sql
Php   curso de php com my sqlPhp   curso de php com my sql
Php curso de php com my sqlrobinhoct
 
Engenharia de software apostila analise de requisitos ii
Engenharia de software   apostila analise de requisitos iiEngenharia de software   apostila analise de requisitos ii
Engenharia de software apostila analise de requisitos iirobinhoct
 
Engenharia de software apostila analise de requisitos i
Engenharia de software   apostila analise de requisitos iEngenharia de software   apostila analise de requisitos i
Engenharia de software apostila analise de requisitos irobinhoct
 
Dreamweaver cs5 apostila dreamweaver cs5 apostilando.com
Dreamweaver cs5   apostila dreamweaver cs5 apostilando.comDreamweaver cs5   apostila dreamweaver cs5 apostilando.com
Dreamweaver cs5 apostila dreamweaver cs5 apostilando.comrobinhoct
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandosrobinhoct
 
Crystal reports tutorial gerando seus relatórios
Crystal reports   tutorial gerando seus relatóriosCrystal reports   tutorial gerando seus relatórios
Crystal reports tutorial gerando seus relatóriosrobinhoct
 
C++ biblia programação c com 627pág.
C++   biblia programação c com 627pág.C++   biblia programação c com 627pág.
C++ biblia programação c com 627pág.robinhoct
 
C++ apostila linguagem c++ poo
C++   apostila linguagem c++ pooC++   apostila linguagem c++ poo
C++ apostila linguagem c++ poorobinhoct
 
C++ tutorial linguagem c++ orientada a objetos
C++   tutorial linguagem c++ orientada a objetosC++   tutorial linguagem c++ orientada a objetos
C++ tutorial linguagem c++ orientada a objetosrobinhoct
 
C apostila linguagem c
C apostila linguagem cC apostila linguagem c
C apostila linguagem crobinhoct
 

Plus de robinhoct (20)

Redes noções basicas
Redes noções basicasRedes noções basicas
Redes noções basicas
 
Visual basic apostila up vb6 para vbnet
Visual basic   apostila up vb6 para vbnetVisual basic   apostila up vb6 para vbnet
Visual basic apostila up vb6 para vbnet
 
Sql apostila de sql
Sql   apostila de sqlSql   apostila de sql
Sql apostila de sql
 
Redes redes locais
Redes   redes locaisRedes   redes locais
Redes redes locais
 
Redes nocoes basicas
Redes nocoes basicasRedes nocoes basicas
Redes nocoes basicas
 
Redes montando pequenas redes
Redes   montando pequenas redesRedes   montando pequenas redes
Redes montando pequenas redes
 
Redes endereços ip
Redes   endereços ipRedes   endereços ip
Redes endereços ip
 
Redes cabeamento estruturado
Redes   cabeamento estruturadoRedes   cabeamento estruturado
Redes cabeamento estruturado
 
Redes apotila wireless passo a passo
Redes   apotila wireless passo a passoRedes   apotila wireless passo a passo
Redes apotila wireless passo a passo
 
Poo apostila a programacao orientada
Poo   apostila a programacao orientadaPoo   apostila a programacao orientada
Poo apostila a programacao orientada
 
Php curso de php com my sql
Php   curso de php com my sqlPhp   curso de php com my sql
Php curso de php com my sql
 
Engenharia de software apostila analise de requisitos ii
Engenharia de software   apostila analise de requisitos iiEngenharia de software   apostila analise de requisitos ii
Engenharia de software apostila analise de requisitos ii
 
Engenharia de software apostila analise de requisitos i
Engenharia de software   apostila analise de requisitos iEngenharia de software   apostila analise de requisitos i
Engenharia de software apostila analise de requisitos i
 
Dreamweaver cs5 apostila dreamweaver cs5 apostilando.com
Dreamweaver cs5   apostila dreamweaver cs5 apostilando.comDreamweaver cs5   apostila dreamweaver cs5 apostilando.com
Dreamweaver cs5 apostila dreamweaver cs5 apostilando.com
 
Sql apostila construcao de comandos
Sql   apostila construcao de comandosSql   apostila construcao de comandos
Sql apostila construcao de comandos
 
Crystal reports tutorial gerando seus relatórios
Crystal reports   tutorial gerando seus relatóriosCrystal reports   tutorial gerando seus relatórios
Crystal reports tutorial gerando seus relatórios
 
C++ biblia programação c com 627pág.
C++   biblia programação c com 627pág.C++   biblia programação c com 627pág.
C++ biblia programação c com 627pág.
 
C++ apostila linguagem c++ poo
C++   apostila linguagem c++ pooC++   apostila linguagem c++ poo
C++ apostila linguagem c++ poo
 
C++ tutorial linguagem c++ orientada a objetos
C++   tutorial linguagem c++ orientada a objetosC++   tutorial linguagem c++ orientada a objetos
C++ tutorial linguagem c++ orientada a objetos
 
C apostila linguagem c
C apostila linguagem cC apostila linguagem c
C apostila linguagem c
 

C++ apostila c++ nivel basico

  • 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... Francisco Adell Péricas 1
  • 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 double 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 Francisco Adell Péricas 2
  • 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 Atribuição ( = ) Sintaxe: nome_variá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ário) 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) Francisco Adell Péricas 3
  • 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 Atribuiçã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 Francisco Adell Péricas 4
  • 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ógicos 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: condição? condição? V F V F comando 1 comando 1 comando 1 comando 2 comando 2 comando 2 ... ... ... Francisco Adell Péricas 5
  • 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. condição? incr. F V 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. Francisco Adell Péricas 6
  • 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: condição? V F 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 Francisco Adell Péricas 7
  • 8. Repete um bloco de instruções enquanto uma condição é verdadeira ou até que ela se torne verdadeira. Fluxograma: comando 1 comando 2 ... V condição? F 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; Francisco Adell Péricas 8
  • 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 é utilizado 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, utilizam-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.fill(‘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 Francisco Adell Péricas 9
  • 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) { comandos; } • 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. Francisco Adell Péricas 10
  • 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]; Francisco Adell Péricas 11
  • 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. Francisco Adell Péricas 12
  • 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 Francisco Adell Péricas 13
  • 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! Francisco Adell Péricas 14
  • 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 Francisco Adell Péricas 15