Baixe o app para aproveitar ainda mais
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
Compartilhar