Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


apostila de dev, Notas de estudo de Cultura

Aqui é abordado os princípais conceitos de Dev C++

Tipologia: Notas de estudo

2012

Compartilhado em 20/04/2012

tito-kbps-2
tito-kbps-2 🇧🇷

1 documento

1 / 74

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Apostila de DEV C++
Índice Geral
Módulo 1 A Linguagem C++
o 1.1 História da Linguagem C/C++
o 1.2 Características da Linguagem C++
o 1.3 Exemplos de Aplicações Escritas em C++
o 1.4 Comparação de C++ com outras linguagens
o 1.5 Paradigmas de Programação: Programação Estruturada e Orientada a
Objetos
Módulo 2 Compiladores
o 2.1 O que é um Compilador
o 2.2 Compiladores de C++
o 2.3 DevC++ (Instalação, Interface e Utilização)
o 2.4 Estrutura Básica de um Programa em C++
Módulo 3 Características e Definições Gerais da Linguagem C++
o 3.1 Nomes e Identificadores Usados na Linguagem C++
o 3.2 Palavras Reservadas na Linguagem C++
o 3.3 Tipos e Dados
o 3.4 Definição de Variáveis
o 3.5 Definição de Constantes
o 3.6 Números Hexadecimais e Octais
o 3.7 Valores Strings
o 3.8 Códigos de Barra Invertida
o 3.9 Operadores
o 3.10 Tabela de Operadores da Linguagem C
o 3.11 Expressões
o 3.12 Precedência e Associatividade de Operadores
o 3.13 Conversões de Tipos
o 3.14 Modeladores de Tipos
Módulo 4 Funções na Linguagem C++
o 4.1 Funções
o 4.2 Declarando uma Função
o 4.3 Main como uma Função
o 4.4 Variáveis dentro das Funções
o 4.5 Chamada por Valor e Chamada por Referência
o 4.6 Biblioteca de Execução
o 4.7 Funções Recursivas
o 4.8 - Sobrecarga da Função
o 4.9 Funções Inline
o 4.10 Parâmetros Padrão
Módulo 5 Estudo dos comandos cout e cin
o 5.1 Utilização de cout
o 5.2 Overload do operador de inserção
o 5.3 Formatação de exibição com cout
o 5.4 Utilização de cin
Módulo 6 Estruturas de Controle de Fluxo
o 6.1 - Estruturas de Controle de Fluxo
o 6.2 A declaração if
o 6.3 O Encadeamento If Else if
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a

Pré-visualização parcial do texto

Baixe apostila de dev e outras Notas de estudo em PDF para Cultura, somente na Docsity!

Apostila de DEV C++

Índice Geral

 Módulo 1 – A Linguagem C++ o 1.1 – História da Linguagem C/C++ o 1.2 – Características da Linguagem C++ o 1.3 – Exemplos de Aplicações Escritas em C++ o 1.4 – Comparação de C++ com outras linguagens o 1.5 – Paradigmas de Programação: Programação Estruturada e Orientada a Objetos  Módulo 2 – Compiladores o 2.1 – O que é um Compilador o 2.2 – Compiladores de C++ o 2.3 – DevC++ (Instalação, Interface e Utilização) o 2.4 – Estrutura Básica de um Programa em C++  Módulo 3 – Características e Definições Gerais da Linguagem C++ o 3.1 – Nomes e Identificadores Usados na Linguagem C++ o 3.2 – Palavras Reservadas na Linguagem C++ o 3.3 – Tipos e Dados o 3.4 – Definição de Variáveis o 3.5 – Definição de Constantes o 3.6 – Números Hexadecimais e Octais o 3.7 – Valores Strings o 3.8 – Códigos de Barra Invertida o 3.9 – Operadores o 3.10 – Tabela de Operadores da Linguagem C o 3.11 – Expressões o 3.12 – Precedência e Associatividade de Operadores o 3.13 – Conversões de Tipos o 3.14 – Modeladores de Tipos  Módulo 4 – Funções na Linguagem C++ o 4.1 – Funções o 4.2 – Declarando uma Função o 4.3 – Main como uma Função o 4.4 – Variáveis dentro das Funções o 4.5 – Chamada por Valor e Chamada por Referência o 4.6 – Biblioteca de Execução o 4.7 – Funções Recursivas o 4.8 - Sobrecarga da Função o 4.9 – Funções Inline o 4.10 – Parâmetros Padrão  Módulo 5 – Estudo dos comandos cout e cin o 5.1 – Utilização de cout o 5.2 – Overload do operador de inserção o 5.3 – Formatação de exibição com cout o 5.4 – Utilização de cin  Módulo 6 – Estruturas de Controle de Fluxo o 6.1 - Estruturas de Controle de Fluxo o 6.2 – A declaração if o 6.3 – O Encadeamento If – Else if

o 6.4 – A Declaração Switch o 6.5 – A Declaração for o 6.6 – A declaração While o 6.7 – A Declaração Do While o 6.8 – Laços Aninhados o 6.9 – Break e Continue  Módulo 7 – Matrizes o 7.1 – Matrizes o 7.2 – Declaração de uma matriz o 7.3 – Acessando Valores de uma Matriz o 7.4 – Utilizando Laços para Percorrer Matrizes o 7.5 – Matrizes Multidimensionais o 7.6 – Matrizes em Funções o 7.7 – Criando Matrizes Dinamicamente  Módulo 8 – Strings o 8.1 – Cabeçalho de um programa com strings o 8.2 – Declarando e Inicializando uma String o 8.3 – Leitura e Escrita de Strings na Tela o 8.4 – Operações com Strings o 8.5 – Biblioteca cctype: operações com caracteres  Módulo 9 – Ponteiros o 9.1 - Endereços de Memória o 9.2 – Ponteiros o 9.3 – Declarando Ponteiros o 9.4 – Desreferenciando um Ponteiro o 9.5 – Ponteiros em Funções: Chamada por Referência o 9.6 – Ponteiros para Matrizes o 9.7 – Funções que Retornam Ponteiros o 9.8 – Ponteiros para Funções o 9.9 – Ponteiros para Ponteiros o 9.10 – Operadores new e delete  Módulo 10 - Entrada e Saída de Dados o 10.1 – A biblioteca fstream o 10.2 – Os objetos de fstream o 10.3 – Escrevendo em um arquivo o 10.4 – Checando se o arquivo abriu sem problemas o 10.5 – Fechando um Arquivo o 10.6 – Lendo os dados de um arquivo o 10.7 – Modos de Arquivo  Módulo 11 – Programação Orientada à Objetos o 11.1 – Paradigmas de Programação o 11.1 – Programação Orientada à Objetos o 11.2 – Conceitos Básicos o 11.2 – Herança e Polimorfismo

Módulo 1 – A Linguagem C++

1.1 – História da Linguagem C/C++

O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Stroustrup percebeu que a linguagem Simula possuía características bastante úteis para o desenvolvimento de software, mas era muito lenta para uso prático. Por outro lado o BCPL era rápido, mas possuía baixo nível, dificultando sua utilização em desenvolvimento de aplicações. Durante seu período na Bell Labs, ele enfrentou o problema de analisar o kernel UNIX com respeito à computação distribuída. A partir de sua experiência de doutorado, começou a acrescentar elementos do Simula no C.

memória de maneira direta, sem recorrer a abstrações apresentadas por outras linguagens de alto nível.

A filosofia que existe por trás da linguagens C e C++ é que o programador sabe realmente o que está fazendo. Estas linguagens quase nunca colocam-se no caminho do programador, deixando-o livre para usá-la de qualquer forma que queira, mas arcando com as consequências de seu mau ou incorreto uso. O motivo para essa “liberdade na programação” é permitir ao compilador criar códigos muito rápidos e eficientes, deixando a responsabilidade da verificação de erros para o programador. O próprio criador de C++, Bjorne Stroustrup afirma que “C faz com que dar um tiro no pé seja fácil; C++ torna isso mais difícil, mas quando nós o fazemos arrebenta com a perna toda”. A citação de Stroutrup trata com humor o fato de o C++, ao possibilitar a programação de alto nível, ter facilitado a codificação de algoritmos e organização de projetos em relação ao C, uma linguagem que requer constante atenção contra erros lógicos de programação devido à sua alta flexibidade. Por outro lado, o C++ possui nuances da sintaxe e semântica da linguagem muito sutis, difíceis de serem identificados, e que quando não percebidos podem levar a comportamentos indesejados no código.

As principais vantagens e desvantagens do C++ são listadas a seguir:

Vantagens

 Possibilidade em programação de alto e baixo nível.  Alta flexibilidade, portabilidade e consistência.  Compatilidade com C, resultando em vasta base de códigos.  Adequado para grandes projetos.  Ampla disponibilidade e suporte, devido principalmente à grande base de desenvolvedores.  Não está sob o domínio de uma empresa (em contraste do Java - Sun ou Visual Basic

  • Microsoft).  Padronização pela ISO.  Grandes possibilidades para a metaprogramação e programação genérica.

Desvantagens

 Compatilidade com o C herdou os problemas de entendimento de sintaxe do mesmo.  Os compiladores atuais nem sempre produzem o código mais otimizado, tanto em velocidade quando tamanho do código.  Grande período para o aprendizado.  A biblioteca padrão ainda não cobre áreas importantes da programação, como threads, conexões TCP/IP e manipulação de sistemas de arquivos, o que implica na necessidade de criação de bibliotecas próprias para tal, que pecam em portabilidade.  Devido à grande flexibilidade no desenvolvimento, é recomendado o uso de padrões de programação mais amplamente que em outras linguagens.

1.5 – Paradigmas de Programação: Programação Estruturada e Orientada

a Objetos

Um paradigma de programação é um conjunto de idéias que fornecem ao programador uma visão sobre a estruturação e execução de um programa. Assim como ao resolver um problema podemos adotar uma entre variadas metodologias para resolvê-lo, ao criar um programa podemos adotar um determinado paradigma de programação para desenvolvê-lo. Certas linguagens de programação são escritas especificamente para trabalhar com um tipo de paradigma: este é o caso de Smalltalk e Java que suportam a programação orientada a objetos. Outras linguagens suportam vários paradigmas, ou seja, o programador pode escolher qual paradigma se adapta melhor ao problema que ele precisa resolver e trabalhar com ele, e até mesmo alternar entre paradigmas (desde que ele saiba o que está fazendo).

A linguagem C utiliza o paradigma da programação estruturada. A base da programação estruturada é trabalhar a lógica do programa como uma estrutura composta de similares sub- estruturas, reduzindo a compreensão do programa à compreensão de cada sub-estrutura individualmente. Na prática, este método envolve a criação de várias funções dentro de um programa, pequenas e simples o suficiente para serem entendidas individualmente, sendo o programa a sequência de todas estas funções trabalhando em conjunto. A programação estruturada se opõe ao uso de comandos de pulo como “GOTO”, preferindo a criação de estruturas e condições lógicas que substituam ou mesmo eliminem a necessidade de um comando de pulo. Este paradigma é o mais utilizado no ensino e aprendizado de linguagens de programação, por ser mais facilmente entendido por estudantes e por criar hábitos de programação saudáveis e úteis mesmo em outros paradigmas.

A linguagem C++ é uma das linguagens que suportam vários paradigmas. Inicialmente, sendo uma “evolução” de C, ela suporta inteiramente o paradigma da programação estruturada. Além disso, ela suporta outros paradigmas como a programação procedural, a programação genérica, abstração de dados e a programação orientada a objetos. Dentre estes paradigmas, o mais utilizado atualmente é a Programação Orientada a Objetos, ou mais comumente chamado de OOP (Object-Oriented Programming). Apesar de ter sido criada nos anos 60, este paradigma só começou a ganhar aceitação maior após os anos 90,com a explosão das linguagens C++, Java e Visual Basic. A idéia básica por trás da OOP é criar um conjunto de “objetos” (unidades de software) para modelar um sistema. Estes objetos são independentes entre si, possuindo responsabilidades e funções distintas no programa como um todo, mas que se comunicam entre si através do envio e recebimento de mensagens. A OOP é especialmente útil para grandes programas que se beneficiam mais com a modularidade oferecida por este paradigma: dividindo o programa em vários módulos independentes, aumenta-se a flexibilidade e a facilidade para manutenção do programa como um todo.

Nesta apostila, enfocaremos os aspectos de linguagem de programação estruturada da linguagem C++, deixando os aspectos de linguagem orientada a objetos para os últimos capítulos a título de introdução ao assunto. Isto se deve a maior dificuldade de aprendizado e entendimento do paradigma da programação orientada a objetos, principalmente tratando-se de estudantes com pouco contato com linguagens de programação. Por isso, é preferível estabelecer uma base para o estudante com os conceitos da programação estruturada, que são mais facilmente compreendidos e trabalhados, para que depois este estudante possa progredir para o paradigma da OOP com maior facilidade.

Módulo 2 – Compiladores

2.1 – O que é um Compilador

Toda linguagem de programação possui um tradutor de código. Este tradutor pode ser um compilador ou um interpretador, dependendo da linguagem. Interpretadores são programas que leêm o código-fonte e executam ele diretamente, sem a criação de um arquivo executável. Chamamos de compilador o programa que traduz um arquivo escrito em código de linguagem de programação (arquivo-fonte) para a linguagem do microprocessador, criando um arquivo capaz de executar as instruções pedidas (arquivo executável).

O primeiro passo de um compilador é analisar o código presente no arquivo-fonte, verificando se existem erros de sintaxe. Caso algum erro de sintaxe seja encontrado, a compilação é interrompida para que o programador possa corrijir estes erros. Caso o código não possua erros o próximo passo do compilador é criar um arquivo de código-objeto, que possui as instruções do programa já traduzidas para a linguagem da máquina e informações sobre alocação de memória, símbolos do programa (variáveis e funções) e informações de debug. A partir deste arquivo de código-objeto, o compilador finalmente cria um arquivo executável com o programa compilado, que funciona independente do compilador e realiza as instruções criadas pelo programador.

2.2 – Compiladores de C++

Figura 2.2 – Escolha o local onde serão instalados os arquivos do compilador.

Após isto, a instalação será concluída com sucesso. Para acessar o programa, basta encontrar o atalho ao programa no menu iniciar sob o nome “Bloodsheed Dev-C++” e clicar para executá- lo.

2.3.2 - Interface

Importante: Na primeira vez que iniciamos o Dev-C++, todos os seus menus estão em inglês. Porém, o programa é traduzido para várias línguas, inclusive português. Para mudar os menus do programa para a nossa língua (ou qualquer outra língua que desejar), basta acessar o menu “Tools -> Enviroment Options”. Uma janela se abrirá, com várias opções referentes ao funcionamento do ambiente de trabalho. Na aba “Interface” encontra-se a opção “Language” com as várias linguas em que o programa está disponível. Basta procurar a opção “portuguese (Brazil)” e clicar OK, e o programa já estará traduzido para nossa língua.

A tela principal do programa é mostrada na figura abaixo.

Figura 2.3 – Interface do DevC++

Os menus principais do programa são muito parecidos com os programas windows padrão. Temos os menus:

Arquivo : possui as funções básicas de manuseio de arquivos (criar novo arquivo, abrir arquivo, fechar, imprimir, ver propriedades)

Editar : aonde estão localizadas as funções de edição básicas de edição (copiar, recortar, colar) e algumas funções úteis para programação (como comentar e descomentar trechos do programa, e criar e acessar “bookmarks”, que são marcas de acesso rápido para partes do programa, especialmente úteis para programas extensos)

Localizar : possui os comandos de procurar e substituir partes do código; o menu Exibir permite o controle de quais componentes da tela são exibidos

Projeto : refere-se a projetos de programas que possuem vários componentes e arquivos de códigos separados e é utilizado para adicionar e retirar componentes do projeto

Executa : é talvez o mais importante para nós, e nele estão localizadas as funções básicas do compilador (como os comandos Compilar, Executar ) e algumas funções úteis como procurar por erros de sintaxe

Figura 2.5 – O menu Executar possui todas os comandos necessários para compilar e executar os programas que criaremos.

Figura 2.6 – Localização dos comandos básicos na barra de tarefas. Coloque o mouse sobre qualquer um dos ícones para saber qual é sua função.

2.3.4 - Erros

Quando compilamos um arquivo de código no Dev-C++, a janela indicadora do progresso da compilação é automaticamente aberta. Caso o arquivo de código não contenha nenhum erro, a compilação terminará e a janela de progresso permanecerá aberta para indicar que tudo correu bem (verifique o quadrado da janela chamado “status”: ele deverá indicar Done após o fim da compilação). Desta maneira, após o fim da compilação basta fechar a janela e executar o programa executável que foi gerado.

Figura 2.7 – Janela que indica o progresso da compilação do arquivo de código.

Caso nosso arquivo de código contenha uma ou mais linhas de códigos com erro, a compilação é interrompida para que estes erros (ou advertências) sejam verificados pelo programador. A janela de progresso da compilação é fechada, e a janela inferior do programa é maximizada mostrando todos os erros que foram encontrados durante a compilação do programa.

Figura 2.8 – A janela que indica a posição e o tipo de erros encontrados durante a compilação do programa.

A figura acima mostra que a janela possui três colunas: linha, unidade e mensagem. A coluna linha indica a linha de código onde o erro foi encontrado; a coluna unidade indica o arquivo onde foi encontrado o erro e a coluna mensagem relata o tipo de erro encontrado. Um duplo clique em qualquer uma das indicações de erro nesta janela faz com que a linha de código onde o erro foi encontrado seja sublinhada em vermelho na janela de edição de código.

Geralmente, os erros encontrados são erros de digitação do código. Quando erramos o nome de uma variável ou mesmo um comando, o Dev-C++ indica que o nome errado não foi declarado anteriormente (“variável_x undeclared(first use in this function)”), pois ele age como se este nome desconhecido fosse uma variável não declaradada e tenta continuar a compilação.

Outro erro bastante comum é a falta de ponto-e-vírgula no fim de uma linha de comando. Neste caso, a mensagem de erro geralmente é “; expected before algum_comando”, indicando que o compilador esperava o ponto-e-vírgula antes do próximo comando ou variável. A mensagem de erro indica a próxima linha de código, mas o ponto-e-vírgula ausente está na linha anterior. O compilador também indica quando utiliza-se o ponto-e-vírgula antes da hora, ou seja, quando o compilador espera por uma expressão ou comando e encontra somente o ponto-e-vírgula. Por exemplo, uma declaração de variável sem declaração de valor: “variável = ;”. Neste caso, a mensagem de erro dada pelo programa é “expected primary-expression before ';' token”.

2.4 – Estrutura Básica de um Programa em C++

Temos abaixo a estrutura de um programa escrito na linguagem C++:

main, ela retorna um valor para o sistema operacional que executou o programa. Esse valor é interpretado pelo sistema como uma mensagem indicando se o programa foi executado corretamente ou não. Um valor de retorno 0 indica que o programa foi executado sem problemas; qualquer outro valor de retorno indica problemas. Quando o programa é executado até o fim, ele retorna 0 ao sistema operacional, indicando que ele foi executado e terminado corretamente. Quando o programa encontra algum erro ou é terminado antes da hora, ele retorna um valor qualquer ao sistema, indicando erro durante a execução.

Módulo 3 – Características e Definições Gerais da

Linguagem C++

3.1 – Nomes e Identificadores Usados na Linguagem C++

Existem algumas regras para a escolha dos nomes (ou identificadores) de variáveis em C++:

 Nomes de variáveis só podem conter letras do alfabeto, números e o caracter underscore “”.  Não podem começar com um número.  Nomes que comecem com um ou dois caracteres underscore (“” e “__”) são reservados para a implementação interna do programa e seu uso é extremamente desaconselhado. O compilador não acusa erro quando criamos variáveis desse jeito, mas o programa criado se comportará de forma inesperada.  Não é possível utilizar palavras reservadas da linguagem C++ (para mais detalhes, veja o item 2.2). Também não é possível criar uma variável que tenha o mesmo nome de um função, mesmo que essa função tenha sido criada pelo programador ou seja uma função de biblioteca.  C++ diferencia letras maiúsculas e minúsculas em nomes de variáveis. Ou seja, count, Count e COUNT são três nomes de variáveis distintos.  C++ não estabelece limites para o número de caracteres em um nome de variável, e todos os caracteres são significantes.

3.2 – Palavras Reservadas na Linguagem C++

Na linguagem C++ existem palavras que são de uso reservado, ou seja, que possuem funções específicas na linguagem de programação e não podem ser utilizadas para outro fim, como por exemplo, ser usada como nome de variável. Por exemplo, a palavra reservada “for” serve para chamar um laço de repetição, e não pode ser utilizada como nome de uma variável.

A lista abaixo relaciona as palavras reservadas da linguagem C++:

asm auto bool break case catch char class const const_cast Continue default delete do double Dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void

Volatile wchar_t while

É importante notar que a linguagem C++ diferencia letras maiúsculas e minúsculas, ou seja, char é uma palavra reservada de C++ mas CHAR ou ChAr não é (entretanto, normalmente desaconselha-se o uso dessa diferenciação por atrapalhar a legibilidade do código). Reforçando o que já foi mencionado, as palavras reservadas só irão executar os comandos que lhes foram designados.

3.3 – Tipos e Dados

Quando um programa é escrito em qualquer linguagem de programação é necessário a definição de algumas variáveis. Variáveis são instâncias em que serão armazenados valores utilizados durante a execução de programas. Estas variáveis podem ser modificadas para suportar diferentes tipos de dados. Os principais tipos de dados utilizados em C++ podem ser divididos em variáveis inteiras e reais.

Variáveis inteiras servem para armazenar números inteiros, sem partes fracionárias. O principal tipo de variável inteira em C++ é o int. Além dele, existem os tipos char, short e long, cada um deles caracterizado por um tamanho em bits diferente. Estes tipos podem ser modificados pelo prefixo “unsigned”, que determina que a variável em questão só terá valores positivos, liberando o bit de sinal e aumentando a capacidade de armazenamento da variável (por default, todas as variáveis inteiras e reais declaradas em C++ são “signed”, ou seja, possuem um bit de sinal e podem ser tanto positivas como negativas). A tabela abaixo mostra os principais tipos de inteiros, seus tamanhos em bits e seu intervalo de armazenamento.

Tipo

Tamanho (em bits)

Intervalo

Char 8 - 128 a 127 unsigned char 8 0 a 255 Int 16 - 32768 a 32767 unsigned int 16 0 a 65535 Short 16 - 32768 a 32767 unsigned short 16 0 a 65535

Long 32

  • 2147483648 a 2147483647 unsigned long 32 0 a 4294967295

Variáveis reais servem para armazenar números que possuem partes fracionárias. Existem duas maneiras de representar números fracionários em C++. A primeira, a mais simples, é utilizar o ponto para separar as partes inteiras e fracionárias. Por exemplo:

(Mesmo no caso de um número com parte fracionária igual a zero, a utilização do ponto assegura que este número seja considerado um número de ponto flutuante por C++).

A segunda maneira é utilizar a notação científica E. Por exemplo : 3.45E7 significa “3. multiplicado por 10 elevado à sétima potência (10.000.000)”. Essa notação é bastante útil para

O conceito de constantes em linguagens de programação é atribuir um certo valor constante a um nome, e quando este nome for referenciado dentro do código do programa, será utilizado nas operações o valor atribuído a este nome. Ou seja, se for definida a constante PI com o valor “3,1415926536”, quando for encontrado no código o nome PI, será utilizado em seu lugar o valor “3,1415926536”.

Em C++ , utilizamos o prefixo const associado a um tipo, um nome e um valor para definir uma constante. Assim:

const = ;

Por exemplo:

const int eterna = 256;

No exemplo acima, definimos uma constante inteira de nome “eterna” que possui o valor numérico 256. É importante notar que devemos declarar a constante e lhe atribuir um valor na mesma linha de comando. Não podemos criar uma constante e lhe atribuir um valor posteriormente, ou seja, as seguintes linhas de comando são inválidas:

const int eterna; eterna = 256;

A partir da primeira linha, “eterna” passa a ser uma constante e seu valor não pode ser mais mudado durante a execução do programa. Como seu valor não foi declarado, esta constante pode ter qualquer valor que esteja na memória do computador naquele momento da declaração da variável.

3.6 – Números Hexadecimais e Octais

Em programação algumas vezes é comum usar um sistema de numeração baseado em 8 ou 16 em vez de 10. O sistema numérico baseado em 8 é chamado octal e usa os dígitos de 0 a

  1. Em octal, o número 10 é o mesmo que 8 em decimal. O sistema numérico de base 16 é chamado hexadecimal e usa os dígitos de 0 a 9 mais as letras de A até F, que equivalem a 10, 11, 12, 13, 14 e 15. Por exemplo, o número hexadecimal 10 é 16 em decimal. Por causa da freqüência com que estes dois sistemas numéricos são usados, a linguagem C++ permite que se especifique valores inteiros em hexadecimal ou octal para uma variável ou constante em vez de decimal. Um valor hexadecimal deve começar com “0x” (um zero seguido de um x), seguido pelo valor em formato hexadecimal. Um valor octal começa com um zero. Aqui estão alguns exemplos:

hex = 0xFF; /* 255 em decimal / oct = 011; / 9 em decimal */

Outra base numérica muito utilizada na programação é a base binária. Apesar de C++ não possuir uma forma específica de se expressar valores de base binária, podemos utilizar a notação hexadecimal para esta função. A tabela abaixo mostra como pode ser feita a conversão de um valor binário para um valor hexadecimal.

Dígito Hexadecimal

Equivalente Binário

Dígito Hexadecimal

Equivalente Binário 0 0000 8 1000 1 0001 9 1001 2 0010 A 1010 3 0011 B 1011 4 0100 C 1100 5 0101 D 1101

7 0111 F 1111

3.7 – Valores Strings

Outro tipo de valor suportado pela Linguagem C++ é o tipo string. Uma string é um conjunto de caracteres entre aspas. Por exemplo, “você é um vencedor” é uma string, composta pelas várias letras que formam a frase. Não confunda strings com caractere. Uma constante caractere simples fica entre dois apóstrofos, por exemplo „a‟. Entretanto “a” é uma string que contém somente uma letra.

3.8 – Códigos de Barra Invertida

A linguagem C++ fornece constantes caractere mais barra invertida especiais, úteis para caracteres que não são facilmente inseridos através do teclado ou de strings (como por exemplo, o retorno de carro). Estes códigos são mostrados na tabela a seguir:

Código Significado Código Significado

\b Retrocesso \f

Alimentação de formulário \n Nova linha \r Retorno de carro

\t Tabulação horizontal

" Aspas

' Apóstrofo \ 0 Nulo \ Barra invertida \v Tabulação vertical \a Sinal sonoro \N Constante octal

\xN

Constante hexadecimal

Usa-se um código de barra invertida exatamente da mesma maneira como usa qualquer outro caractere. Por exemplo:

ch = „\t‟; printf(“Este é um teste\n”);

Esse fragmento de código primeiro atribui uma tabulação a ch e, então, imprime “este é um teste” na tela, seguido de uma nova linha.

3.9 – Operadores

Um operador é um símbolo que diz ao compilador para realizar manipulações matemáticas e lógicas específicas. A linguagem C++ possui três classes gerais de operadores: aritméticos, relacionais e lógicos e bit-a-bit.

3.9.1 – Operador de atribuição

O operador “=” atribui um valor ou resultado de uma expressão contida a sua direita para a variável especificada a sua esquerda. Exemplos:

a = 10; b = c * valor + getval(x); a = b = c = 1;

(a == b) && (b == c) /* Se a != b não avalia o resto da expressão / (a == b) || (b == c) / Se a == b não avalia o resto da expressão */

3.9.5 – Manipulação de bits

A manipulação é feita em todos os bits da variável. É importante notar que a variável manipulada não pode ser do tipo float ou double. Os operadores que manipulam bits estão relacionados abaixo:

Operador Ação & bit and | bit or ^ bit xor - exclusive or << Rotação a esquerda

Rotação a direita ~ bit not (complemento)

Observação: x << n irá rotacionar n vezes a variável x à esquerda.

3.9.6 – Operadores de assinalamento

É expresso da seguinte forma: (operadores combinados)

var = var op expr -> var op = expr

Onde tempos op como um dos seguintes operadores:

Operador Ação

  • Soma
  • Subtração
  • Multiplicação / Divisão % módulo (resto da divisão)

Rotação a direita << Rotação a esquerda & And ^ xor - exclusive or | Or

Exemplo de aplicação:

i+= 2; /* É equivalente a: i = i + 2 / j-= 3; / É equivalente a: j = j – 3 / k >>= 3; / É equivalente a: k = k >> 3;/ z &= flag; / É equivalente a: z = z & flag;*/

3.9.7 – Operadores de Pré e Pós-Incremento

Operadores de pré e pós-incremento são aqueles usados quando é necessário incrementar ou decrementar um determinado valor.

As operações abaixo podem ser representadas assim:

i = i + 1;? i = ++i;? ++i; i = i – 1;? i = --i;? --i; z = a; a = a + 1;? z = a++; z = a; a = a – 1;? z = a--; a = a + 1; z = a;? z = ++a; a = a - 1; z = a;? z = --a;

3.9.8 - Operadores de Endereço

São operadores usados com ponteiros, para acesso a endereços de memória.

Operador Significado & endereo de uma vari?vel

  • conteúdo do endereço especificado

Exemplos:

int var, *x; x = &var; var = *x;

3.10 – Tabela de Operadores da Linguagem C

A tabela abaixo mostra todos os operadores apresentados anteriormente:

Operador Função Exemplo (C++¦

  • menos unário a = - b;
  • mais unário a = +b ; ! negação lógica! flag ~ bitwise not a = ~b ; & endereço de a = &b ;
  • referência a ptr a = *ptr ; sizeof tamanho de var a = sizeof(b) ; ++ incremento ++a; ou a++; -- decremento --a; ou a--;
  • multiplicação a = b * c; / divisão inteira a = b / c; / divisão real a = b / c; % resto da divisão a = b % c;
  • soma a = b + c;
  • subtração a = b v c;

shift right a = b >> n; << shift left a = b << n;