C++   apostila c++ nivel basico
Upcoming SlideShare
Loading in...5
×
 

C++ apostila c++ nivel basico

on

  • 5,715 vues

 

Statistiques

Vues

Total des vues
5,715
Vues sur SlideShare
5,715
Vues externes
0

Actions

J'aime
0
Téléchargements
253
Commentaires
0

0 Ajouts 0

No embeds

Accessibilité

Catégories

Détails de l'import

Uploaded via as Adobe PDF

Droits d'utilisation

© Tous droits réservés

Report content

Signalé comme inapproprié Signaler comme inapproprié
Signaler comme inapproprié

Indiquez la raison pour laquelle vous avez signalé cette présentation comme n'étant pas appropriée.

Annuler
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Votre message apparaîtra ici
    Processing...
Poster un commentaire
Modifier votre commentaire

C++   apostila c++ nivel basico C++ apostila c++ nivel basico Document Transcript

  • C++ – Programação Básica1 IntroduçãoOs programas de computador, ou softwares – processadores de texto, planilhas,navegadores Internet, e até mesmo o sistema operacional Windows – são arquivoscujas instruções dizem ao computador como realizar determinadas tarefas.No ambiente Windows, os arquivos com as extensões EXE e COM contêm comandosque o computador pode executar. Em outras palavras, esses arquivos de programasdão ao computador, normalmente uma após a outra, instruções específicas para queele realize determinada tarefa.Para criar programas, usa-se uma linguagem de programação, dita de alto nível, comoo 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 deprogramaçã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 deprogramação C++ e a sua sintaxe básica.2 Tipos de Dados2.1 Definição de DadosSão informações, que podem ser números ou caracteres, com os quais o programaopera.2.2 Definição de VariáveisRepresentam localizações de memória onde são armazenados valores que podem sermodificados pelo programa.2.3 Variáveis em C++2.3.1 Nome das variáveisPode 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ásicoschar apenas 1 caractere alfanumérico (ex.: ´f´) 1 byteshort nºs inteiros (ex.: 123) 2 bytesint nºs inteiros (ex.: 1245234) 4 byteslong nºs inteiros (ex.: 1245234) 4 bytesfloat nºs fracionários com precisão simples (ex.: 7.5) 4 bytesdouble nºs fracionários com precisão dupla (ex.: 3.4E100) 8 bytes2.3.3 Declaração de VariáveisSintaxe: tipo nome_variável;Ex.: int x, y; float f;2.3.4 Inicialização de VariáveisSintaxe: nome_variável = valor;Ex.: x = y = 10; f = 3.5;2.3.5 Declaração e Inicialização de VariáveisSintaxe: tipo nome_variável = valor;Ex.: int x =10, y =10; float f = 3.5;2.4 Definição de ConstantesRepresentam localizações na memória, de dados que não podem ser alteradosdurante a execução do programa.2.5 Constantes em C++2.5.1 Nome das variáveisPor convenção sempre MAIÚSCULASFrancisco Adell Péricas 2
  • 2.5.2 Declaração e Inicialização de ConstantesSintaxe: #define NOME_CONSTANTE valorEx.: #define PI 3.14159 #define MAX 5003 Operadores3.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 xCUIDADO: Conversão de Tipos em AtribuiçõesRegra: O valor do lado direito de uma atribuição é convertido no tipo do ladoesquerdo.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 = 33.2 Operadores Aritméticos3.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 unidadeEx.: 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árioEx.: 10 % 2 = 0 11 % 2 = 13.2.3 Precedência 1. ++, -- 2. *, /, % 3. +, -Para alterar a precedência basta colocar a expressão entre parênteses. Quando doisoperandos têm o mesmo nível de precedência, eles são avaliados da esquerda para adireita.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ção3.3 Operadores de Atribuição CompostosSintaxe: expressão_1 operador = expressão_2é equivalente a expressão_1 = expressão_1 operador expressão_2Ex.: x=x*5 x *= 5 a =a +1 a += 1 ou a++ x=x/b x /= b y=y–1 y -= 1 ou --y3.4 Operadores Relacionais3.4.1 OperadoresSã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 igualFrancisco Adell Péricas 4
  • <= menor ou igual != diferenteEx.: 4 == 3 // resulta em falso 3>2 // resulta em verdadeiro3.4.2 Precedência 1. <, <=, >, >= 2. != , ==3.5 Operadores LógicosPermitem 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 falsaEx.: (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 é verdadeira4 Controle de Fluxo4.1 Instrução if...elseExecuta condicionalmente um grupo de instruções, dependendo do valor de umaexpressã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ção5.1 Instrução forRepete 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 whileExecuta uma série de instruções desde que uma determinada condição sejaverdadeira.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 umloop.5.3 Instrução do...whileFrancisco Adell Péricas 7
  • Repete um bloco de instruções enquanto uma condição é verdadeira ou até que elase torne verdadeira.Fluxograma: comando 1 comando 2 ... V condição? FSintaxe: 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ções6.1 Funções da BibliotecaHá uma lista imensa de funções que estão disponíveis a partir das bibliotecas doscompiladores. Para utilizar-se delas é preciso acessar a ajuda destas bibliotecas ouguias de referência de C++ para se ter a forma de utilização das funções e classesdisponíveis.A seguir será apresentado as principais funções de entrada e saída de dadosutilizadas no C++.6.1.1 coutEsta função imprime dados na tela e o arquivo de cabeçalho a ser incluído: iostream.hEx.: 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 = aO 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. Omanipulador setprecision(n) define um determinado número de dígitos de precisão para pontoflutuante.Para formatar as saídas, utilizam-se alguns métodos adicionais, os quais estão disponíveis noarquivo 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 0s6.1.2 cinEsta função lê dados do teclado e o arquivo de cabeçalho a ser incluído: iostream.hEx.: float x; int y; char z; cin >> x >> y >> z;Entrada de dados da tela: 1.25 1 aPara 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 ofstreamEsta classe abre um arquivo para escrita e o arquivo de cabeçalho a ser incluído: fstream.hEx.: 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 = 1Francisco Adell Péricas 9
  • 6.1.4 ifstreamEsta classe abre um arquivo para leitura e o arquivo de cabeçalho a ser incluído: fstream.hEx.: 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 = 16.2 Funções definidas pelo usuárioÉ uma seção de código independente e autônoma, escrita para desempenhar uma tarefaespecífica. Deve conter protótipo e definição da função.6.2.1 Protótipo da funçãoSintaxe: 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çãoSintaxe: 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 Matrizes7.1 VetoresVetores nada mais são que matrizes unidimensionais. Vetores são uma estrutura dedados muito utilizada. É importante notar que vetores, matrizes bidimensionais ematrizes de qualquer dimensão são caracterizadas por terem todos os elementospertencentes ao mesmo tipo de dado. Para se declarar um vetor pode-se utilizar aseguinte 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óriasuficientemente grande para armazenar o número de células especificadas emtamanho. 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 exemploacima, 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 limitesválidos. Este é um cuidado que deve-se tomar. Se o programador não tiver atençãocom 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 bidimensionaisA forma geral da declaração de uma matriz bidimensional é muito parecida com adeclaraçã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 aslinhas e o da direita indexa as colunas. Quando vamos preencher ou ler uma matriz noC++ o índice mais à direita varia mais rapidamente que o índice à esquerda. Mais umavez é bom lembrar que, na linguagem C++, os índices variam de zero ao valordeclarado, menos um; mas o C++ não verifica isto para o usuário. Manter os índicesna faixa permitida é tarefa do programador.7.3 Matrizes multidimensionaisO 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. Bastalembrar que o índice que varia mais rapidamente é o índice mais à direita.7.4 Inicialização de MatrizesPodemos inicializar matrizes, assim como podemos inicializar variáveis. A forma geralde 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 porví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 ainicializaçã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 últimalinha. Repare que devemos incluir o ; no final da inicialização.7.5 Inicialização sem especificação de tamanhoPodemos, em alguns casos, inicializar matrizes das quais não sabemos o tamanho apriori. O compilador C++ vai, neste caso verificar o tamanho do que você declarou econsiderar como sendo o tamanho da matriz. Isto ocorre na hora da compilação e nãopoderá mais ser mudado durante o programa, sendo muito útil, por exemplo, quandovamos inicializar uma matriz e não queremos contar quantos elementos serãonecessá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 StringsStrings são vetores de caracteres (chars). As strings são o uso mais comum para osvetores. Devemos apenas ficar atentos para o fato de que as strings têm o seu últimoelemento 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ãodo C++ possui diversas funções que manipulam strings. Estas funções são úteis poisnão se pode, por exemplo, igualar duas strings desta forma: string1=string2; // NÃO faça istoFazer 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 Strings8.1.1 strcpySua forma geral é: strcpy (string_destino,string_origem);A função strcpy() copia a string-origem para a string- destino.8.1.2 strcatA 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 strlenSua 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 amais que o inteiro retornado por strlen().8.1.4 strcmpFrancisco 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 afunção retorna zero. Se elas forem diferentes a função retorna não-zero.8.2 Matrizes de stringsMatrizes 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 matrizbidimensional de caracteres. Podemos ver a forma geral de uma matriz de stringscomo 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 StringsPodemos inicializar strings, assim como podemos inicializar matrizes. Abaixo vemosalguns 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, ummodo mais compacto de inicializar uma string. O terceiro exemplo combina as duastécnicas para inicializar um vetor de strings. Repare que devemos incluir o ; no final dainicialização.8.4 Inicialização sem especificação de tamanhoDa mesma forma que ocorre com matrizes, podemos, em alguns casos, inicializarstrings das quais não sabemos o tamanho a priori. O compilador C++ vai, neste casoverificar o tamanho do que você declarou e considerar como sendo o tamanho damatriz. Isto ocorre na hora da compilação e não poderá mais ser mudado durante oprograma, sendo muito útil, por exemplo, quando vamos inicializar uma string e nãoqueremos 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 ainicializaçã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 programaFrancisco Adell Péricas 15