Buscar

01. Introdução

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Ju
d
so
n
 S
an
to
s 
S
an
ti
ag
o
INTRODUÇÃO
Programação de Computadores
Introdução
 Computadores são equipamentos eletrônicos
Introdução
 Computadores são destinados ao 
processamento dos mais variados tipos de 
informações
 Computadores são capazes de executar uma 
enorme diversidade de tarefas:
 Solução de problemas matemáticos
 Achar raízes 
de uma função
 Calcular derivadas 
e integrais
Introdução
Introdução
 Computadores são capazes de executar uma 
enorme diversidade de tarefas:
 Controle de processos industriais
Introdução
 Computadores são capazes de executar uma 
enorme diversidade de tarefas:
 Execução remota de cirurgias
Introdução
 Computadores são capazes de executar uma 
enorme diversidade de tarefas:
 Previsão de condições climáticas
Introdução
 Computadores são capazes de executar uma 
enorme diversidade de tarefas:
 Controle acadêmico de uma universidade
Introdução
 Computadores são capazes de executar uma 
enorme diversidade de tarefas:
 Jogos e simulações
Introdução
 Computadores são capazes de executar uma 
enorme diversidade de tarefas:
 Controle de robôs
Introdução
 Como um mesmo dispositivo eletrônico 
executa trabalhos de natureza tão diversas?
 Um telefone faz e recebe chamadas de voz
 Um aparelho de DVD reproduz filmes
 Um microondas cozinha alimentos
 Ao contrário da maioria dos dispositivos 
eletrônicos, o computador pode ser 
programado para executar uma tarefa 
qualquer
Introdução
 Como programar um computador para fazer 
o que queremos?
 Criando um 
programa
 Um programa é uma sequência de instruções 
que, ao serem executadas pelo computador, 
realizam uma determinada tarefa
Introdução
 Um programa é como uma receita de bolo
Ingredientes
• 1 xícara de açúcar
• 1 colher de fermento em pó
• ½ xícara de chocolate em pó
• 2 xícaras de farinha de trigo
• 1 xícara de leite
• 5 ovos
Preparo
• Bata as claras em neve bem firme
• Junte as gemas e acrescente o açúcar
• Despeje o leite sem parar de bater
•Adicione farinha, chocolate e fermento
• Despeje em uma fôrma redonda untada
• Leve para assar em forno por 40 minutos 
• Deixe esfriar e corte-o ao meio. 
Dados Instruções
Introdução
 Um programa em linguagem C++
 Dados: os valores 10 e 20
 Instruções: soma, atribuição e impressão
Introdução
 Como criar um programa?
 O computador não reconhece a linguagem natural 
utilizada na receita de bolo
 O computador só executa instruções em 
linguagem de máquina
01010111101011010101011101101101
01010101010111101110101011011010
11011101010101101010101010101010
10101010101010101010101101111011
00110111011101101110111011101110
11101111011110000001111000011111
11010101010101010100000000111111
11010101011111110101010001101110
Conjunto de Instruções de 32 bits
Introdução
 Ninguém escreve programas em linguagem 
de máquina
 A primeira linguagem utilizada para construir 
programas foi a linguagem assembly
{calcula a soma 10 + 20} 
asm
mov eax,10
add eax,20
end;
{A rotina a seguir imprime uma palavra}
procedure imprime_nts;assembler;
asm
push ax
push si
jmp @primeiro_char
@imprime:
call imprime_char
inc si {aponta para o proximo caracter}
@primeiro_char:
mov al,[si]
cmp al,0 {string acabou?}
jne @imprime {se nao, imprime o caracter}
pop si
pop ax
end;
Introdução
 Assembly é uma linguagem de baixo nível
 Manipula as informações no nível de 
registradores da CPU e endereços de memória
 Depende da arquitetura da máquina: 
x86 (CISC), PowerPC (RISC)
Introdução
 Linguagens de baixo nível são ruins para a 
programação de sistemas grandes
 Nos dias de hoje utilizam-se linguagens de 
alto nível:
 C, C++, Java, Python, PHP, C#, Basic, Ocaml
 As instruções em linguagem de alto nível são 
traduzidas para instruções em linguagem de 
máquina
cout << "Bem vindo a programação com C++";
Introdução
 As primeiras linguagens de alto nível são hoje 
classificadas como linguagens não 
estruturadas
 Não há um mecanismo para agrupar instruções
 Conjunto muito extenso de instruções
 Muito difícil acompanhar a execução
 Caracterizadas pelo uso da instrução GOTO
 Exemplo: FORTRAN, BASIC
Introdução
 Exemplo de Programa em BASIC:
10 REM RESOLVE EQUACAO DO SEGUNDO GRAU
20 READ A,B,C 
25 IF A=0 THEN GOTO 410 
30 LET D=B*B-4*A*C 
40 IF D<0 THEN GOTO 430 
50 PRINT "SOLUCAO" 
60 IF D=0 THEN GOTO 100 
70 PRINT "PRIMEIRA SOLUCAO",(-B+SQR(D))/(2*A) 
80 PRINT "SEGUNDA SOLUCAO",(-B-SQR(D))/(2*A) 
90 GOTO 20 
100 PRINT "SOLUCAO UNICA",(-B)/(2*A) 
200 GOTO 20 
410 PRINT "A DEVE SER DIFERENTE DE ZERO" 
420 GOTO 20 
430 PRINT "NAO HA SOLUCOES REAIS" 
440 GOTO 20 
490 DATA 10,20,1241,123,22,-1 
500 END 
Introdução
 A segunda geração de linguagens são 
conhecidas como linguagens estruturadas
 Foi introduzido o conceito de sub-rotina
 As instruções podem ser agrupadas 
 Uma sub-rotinas pode chamar outra
 Muito mais fácil acompanhar a execução
 Possibilita o reuso de código
 Exemplo: Pascal, C
Introdução
 Exemplo de Programa em C:
// converte metros em centímetros
#include <stdio.h>
int converte(int); 
int main()
{
int metros, centimetros; 
printf("Entre com a distância em metros: ");
scanf("%d", &metros);
centimetros = converte(metros);
printf("metros = %d", metros);
printf("centimetros = %d", centimetros); 
return 0;
}
int converte(int n)
{
return 100 * n;
}
Introdução
 A terceira geração de linguagens são as 
linguagens orientadas a objeto
 É a mais usada nos dias de hoje 
 Atrela as sub-rotinas a um conjunto de dados 
 Expande ainda mais as opções de reuso de código
 Trata os problemas de forma mais intuitiva
 Facilita o tratamento de erros
 Exemplo: C++, Java, Smalltalk
Introdução
 Exemplo de Programa em C++:
// controla ações da bolsa de valores
#include <iostream>
class Acoes
{
private: 
char empresa[40];
int acao;
double valorAcao;
double valorTotal;
public: 
void adquirir(const char * co, int n, double pr);
void comprar(int num, double preco);
void vender(int num, double preco);
void atualizar(double preco);
void mostrar();
};
Introdução
 O que é necessário saber para programar em 
uma linguagem de alto nível?
 Aprender a linguagem:
 Representação de dados (int, float, char, etc.)
 Instruções:
 Entrada/saída de dados (printf, cout, writeln, etc.)
 Processar dados (+, -, *, >, <, <=, &&, ||, !, etc.)
 Desvio e repetição (if, switch, for, while, etc.)
 Aprender a usar um tradutor (compilador) da 
linguagem
Introdução
 No curso aprenderemos a programar usando 
a linguagem C++
 Existem diversos compiladores para C++:
 Microsoft Visual C++
 Metrowerks CodeWarrior
 Borland C++
 GNU g++
 Compilador é diferente de IDE
Por que C++?
C++
Perf/$
Energia: importante em todas as escalas 
– embarcado, mobile, 
desktop, datacenter
Tamanho: a quantidade de transistores 
é limitada pelo 
tamanho do 
dispositivo e 
pela tecnologia
Experiências: experiências interativas 
melhores em 
hardware 
menor –
cada ciclo conta
Perf/W
Perf/T
Perf/C
Histórico
1979 - 1989
1989 - 1999
1999 - 2009
2009 - 2019
Pesquisa:
C com classes,
C++ ARM
Tendência:
investimento
pesado em 
compiladores
e ferramentas
(ISO C++98)
Linguagens
focadas em 
produtividade
Java/C#
Pergunta:
elas conseguem
resolver tudo?
Código Nativo
está de volta
do exílio com 
o retorno do 
Rei
Performance
Perf/$
Perf/W
Perf/T
Perf/C
Inovaçãoem Interfaces
iPad/iPhone
Inovação em Interfaces
Kinect
Smartphones
APIs iPhone Android Windows Phone
Versão 1 - Java .NET
Versão 2+
Objective-C,
C & C++
Java, 
C & C++
.NET, C++
Que linguagens são 
suportadas para o 
desenvolvimento 
em smartphones?
Clang
Clang
O mundo é construído em C/C++
Windows
Linux
MacOS
Solaris
ChromeOS
HP-UX
Symbian
Blackberry
iPhone iPod 
iPad OS
Windows UI
Gnome
KDE
MacOS UI
MS Office
OpenOffice
Corel Office
Adobe Systems
Oracle MySQL
IBM DB2
SQL Server
IBM Informix
SAP DB
Internet Explorer
Firefox Safari
ChromeOpera Photoshop
The GIMP
Google
AmazonFacebookPaypal
GamesVisual C++
Visual C#
Visual Basic
gcc
PHP Perl
DirectX
OpenGLOGRE 3D
Apache
NeroWinamp
Windows Media Player
Apple iPod Software
Tom Tom Garmin
Datacenter
57%
8%
18%
13%
4%
Custo Mensal
Servidores
Equipamentos de Rede
Distribuição de Energia
e Resfriamento
Energia
Outros
88% do custo está relacionado ao desempenho dos programas
Aquecimento Global
My contribution to the fight against global warming is 
C++’s efficiency: Just think if Google had to have twice 
as many server farms! Each uses as much energy as a 
small town. And it’s not just a factor of two… 
Efficiency is not just running fast or running bigger 
programs, it’s also running using less resources. 
Bjarne Stroustrup, Junho de 2011
“
”
Eficiência de C++
Eficiência de C++
The going word at Facebook is that ‘reasonably 
written C++ code just runs fast’, which underscores 
the enormous effort spent at optimizing PHP and 
Java code. 
Paradoxically, C++ code is more difficult to write 
than in other languages, but efficient code is a lot 
easier. 
Andrei Alexandrescu - Facebook
“
”
ANSI/ISO C++11
Criando um Programa C++
 Como criar um programa executável ?
Compilador
Linkeditor
0101101
0110100
1010110
1110011
1101010
0111010
0010101
1000101
0101010
0101001
0010101
1000101
0101010
0101001
0010101
1000101
0101010
0101001
Código
Fonte
Arquivo
Objeto
Código de
Inicialização
Código de
Bibliotecas
Programa
Executável
Programa em C++
Criando o Código Fonte
 A maioria dos compiladores da linguagem 
C++ são usados em conjunto com ambientes 
integrados (IDE)
 Editor de texto
 Compilador
 Linkeditor
 Depurador
 Ferramentas auxiliares
Criando o Código Fonte
 Na maior parte das IDEs é preciso criar um 
projeto antes de escrever o código fonte
 Crie um novo projeto
 Escolha o tipo de projeto: 
 Aplicação Win32
 Aplicação MFC 
 DLL
 Aplicação Console
Nos ambientes integrados a 
compilação e execução do 
programa consistem em 
clicar em um botão.
Criando o Código Fonte
 Alguns compiladores são disponibilizados 
apenas com o compilador e o linkeditor:
 Intel C++ no Windows 
 GNU C++ no Unix/Linux
 IBM XL C/C++ no AIX
 Versões gratuitas do Borland C++ e Digital Mars
 Neste caso o código fonte deve ser criado 
num editor de textos auxiliar, compilado e 
executado na linha de comando
Compilando no Linux
 A maior parte dos sistemas Linux usa o 
compilador GNU C++
 Compilação simples: 
g++ teste.cpp –o teste
 Execundo programa:
./teste
 Compilação de arquivos múltiplos:
g++ teste1.cpp teste2.cpp
Criando o Código Fonte
 O arquivo de código fonte deve ter uma 
extensão apropriada para ser identificado 
como um arquivo C++
exemplo.cpp
Nome do arquivo Extensão do arquivo
Um ponto
Criando o Código Fonte
 As extensões suportadas variam entre as 
diferentes implementações da linguagem 
C++:
Implementação do C++ Extensão do código fonte
Unix C, cc, cxx, c
GNU C++ C, cc, cxx, cpp, c++
Digital Mars cpp, cxx
Borland C++ cpp
Watcom cpp
Microsoft Visual C++ cpp, cxx, cc
Freestyle CodeWarrior cpp, cp, cc, cxx, c++
Conclusão
 O computador é uma máquina que pode ser 
programada para executar diferentes tarefas
 Um programa é uma seqüência de instruções 
fornecidas ao computador
 Um programa criado em linguagem de alto 
nível precisa ser traduzido para linguagem de 
máquina por um compilador
 Faremos programas na linguagem C++ com o 
ambiente integrado Microsoft Visual Studio

Outros materiais