conceitos básicos da linguagem c++leonardo.campos/arquivos/... · o ambiente de nomes define um...
TRANSCRIPT
![Page 1: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/1.jpg)
Prof. Leonardo Barreto Campos 1
Conceitos Básicos da Linguagem C++
![Page 2: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/2.jpg)
Prof. Leonardo Barreto Campos 2/36
Sumário
� As Origens da Linguagem C++;
� Primeiro Programa em C++;
� Declaração e Leitura de Variáveis;
� Estruturas de Seleção;� if;� switch;
� Estruturas de Repetição;� while;� do/while;� for;
![Page 3: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/3.jpg)
Prof. Leonardo Barreto Campos 3/36
Sumário
� Os comandos break e continue;
� Funções:� Protótipo de Funções;� Arquivos de Cabeçalho;� Recursão;� Função inline;� Passagem de Parâmetros por Referência;� Sobrecarga de Funções;� Gabaritos de Funções;
� Array;
� Bibliografia.
![Page 4: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/4.jpg)
Prof. Leonardo Barreto Campos 4/36
As Origens da Linguagem C++
� C++ é uma evolução de C, que evoluiu de duas linguagens anteriores, BCPL e B.
� A linguagem BCPL influenciou uma linguagem chamada B, inventada por Ken Thompson;
� Na década de 70, B levou ao desenvolvimento da linguagem C.
� A linguagem de programação C foi originalmente projetada para ser implementada no sistema operacional UNIX em um DEC PDP-11;
![Page 5: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/5.jpg)
Prof. Leonardo Barreto Campos 5/36
As Origens da Linguagem C++
� O padrão C foi a versão fornecida com o sistema operacional UNIX versão 5;
� Com a popularidade dos microcomputadores, um grande número de implementações de C foi criada;
� Para remediar a falta de padrão da linguagem C, o ANSI (American National Standards Institute) estabeleceu, em 1983, um comitê para criar um padrão definitivo da linguagem C
![Page 6: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/6.jpg)
Prof. Leonardo Barreto Campos 6/36
As Origens da Linguagem C++
� C++, uma extensão de C, foi desenvolvida por BjarneStroustrup no início dos anos 80 no Bell Laboratories;
� C++ é uma linguagem híbrida – é possível programar tanto no estilo C como no estilo orientado a objetos, ou em ambos;
� A linguagem C++ trouxe várias características que melhoram a linguagem C, sobretudo, os recursos para suportar a Programação Orientada a Objetos;
![Page 7: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/7.jpg)
Prof. Leonardo Barreto Campos 7/36
Primeiro Programa em C++
� Analisemos, agora, um simples programa em C++:
![Page 8: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/8.jpg)
Prof. Leonardo Barreto Campos 8/36
Primeiro Programa em C++
Nome do programa (C plus plus daí *.cpp)
Comentário de linha única. Utilizado para documentar o código
Diretiva para inclusão do arquivo cabeçalho
<iostream> no programa
Usa o ambiente de nomes std
![Page 9: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/9.jpg)
Prof. Leonardo Barreto Campos 9/36
Primeiro Programa em C++
Função principal do programa
Manipulador de streamque gera uma nova linha e esvazia o buffer de saída
Objeto que corresponde ao stream padrão de saída
Operador que insere o valor a direita do operador na saída
![Page 10: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/10.jpg)
Prof. Leonardo Barreto Campos 10/36
Primeiro Programa em C++
� Considerações:� Comentário contendo muitas linhas começa com /* e termina com */
� As linhas iniciadas com # são processadas pelo pré-processador antes do programa ser compilado;
� O ambiente de nomes define um escopo onde identificadores e variáveis são colocados;
� A E/S em C++ ocorre em streams de bytes. Um stream é simplesmente uma seqüência de bytes. Por exemplo, em operações de entrada onde os bytes fluem de um dispositivo (teclado, HD, conexão de rede) para a memória principal.
![Page 11: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/11.jpg)
Prof. Leonardo Barreto Campos 11/36
Primeiro Programa em C++
� Na linguagem C o envio de dados para a saída padrão do computador era feita pela função printf;
printf(string_de_controle, lista_de_argumentos)
� A função printf recebe uma string e, possivelmente, uma lista de argumentos para tratar;
� Na linguagem C++ a stream a ser apresentada na saída padrão é tratada pelo objeto cout;
![Page 12: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/12.jpg)
Prof. Leonardo Barreto Campos 12/36
Primeiro Programa em C++
� O manipulador de stream endl pode ser substituído pela sequência de scape \n, mas deve vir entre aspas duplas. Veja outras seqüências de scape comuns:
Alerta\aTabulação vertical\vBarra invertida\\Aspas simples\’Aspas duplas\”
Tabulação horizontal\tRetorno de carro\r
Nova linha\nSignificadoCódigo
![Page 13: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/13.jpg)
Prof. Leonardo Barreto Campos 13/36
Declaração e Leitura de Variáveis
Declaração de variáveis
Objeto cin de entrada de stream(do ambiente de nomes std)
Operador >> de extração de stream
![Page 14: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/14.jpg)
Prof. Leonardo Barreto Campos 14/36
Declaração e Leitura de Variáveis
� Os tipos de dados primitivos da linguagem C++ são:
Sinônimo de longlong int
Sinônimo de shortshort int
unsigned char
char
false torna-se 0, true torna-se 1bool
Sinônimo de unsigned shortunsigned short int
int
Sinônimo de unsignedunsigned int
Sinônimo de unisigned longunsigned long int
float
double
long double
ConsideraçõesTipo de Dados
![Page 15: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/15.jpg)
Prof. Leonardo Barreto Campos 15/36
Declaração e Leitura de Variáveis
� Precedência dos Operadores Aritméticos:
Prioridade Baixa. Se houver vários, da esquerda para a direita.+ ou -
Prioridade Média. Se houver vários, da esquerda para a direita.*, / ou %
Prioridade Alta. Parêntese mais internos e “no mesmo nível” da esquerda para a direita( )
Ordem de AvaliaçãoOperadores
![Page 16: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/16.jpg)
Prof. Leonardo Barreto Campos 16/36
Estrutura de Seleção – if
![Page 17: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/17.jpg)
Prof. Leonardo Barreto Campos 17/36
Estrutura de Seleção – switch
Funciona como ou (‘A’ ou ‘a’)
![Page 18: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/18.jpg)
Prof. Leonardo Barreto Campos 18/36
Estrutura de Repetição – while
++letra (pré-incremento)
Saída: b c d e f g h i . . .
![Page 19: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/19.jpg)
Prof. Leonardo Barreto Campos 19/36
Estrutura de Repetição – do while
Biblioteca de manipulação de I/O
Biblioteca Matemática
![Page 20: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/20.jpg)
Prof. Leonardo Barreto Campos 20/36
Estrutura de Repetição – for
Tipo Bool (Só aceita 1 ou 0, Verdadeiro ou Falso)
Operadores Lógicos && (AND)
Conta e compra são variáveis locais
a e b são variáveis globais
a = a - b;
É permitida a quebra de linha
![Page 21: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/21.jpg)
Prof. Leonardo Barreto Campos 21/36
Estruturas de Seleção
� Precedência e Associatividade de Operadores:
Atribuiçãodireita para a esquerda= += -= /= %=
esquerda para a direita
direita para a esquerda
esquerda para a direita
esquerda para a direita
esquerda para a direita
esquerda para a direita
esquerda para a direita
esquerda para a direita
esquerda para a direita
direita para a esquerda
esquerda para a direita
esquerda para a direita
Associatividade
Aditivo+ -
E lógico&&
OU lógico||
Condicional?:
Vírgula,
Igualdade== !=
Relacional< <= > >=
Inserção/extração<< >>
Multiplicativo* / %
Unário (pré-fixado)++ -- + -
Unário (pós-fixado)++ -- static_cast<type>()
Parênteses( )
TipoOperadores
![Page 22: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/22.jpg)
Prof. Leonardo Barreto Campos 22/36
Os comandos break e continue
� O comando break provoca uma saída imediata da estrutura (for, while,, if, etc);
� O comando continue, quando executado em uma estrutura (while, for ou do/while), salta os comandos restantes no corpo dessa estruturae prossegue com a próxima repetição do laço, vejamos:
Saída
![Page 23: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/23.jpg)
Prof. Leonardo Barreto Campos 23/36
Funções
� A experiência tem mostrado que a melhor maneira de desenvolver e manter um programa grande é contituí-lo a partir de pequenas partes ou componentes;
� As funções vêm para possibilitar ao programador a modularização do programa facilitando a implementação, a operação e as manutenção;
� Os programas em C++ são escritos tipicamente combinando-se funções novas que o programador escreve com “funções pré-empacotadas” disponíveis na biblioteca padrão de C++;
![Page 24: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/24.jpg)
Prof. Leonardo Barreto Campos 24/36
Protótipo de Funções
Protótipo das Funções
Chamada das Funções
Definição das Funções
![Page 25: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/25.jpg)
Prof. Leonardo Barreto Campos 25/36
Arquivos de Cabeçalho
� Os arquivos de cabeçalho que terminam em .h são arquivos de cabeçalho no “estilo antigo”, que foram substituídos pelos arquivos de cabeçalho da biblioteca padrão C++;
� Para os arquivos de cabeçalho definidos pelo programador, os mesmo devem terminar com .h ;
� Os arquivos devem ser incluídos pelo programador através da diretiva de pré-processador #include;
![Page 26: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/26.jpg)
Prof. Leonardo Barreto Campos 26/36
Arquivos de Cabeçalho
Contém protótipos de funções para as funções padrões de Entrada/Saída. Substitui <iostream.h><iostream>
Contém protótipos de funções para funções que executam operaçõesde entrada a partir de arquivos de disco e saída para arquivos em
disco. Substitui <fstream.h><fstream>
Contém protótipos de funções para os manipuladores de streams que permitem formatação de streams de dados. Substitui <iomanip.h><iomanip>
Contém protótipos de funções para processamento de strings. Substitui <string.h><cstring>
Contém protótipos de funções da biblioteca padrão de Entrada/Saídae as informações utilizadas por elas. Substitui <stdio.h><cstdio>
Contém protótipos de funções da biblioteca matemática. Substitui<math.h>
<cmath>
Contém protótipos para funções examinarem caracteres em busca dedeterminadas propriedades dos caracteres. Substitui <ctype.h><cctype>
ConsideraçõesArquivos de Cabeçalho da Biblioteca Padrão
![Page 27: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/27.jpg)
Prof. Leonardo Barreto Campos 27/36
Recursão
Saída no Console
![Page 28: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/28.jpg)
Prof. Leonardo Barreto Campos 28/36
Funções inline
� As funções inline tem a finalidade de diminuir o overhead nas chamadas de função, principalmente para funções pequenas;
O qualificador inline “aconselha” o compilador a gerar uma cópia do código da função no próprio local.
![Page 29: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/29.jpg)
Prof. Leonardo Barreto Campos 29/36
Passagem de Parâmetros por Referência
Saída no Console
![Page 30: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/30.jpg)
Prof. Leonardo Barreto Campos 30/36
Sobrecarga de Funções
� C++ possibilita que sejam definidas várias funções como o mesmo nome, desde que estas funções tenham conjuntos de parâmetros diferentes;
![Page 31: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/31.jpg)
Prof. Leonardo Barreto Campos 31/36
Gabarito de Funções
� Caso a lógica das funções sobrecarregadas mude apenas quanto ao tipo dos dados, é mais conveniente usar os gabaritos de funções;
� Com gabaritos o C++ gera automaticamente a funçãoespecífica para tratar do tipo da chamada da função;
� Os gabaritos começam com a palavra-chavetemplate seguida por uma lista de parâmetros de tipo formais;
![Page 32: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/32.jpg)
Prof. Leonardo Barreto Campos 32/36
Gabarito de Funções
Este gabarito de função declara um parâmetro de tipo formal
único, T.
Quando o compilador faz uma chamada à função proximo, o tipo dos dados passados para proximo substitui T ao longo de toda a
definição do gabarito.
![Page 33: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/33.jpg)
Prof. Leonardo Barreto Campos 33/36
Gabarito de Funções
� Saída no console do programa anterior:
![Page 34: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/34.jpg)
Prof. Leonardo Barreto Campos 34/36
Array
� Os Arrays são grupos de posições de memória consecutivas, todas de mesmo nome e mesmo tipo;
![Page 35: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/35.jpg)
Prof. Leonardo Barreto Campos 35/36
Array
� Saída no Console para o programa anterior:
![Page 36: Conceitos Básicos da Linguagem C++leonardo.campos/Arquivos/... · O ambiente de nomes define um escopo onde identificadores e variáveis são colocados; A E/S em C++ ocorre em streams](https://reader033.vdocuments.site/reader033/viewer/2022060515/5f89d2dffc2852738d1dfd93/html5/thumbnails/36.jpg)
Prof. Leonardo Barreto Campos 36/36
Bibliografia
� SANTOS, R. Introdução à programação orientada a objetos usando Java, Editora Campus. 1ª ed. Rio de Janeiro: 2003.
� Deitel, H. M. & Deitel, P. J. C++: como programar, Editora Bookman. 3ª ed. Porto Alegre: 2001.