Buscar

Introdução C++

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 24 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 24 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 24 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

16/09/2014
16/09/2014
1
LÓGICA DE PROGRAMAÇÃO
Introdução
LÓGICA DE PROGRAMAÇÃO
Prof. Msc. Luan Carlos Nesi
luan_nesi@uniritter.edu.br
16/09/2014
2
LÓGICA DE PROGRAMAÇÃO
Livros
SCHILDT, Herbert. C : completo e total. 3. ed. São 
Paulo: Makron, 1996.
STROUSTRUP, Bjarne. A linguagem de programação 
C++. Porto Alegre: Bookman, 2000. 
Deitel, H.m. C ++ Como Programar. Prentice Hall - Br. 
5ª edição, 2006.
16/09/2014
16/09/2014
3
LÓGICA DE PROGRAMAÇÃO
CARACTERIZAÇÃO DA 
DISCIPLINA
16/09/2014
4
LÓGICA DE PROGRAMAÇÃO
Conhecendo a turma...
Você já teve algum contato com programação?
Que linguagem(ns)?
Já teve algum contato com C++?
16/09/2014
16/09/2014
5
LÓGICA DE PROGRAMAÇÃO
CONCEITOS BÁSICOS
16/09/2014
6
LÓGICA DE PROGRAMAÇÃO
Arquitetura de Von Neumann
• Johann von Neumann (1907-1957), matemático húngaro, estabeleceu em 1945 os princípios de 
operação de um computador eletrônico digital.
• Arquitetura de Von Neumann
• A Arquitetura de Von Neumann baseia-se em três componentes principais:
• Memória
• Unidade de Controle
• Unidade de Processamento
16/09/2014
16/09/2014
7
LÓGICA DE PROGRAMAÇÃO
Arquitetura de Von Neumann
• Na memória são armazenados dados e programas (conjunto de instruções) que realizam 
determinados cálculos ou tarefas.
• A Unidade de Controle é um circuito lógico responsável pelo funcionamento da máquina, 
controlando o fluxo de instruções.
• A unidade de processamento realiza os cálculos de acordo com as instruções. Esta unidade conta 
basicamente com registradores e uma Unidade Lógico-Aritmética (ALU), onde são executadas as 
operações aritméticas.
16/09/2014
8
LÓGICA DE PROGRAMAÇÃO
Arquitetura de Von Neumann
Independentemente das diferenças no aspecto físico, praticamente todos os computadores podem ser 
considerados como divididos em seis unidades lógicas ou seções. São elas:
� Unidade de Entrada
� Unidade de Saída
� Unidade de Memória
� Unidade Aritmética e Lógica
� Unidade Central de Processamento
� Unidade de Memória Secundária
[Deitel 2006]
16/09/2014
16/09/2014
9
LÓGICA DE PROGRAMAÇÃO
Unidades Lógicas
• Unidade de entrada (input unit).
• Esta é a seção de "recepção" do computador. 
• Ela obtém as informações (dados e programas) dos vários dispositivos de entrada (input 
devices) e as coloca à disposição de outras unidades para que possam ser processadas.
• Teclado
• Mouse
• Joystick
• ...
16/09/2014
10
LÓGICA DE PROGRAMAÇÃO
Unidades Lógicas
• Unidade de saída (output unit).
• Esta é a seção de "expedição" do computador. 
• Ela leva as informações que foram processadas pelo computador e as envia aos vários 
dispositivos de saída (output devices) para torná-las disponíveis para o uso no ambiente externo 
ao computador. 
• Monitor
• Impressora
16/09/2014
16/09/2014
11
LÓGICA DE PROGRAMAÇÃO
Unidades Lógicas
• Unidade de memória (memory unit).
• Este é a seção de “armazenamento" do computador, com acesso rápido e capacidade 
relativamente baixa. 
• Ela conserva as informações que foram fornecidas através da unidade de entrada para que 
possam estar imediatamente disponíveis para o processamento quando se fizer necessário. 
• A unidade de memória também conserva as informações que já foram processadas até que 
sejam enviadas para os dispositivos de saída pela unidade de saída. 
• Frequentemente a unidade de memória é chamada de memória (memory), memória 
principal ou memória primária (primary memory).
16/09/2014
12
LÓGICA DE PROGRAMAÇÃO
Unidades Lógicas
• Unidade lógica e aritmética(arithmetic and logic unit, ALU).
• Esta é a seção de "fabricação" do computador. 
• Ela é a responsável pela realização dos cálculos como adição, subtração, multiplicação e divisão. 
• Ela contém os mecanismos de decisão que permitem ao computador, por exemplo, comparar 
dois itens da unidade de memória para determinar se são iguais ou não.
16/09/2014
16/09/2014
13
LÓGICA DE PROGRAMAÇÃO
Unidades Lógicas
• Unidade central de processamento, UCP (central processing unit, CPU).
• Esta é a seção "administrativa" do computador. 
• Ela é o coordenador do computador e o responsável pela supervisão do funcionamento das 
outras seções. 
• A CPU informa à unidade de entrada quando as informações devem ser lidas na unidade de 
memória, informa à ULA quando as informações da unidade de memória devem ser utilizadas 
em cálculos e informa à unidade de saída quando as informações devem ser enviadas da 
unidade de memória para determinados dispositivos de saída.
16/09/2014
14
LÓGICA DE PROGRAMAÇÃO
Unidades Lógicas
• Unidade de memória secundária (secondary storage unit).
• Esta é a seção de "armazenamento" de alta capacidade e de longo prazo do computador. 
• Os programas ou dados que não estiverem sendo usados ativamente por outras unidades são 
colocados normalmente em dispositivos de memória secundária (como discos) até que sejam 
outra vez necessários, possivelmente horas, dias, meses ou até mesmo anos mais tarde.
[Deitel 2006]
16/09/2014
16/09/2014
15
LÓGICA DE PROGRAMAÇÃO
Conceitos básicos
• Arquitetura de Von Neumann: ou arquitetura de fluxo de controle (resumindo...)
• A Memória armazena sempre um conjunto de instruções no formato conhecido como 
“linguagem de máquina”
• A CPU realiza ininterruptamente seu ciclo de operação
• Busca de instruções na memória
• Decodificação de instruções
• Execução de instruções
• Uso de “registradores internos” para manter o estado
• Local de memória a ler
• Valores temporários gerados
16/09/2014
16
LÓGICA DE PROGRAMAÇÃO
Conceitos básicos
• Outros recursos: placas de entrada e saída
• Componentes específicos para a solução de problemas em determinadas áreas
• Computação gráfica: “renderização”
• Implementação mais eficiente
• Liberação do processador para outras tarefas 
16/09/2014
16/09/2014
17
LÓGICA DE PROGRAMAÇÃO
Conceitos básicos
Unidade de controle
Unidade lógica e 
aritmética
16/09/2014
18
LÓGICA DE PROGRAMAÇÃO
Algoritmo
Afinal, o que é?
Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais 
pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço 
finita.
16/09/2014
16/09/2014
19
LÓGICA DE PROGRAMAÇÃO
Algoritmo
• Usado para a solução de problemas
• Descrito em diversos formalismos
• Sequência de processos encadeados
• Cooperação, comparação, melhorias
• Independente de linguagem
16/09/2014
20
LÓGICA DE PROGRAMAÇÃO
Algoritmo
Exemplo: leitura do livro “X”
� Ir até a biblioteca
� Acessar a lista de localização de títulos
� Procurar o título “X”
� Anotar o número da estante
� Caminhar até a estante
� Retirar o livro da estante
� Caminhar até o espaço de leitura
� Ler o livro
16/09/2014
16/09/2014
21
LÓGICA DE PROGRAMAÇÃO
Algoritmo
Exemplo: receita de pão
� Obter os ingredientes
� Misturar os ingredientes e fazer a massa
� Aguardar o crescimento da massa
� Colocar no forno por 35 minutos
� Retirar do forno
16/09/2014
22
LÓGICA DE PROGRAMAÇÃO
Algoritmo
Exemplo: receita de pão 2
� Obter farinha (2 xícaras)
� Obter ovos (2 ovos)
� Obter leite (1 xícara)
� Obter fermento (1 colher de sopa)
� Misturar os ingredientes e fazer a massa
� Aguardar o crescimento da massa
� Colocar no forno por 35 minutos
� Retirar do forno
16/09/2014
16/09/2014
23
LÓGICA DE PROGRAMAÇÃO
Algoritmo
Exemplo: � � �
��
�
Entrada: Receber o valor X.
Elevar X ao quadrado e guardar o número resultante (vamos chamaro resultado de Z).
Dividir Z por 3 e guardar o número resultante (vamos chamar o resultado de Y).
Saída: Imprimir o valor Y.
16/09/2014
24
LÓGICA DE PROGRAMAÇÃO
Algoritmo
Nave NPC de um jogo do gênero shooter
Considerando que ela só avança pra frente, possui um raio de visão e atira quando vê uma nave inimiga
Para cada instante de tempo em que a nave estiver viva
� Verifica se possui inimigo no raio de visão
� Se enxergou inimigo
� Atira em sua direção
� Se não enxergou inimigo
� Avança 1m para frente
16/09/2014
16/09/2014
25
LÓGICA DE PROGRAMAÇÃO
Linguagem de programação
Comandos
• Palavras-chave de uma linguagem associadas a implementações específicas
Variáveis
• Recursos de armazenamento de valores que podem ser modificados durante a execução de 
programas
Constantes
• Recursos para armazenamento de valores estáticos durante a execução de programas
16/09/2014
26
LÓGICA DE PROGRAMAÇÃO
Linguagem de programação
Programas
• Sequência de comandos de uma linguagem, em formato padronizado, que permite a 
implementação de algoritmos;
• Código Fonte: descrição original, em formato texto, feita pelo programador;
• Executável: descrição na linguagem de máquina do processador em que deve ser executado;
• Objeto: formato intermediário, usado para composição de código com diversos módulos.
16/09/2014
16/09/2014
27
LÓGICA DE PROGRAMAÇÃO
Linguagem de programação
Programas
Exemplo:
#include <iostream>
/*impressão de uma mensagem simples em C++*/
int main()
{
std::cout << “Ola mundo”\n”;
return 0;
}
16/09/2014
28
LÓGICA DE PROGRAMAÇÃO
Linguagem de programação
Tipos de dadosTipos de dadosTipos de dadosTipos de dados
• Numéricos
• Lógicos
• Texto
ExpressõesExpressõesExpressõesExpressões
• Conjunto de operadores e valores ou variáveis, utilizado para a implementação de cálculos
• proximoNumero = numeroAtual + 1
• if (idade > 18) maioridade = true;
16/09/2014
16/09/2014
29
LÓGICA DE PROGRAMAÇÃO
Linguagem de programação
Expressões
Exemplo: média
� Variável 1: valor da primeira prova (v1)
� Variável 2: valor da segunda prova (v2)
� Variável media > média aritmética das duas provas (v1 e v2)
� Operadores: atribuição soma e divisão
� media = (v1 + v2) / 2;
16/09/2014
30
LÓGICA DE PROGRAMAÇÃO
Linguagem de programação
Expressões
• Operadores
• Aritméticos
• Lógicos
• Atribuição
16/09/2014
16/09/2014
31
LÓGICA DE PROGRAMAÇÃO
Introdução
ALGORITMO
Exibir o resultado
C 
printf(“\nResultado: %d\n”,valor);
C++
cout<< endl<<“Resultado: “ <<valor<<endl;
PHP
echo(“\nResultado: “.$valor.”\n”);
PASCAL
write(“Resultado: “);
writeln(valor);
Python
print “\nResultado:”
print valor
ASSEMBLY
valor dw 00
mens db 13,10,“Resultado:”
res db 0000
db “$”
.......
;conversão de valor/ASCII
........
mov ah,9
mov dx, offset mens
Int 21h
LINGUAGEM DE PROGRAMAÇÃO LINGUAGEM DE MONTAGEM
16/09/2014
32
LÓGICA DE PROGRAMAÇÃO
// teste in C++
#include <iostream>
int main()
{
std::cout << "Bem vindo C++!\n";
return 0; 
}
LZ ø+A2L k .drectve b $ .debug$S „ † H B.CRT$XCU – ¢ @ 0À.text 
= À ý % P`.rdata = @0@.debug$S N N œ HB.text Ö ° †# ¨$ 
P`.text$x D% W% P`.xdata$x ` u% Õ% @@@.debug$S & '( HB.text
N Ÿ( í( 
) P`.debug$S ± ) È) HB.text * Ü) * P`.debug$S Ž * š* HB.text 5 
®* ã* ÷* P`.debug$S w 
H B-defaultlib:libcpd -defaultlib:LIBCD -defaultlib:OLDNAMES -editandcontinue -include:___pfnBkCheck J 
ptrdiff_t __exString exception
u size_t y _s__CatchableType ! wchar_t 6 _TypeDescriptor
J FILE f _PMFN p va_list@ + 
D + X 
\ k 
o ƒ P 
‡ P œ 
¯ §
³ § á 
å F š U‹ìƒì@SVW }À¹ ¸ÌÌÌÌó«h h è ƒÄ3À_^[ƒÄ@;ìè ‹å]à # 1 5 ! 
* , Bem vindo 
Exemplo.obj
33KB
Intermediate file
exemplo.exe
221KB
Aplicativo
exemplo.cpp
2KB
C++ Source file
16/09/2014
16/09/2014
33
LÓGICA DE PROGRAMAÇÃO
Linguagem de Máquina, Linguagem 
Assembly e Linguagens de Alto-nível
• Os programadores escrevem instruções em várias linguagens de programação, algumas entendidas 
diretamente pelo computador e outras que exigem passos intermediários de tradução.
• Centenas de linguagens computacionais estão atualmente em uso. Estas podem ser divididas em três 
tipos gerais:
• Linguagens de Máquina
• Linguagens Assembly
• Linguagens de Alto-nível
16/09/2014
34
LÓGICA DE PROGRAMAÇÃO
Linguagem de Máquina, Linguagem 
Assembly e Linguagens de Alto-nível
Linguagem de Máquina
� Qualquer computador pode entender apenas sua própria linguagem de máquina.
� É a "linguagem natural" de um determinado computador.
� Esta linguagem está relacionada intimamente com o projeto de hardware do computador.
� Geralmente as linguagens de máquina consistem em strings de números (reduzidos em última
análise a 1’s e 0’s) que dizem ao computador para realizar uma de suas operações mais elementares
de cada vez.
16/09/2014
16/09/2014
35
LÓGICA DE PROGRAMAÇÃO
Linguagem de Máquina, Linguagem 
Assembly e Linguagens de Alto-nível
Linguagem de Máquina
• As linguagens de máquina são dependentes de máquina (não-padronizadas, ou machine dependent)
� uma determinada linguagem de máquina só pode ser usada com um tipo de computador.
• As linguagens de máquina são complicadas para os humanos
� Ex. de programa em linguagem de máquina que adiciona o pagamento de horas extras ao salário 
base e armazena o resultado no pagamento bruto.
+1300042774
+1400593419
+1200274027
16/09/2014
36
LÓGICA DE PROGRAMAÇÃO
Linguagem de Máquina, Linguagem 
Assembly e Linguagens de Alto-nível
• Linguagem de Assembly
• Em vez de usar strings de números que os computadores podiam entender diretamente, os 
programadores começaram a usar abreviações parecidas com palavras em inglês para 
representar as operações elementares de um computador.
• Estas abreviações formaram a base das linguagens assembly. Foram desenvolvidos programas 
tradutores, chamados assemblers, para converter programas em linguagem assembly para 
linguagem de máquina na velocidade ditada pelo computador. 
16/09/2014
16/09/2014
37
LÓGICA DE PROGRAMAÇÃO
Linguagem de Máquina, Linguagem 
Assembly e Linguagens de Alto-nível
• Linguagem de Assembly
• O trecho de um programa em linguagem assembly a seguir também soma o pagamento de 
horas extras ao salário base e armazena o resultado em pagamento bruto, porém isto é feito de 
uma forma mais clara do que o programa equivalente em linguagem de máquina.
load base
add extra
store bruto
16/09/2014
38
LÓGICA DE PROGRAMAÇÃO
Linguagem de Máquina, Linguagem 
Assembly e Linguagens de Alto-nível
• Linguagem de Alto-nível
• Linguagens de assembly ainda exigiam muitas instruções para realizar mesmo as tarefas mais 
simples. Para acelerar o processo de programação, foram desenvolvidas linguagens de alto 
nível, nas quais podiam ser escritas instruções simples para realizar tarefas fundamentais.
• Os programas tradutores que convertem programas de linguagem de alto nível em linguagem 
de máquina são chamados compiladores.
• As linguagens de alto nível permitem aos programadores escreverem instruções que se parecem 
com o seu idioma comum e contêm as notações matemáticas normalmente usadas. 
• Um programa de folha de pagamento em uma linguagem de alto nível poderia conter uma 
instrução como esta: bruto = base + extra
16/09/2014
16/09/2014
39LÓGICA DE PROGRAMAÇÃO
Alto nível?
• Alguns autores classificam as linguagens em baixo-nível, médio-nível e alto-nível
• Linguagens de baixo-nível compreende, por exemplo, a linguagem Assembler
• Segundo Schildt (C Completo e Total), C e C++ são linguagens de “médio nível”, pois permite 
manipulação de bits, bytes e endereços
• Linguagem alto-nível, por exemplo Pascal e Fortran
16/09/2014
40
LÓGICA DE PROGRAMAÇÃO
Compiladores vs. Interpretadores
• Os termos compiladores e interpretadores referem-se à maneira como um programa é executado.
• São programas que operam sobre o código-fonte do seu programa:
• Um interpretador lê o código-fonte uma linha por vez, executando a instrução específica 
contida nessa linha;
• Um compilador lê o programa inteiro primeiro e converte-o em um código-objeto, que é uma 
tradução do código-fonte de forma que o computador possa executar diretamente.
16/09/2014
16/09/2014
41
LÓGICA DE PROGRAMAÇÃO
Compiladores vs. Interpretadores
Linguagens compiladasLinguagens compiladasLinguagens compiladasLinguagens compiladas
Pascal
C/C++
COBOL
Delphi
Fortran
Linguagens interpretadasLinguagens interpretadasLinguagens interpretadasLinguagens interpretadas
C#
Python
Lua
Ruby
PHP
Javascript
Java ( ! )( ! )( ! )( ! )
16/09/2014
42
LÓGICA DE PROGRAMAÇÃO
Compiladores vs. Interpretadores
Teoricamente, qualquer linguagem pode ser compilada ou interpretada e, por causa disso, há algumas 
linguagens que possuem ambas implementações.
(((( !!!! )))) O Java é compilado EEEE interpretado.
O que acontece é que realmente um programa Java passa por dois passos para sua execução:
1.1.1.1. CompilaçãoCompilaçãoCompilaçãoCompilação do código-fonte para bytecode, que seria um 'assembly' da máquina virtual Java;
2.2.2.2. InterpretaçãoInterpretaçãoInterpretaçãoInterpretação dos bytecodes pela máquina virtual, para que eles sejam executados pela
plataforma nativa.
16/09/2014
16/09/2014
43
LÓGICA DE PROGRAMAÇÃO
Como os programas 
funcionam? Editor Disco
Pré-
processador
Compilador
Linker
Carregador
Disco
Disco
Disco
Disco
CPU
Memória
Principal
Memória
Principal
Fase 1:
O programador cria o programa
no editor e o armazena em disco.
Fase 2:
O programa pré-processador 
processa o código.
Fase 3:
O compilador cria o código-objeto
e o armazena em disco.
Fase 4:
O linker vincula o código-objeto
com as bibliotecas, cria um arquivo executável
e o armazena em disco.
Fase 5:
O carregador coloca o programa
na memória
Fase 6:
A CPU pega cada instrução e a
executa, possivelmente armazenando
novos valores dos dados à medida
que executa o programa
...
...[Deitel 2006]
16/09/2014
44
LÓGICA DE PROGRAMAÇÃO
C e C++
• C++ é uma versão estendida e melhorada de C que é projetada para suportar Programação 
Orientada a Objetos
• Criada por Bjarne Stroustrup em 1985
• C foi criado por Dennis Ritchie em 1972
• C++ contém e suporta toda a linguagem C e mais um conjunto de extensões orientadas a objetos
• C++ é um superconjunto de C
16/09/2014
16/09/2014
45
LÓGICA DE PROGRAMAÇÃO
escrevendo um programa? 1-2
• Qual o problema o programa vai resolver?
• Entender o problema
• Pensar num algoritmo que solucione o problema (sequência de passos)
• Qual(is) a(s) entrada(s)?
• Qual(is) a(s) saída(s)?
• Quais os passos intermediários para chegar nas saídas desejadas a partir das entradas?
16/09/2014
46
LÓGICA DE PROGRAMAÇÃO
escrevendo um programa? 2-2
• Conhecer uma linguagem de programação
• Paradigma
• Sintaxe
• Escrever o algoritmo usando os comandos da linguagem de programação (usando um editor)
• Compilar e linkar (usando um compilador)
• Executar o programa 
16/09/2014
ANOTAR
ao enviar e-mail, sempre
coloque o seguinte
prefixo no assunto
Prof. Prof. Prof. Prof. MscMscMscMsc....
Luan Carlos NesiLuan Carlos NesiLuan Carlos NesiLuan Carlos Nesi
[[[[lplplplp----anoanoanoano----semestresemestresemestresemestre] ] ] ] –––– nomenomenomenome do do do do alunoalunoalunoaluno

Outros materiais