Vous êtes sur la page 1sur 15

Apostila de C++

Yuri Karan Benevides Tomas

12 de junho de 2020
2
Capı́tulo 1

Introdução à Programação

1.1 Matemática e a lógica


TO DO: Falar dos Sumérios e citar Sapiens

1.2 Linguagem de programação


As linguagens de programação existem para que nós humanos possamos
expressar nossas ideias a fim de passar instruções para os computadores.
O português, o inglês, o japonês e tantas outras lı́nguas que foram criadas
pelo ser humano como parte da nossa evolução são ditas linguagens naturais.
Se você está lendo este texto é uma prova de que possui a habilidade de
compreender ao menos uma linguagem natural. Já os computadores possuem
como lı́ngua materna os bits, ou seja, uma sequência formada por zeros e uns.
Entender e escrever por meio de binários é algo não usual e complicado
para nós. Além disso, estes valores dependem da arquitetura de cada pro-
cessor, possuindo diferentes conjuntos de instruções. Para que possamos nos
comunicar com computadores utilizando uma linguagem mais agradável a
nós do que valores binários, foi criada a linguagem de montagem (Assembly)
. Esta é uma linguagem que pode ser convertida em código de máquina, po-
dendo ser executada diretamente pelo processador, ou até mesmo em binário.
Ainda assim, essa abordagem continuava dependente da arquitetura do hard-
ware presente em cada máquina e distante das linguagens naturais.
Ao longo dos anos, foram sendo criadas novas linguagens, como a For-
tran(1957) e a COBOL(1959), até chegarmos no cenário atual. Em 2019,
foi realizada um pesquisa realizada pelo site Stack Overflow 1 , revelando as
1
https://insights.stackoverflow.com/survey/2019

3
4 CAPÍTULO 1. INTRODUÇÃO À PROGRAMAÇÃO

linguagens de programação mais utilizadas por seus usuários:

1. JavaScript - 67,8%

2. Python - 41,7%

3. Java - 41,1%

4. C# - 31,0%

5. PHP - 26,4%

6. C++ - 23,5%

7. TypeScript - 21,2%

8. C - 20,6%

9. Ruby - 08,4%

10. Go - 08,2%

Os números apresentados não necessariamente representam o cenário


atual por serem baseados nos usuários de um Site que, como qualquer ou-
tro, possui um público com caracterı́sticas únicas que compõem parte deste
cenário, não o todo. Apesar disso, podemos utilizar essas linguagens como
exemplos das que estão presentes no contexto atual.
Não existe um único motivo que fez com que novas linguagens tenham
surgido. Algumas delas possuem como alvo uma plataforma especı́fica em
que possam tirar vantagem. Em outros casos o que motivou a criação foi
justamente a sua facilidade em trabalhar com diversas plataformas. Em
outras, o que motivou foi a criação de meios para facilitar a manipulação
de informações em um contexto especı́fico, independente da plataforma. Às
vezes, mesmo com essa motivação inicial, o uso de certas linguagens passa a
ficar popular em contextos diferentes dos propostos inicialmente.
Apesar das diferenças que possam motivar uma nova linguagem, uma
certa caracterı́stica é uma tendência e está presente nas dez linguagens mais
populares segunda aquela pesquisa do Stack Overflow, que é uma maior apro-
ximação com as linguagens naturais do que em relação às linguagens mais
antigas, como o Assembly, COBOL e Fortran.
1.3. LINGUAGENS DE PROGRAMAÇÃO DE ALTO NÍVEL 5

1.3 Linguagens de programação de alto nı́vel


Ao buscar a resolução de um problema por meio da criação de um código,
programadores devem se preocupar com duas coisas:
1. A sequência finita de passos que solucionam o problema, que nós da
área chamamos de algoritmo.
2. Como escrever isso usando uma certa linguagem de programação
É nos algoritmos que nós, programadores, devemos investir o nosso tempo
e energia. A escrita disso em um formato em que o computador entenda deve
ser uma tarefa menor, quase que instintivo. Se nosso foco se dividir entre
essas duas coisas, perderemos foco na resolução do problema em sı́, que é
feita pela criação do algoritmo2 .
[TO DO: Dar exemplo do mesmo algoritmo em diferentes linguagens]
Para que esse objetivo possa ser alcançado, em linguagens modernas o
programador é levado a um certo nı́vel de abstração, fazendo com que sua
codificação seja independente das caracterı́sticas do sistema operacional ou
hardware. Outras abordagens utilizadas são o aumento no nı́vel de abstração,
aumentando a granularidade e deixando as escolhas de design do algoritmo
mais próximas das contidas em nosso cotidiano, e a é aproximação da sintaxe
da linguagem com a das linguagens naturais.
Dentro destas linguagens modernas, existem variações em relação ao nı́vel
de abstração, e consequentemente em relação a sua aproximação em relação
às linguagens naturais. O Python é uma linguagem de nı́vel mais alto do que
o C++ e essa escolha de design é proposital para ambas.
Ainda que sejam criadas linguagens com essas caracterı́sticas, no fim, é
necessário convertê-las para uma compreensı́vel pelo computador. Esta é a
tarefa do compilador.

1.4 Compilador
É um programa de computador que traduz um código escrito em uma
linguagem de programação para outra . Geralmente isso é feito para que
um código escrito em uma linguagem de alto nı́vel seja traduzido para uma
linguagem de nı́vel mais baixo, criando um programa executável à partir
disso. São realizadas diversas etapas para que esta tarefa seja possı́vel, como:
2
Mesmo que este livro tenha, como uma de suas missões o aprendizado da linguagem
C++, mais importante do que isso é o que fazer com ela. O aprendizado de algoritmos mais
poderosos é muito mais rico do que o aprendizado de uma biblioteca ou certos recursos
obscuros de uma certa linguagem de programação.
6 CAPÍTULO 1. INTRODUÇÃO À PROGRAMAÇÃO

• Análise léxica

• Análise sintática

• Análise Semântica

• Geração de código intermediário

• Otimização do código

No C++, é necessário processar o código fonte gerado por meio de um


compilador gerando arquivos objetos, que são combinados formando o pro-
grama executável. O executável gerado é criado para uma combinação
especı́fica de hardware e sistema. Chamamos as linguagens que utilizam esse
método de linguagens compiladas.
[Imagem ilustrando]
Em outras linguagens, como C#, Java e Python, chamadas de linguagens
interpretadas, o código é transformado em uma linguagem intermediária, que
é interpretado por uma máquina virtual durante a execução do programa.
Este processo tem um custo, apesar de processos como o Just-in-time com-
pilation (JIT) e Ahead-of-compilation tem amenizado essa situação.
(Appel, 2004)
Capı́tulo 2

Introdução ao C++

2.1 Definindo a linguagem


O C++ é uma linguagem de programação de propósito geral, podendo ser
utilizada em diversos contextos, como sistemas financeiros, desenvolvimento
de jogos e produções cientı́ficas, e também diversos ambientes, como micro-
controladores, sistemas comerciais distribuı́dos e computadores domésticos.
Essa abordagem indica o interesse em possibilitar uma ampla variedade de
aplicações.
Outra caracterı́stica relevante da linguagem é a sua eficiência,
[TO DO: Ampliar a fala sobre a eficiência, ao falar sobre a não existência
de garbage collector, zero-overhead principle, STL]
Uma vantagem, muitas vezes dita por usuários menos atentos como des-
vantagem, é a possibilidade da utilização de diversos paradigmas de pro-
gramação, como programação procedural, abstração de dados, orientação à
objetos e programação genérica, tornando a muito mais do que um ”C com
classes”, apesar de possuir certa compatibilidade com sua inspiração inicial.
Não será este o momento de entrar em detalhes sobre estes elementos, mas
saiba que muitas linguagens se vangloriam por permitir orientação à objetos
em detrimento da programação procedural,

2.2 Breve história e ISO standard C++


C++ começou a ser escrito em 1979, inicialmente como um ”C com clas-
ses”, tendo sua primeira versão comercial, já com o nome de C++, lançada
em 1985.
Como outras linguagens, passou por revisões para adição de recursos e
correção de erros. A primeira grande revisão foi realizada em 1991, adicio-

7
8 CAPÍTULO 2. INTRODUÇÃO AO C++

nando programação genérica, por meio de templates, e tratamento de erros


por meio de exceções.
À partir de 1997 foi introduzido um padrão ISO, se tornando a responsável
pelas suas novas versões, correções de bugs e entrando em contato com as or-
ganizações presentes no mercado responsáveis pelos compiladores existentes.
As versões que trouxeram maiores diferenças foram a C++98 e a C++11.
De forma semelhante a programadores que migram de linguagem sem migrar
sua mentalidade, por se tratar de uma linguagem existente há muito tempo,
muitos programadores veteranos de C++ não acompanharam as essas mu-
danças.
Segundo Stroustrup (2013), criador da linguagem:
”Códigos de 1985 e 1995 ainda funcionam e continuarão a funcionar por
décadas. Ainda assim, de forma geral, você consegue fazer melhor com o
C++ moderno. Se você se prender aos estilos antigos, escreverá código de
baixa qualidade e pior desempenho”.
Dessa forma, sempre busque acompanhar as alterações

2.3 Estilo de escrita de código


Capı́tulo 3

Primeiros Passos no C++

Independente de qual linguagem você pretende aprender,

9
10 CAPÍTULO 3. PRIMEIROS PASSOS NO C++
Referências Bibliográficas

Appel, A. W. (2004). Modern compiler implementation in C. Cambridge


university press.

Stroustrup, B. (2013). The C++ programming language. Pearson Education.

11
12 REFERÊNCIAS BIBLIOGRÁFICAS
Appendices

13
Apêndice A

Linguagens formais

A classificação como uma linguagem de programação como tal não é ar-


bitrária, já que se encaixa na definição de uma linguagem formal, o que
permite a criação de compiladores e interpretadores, , como pode ser visto
com mais detalhes no Apêndice A.

15

Vous aimerez peut-être aussi