Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade

Documentos relacionados
PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

INTRODUÇÃO A LINGUAGEM JAVA

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

Introdução à plataforma Java

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Desenvolvimento de Software I

Métodos de implementação de linguagens. Kellen Pinagé

AULA 1 INTRODUÇÃO AO JAVA

Construção de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.

Linguagens de Programação Classificação

FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO

Desenvolvimento de Aplicações Desktop

Aula teórica 7. Preparado por eng.tatiana Kovalenko

Revisão NT Editora e Figuramundo. Projeto Gráfico NT Editora. Editoração Eletrônica NT Editora e Figuramundo. Capa NT Editora

Puca Huachi Vaz Penna

Linguagens de máquina, linguagens simbólicas e linguagens de alto nível

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

EA876 - Introdução a Software de Sistema

Sistema Computacional

Arquitetura e Organização de Computadores

Instalação JDK 10/03/2017

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Instalação JDK. Joyce França. Professora de Ciência da Computação - IFNMG

Introdução à Computação

Algoritmos e Programação

Algoritmos e Programação

Infraestrutura de Hardware. Funcionamento de um Computador

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

CP Compiladores I Prof. Msc.. Carlos de Salles

Introdução à Programação de Computadores Fabricação Mecânica

Introdução à Computação: Máquinas Multiníveis

Computadores e Programação (DCC/UFRJ)

Instituto Superior de Engenharia de Lisboa

COMPILAÇÃO. Ricardo José Cabeça de Souza

09/05/2017. Técnicas Avançadas de Programação APRESENTAÇÃO

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Grupo de Usuários Java do Noroeste Paulista. Introdução à tecnologia Java

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

Montagem e manutenção de computadores

Nosso Primeiro Programa Java

PROGRAMAÇÃO I. Introdução

Estruturas de Sistemas Operacionais

Conceitos básicos sobre computadores (continuação)

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina

Introdução à Computação

Introdução à Computação

Linguagem Técnica I. Prof. Jonatas Bastos

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

16. Compilação no Linux

INTRODUÇÃO A LINGUAGEM JAVA

Laboratório 01 NetBeans

Linguagens de Programação

2. A influência do tamanho da palavra

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

Capítulo 1. Aspectos Preliminares

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Algoritmos e Programação

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

Disciplina: Arquitetura de Computadores

3. Linguagem de Programação C

CP Introdução à Informática Prof. Msc. Carlos de Salles

II.1 Conceitos Fundamentais. Uma delas é programar o =>

Conceitos de Linguagens de Programação

Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas

Introdução ao Fortran 90

Introdução à Informática Engenharia Agrícola

Programação Estruturada e OO Aula 1.2 Introdução a Paradigmas de Programação. Prof. Bruno Moreno

SSC510 Arquitetura de Computadores 1ª AULA

ORGANIZAÇÃO DE COMPUTADORES

AULA 01: APRESENTAÇÃO

Sistemas Operacionais

Compiladores. Introdução à Compiladores

Programação de Computadores

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Unidade Central de Processamento 2. Registradores

Arquitetura de Computadores. Conjunto de Instruções

INTRODUÇÃO. Prof. Msc. Luis Filipe Alves Pereira 2015

Fundamentos de Sistemas Operacionais

JAVA. Professor: Bruno Toledo

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

AULA1 Introdução a Microprocessadores gerais. Disciplina: Aplicações Avançadas de Microprocessadores (AAM)

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

INFORMÁTICA BÁSICA HARDWARE: COMPONENTES BÁSICOS E FUNCIONAMENTO.

Introdução a Programação de Jogos

Compiladores. Introdução

O AMBIENTE DE DESENVOLVIMENTO

Prof. Sandro Wambier

Aula 08 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Paradigmas de Programação

Universidade da Beira Interior Cursos: Engenharia Informática, Matemática /Informática e Ensino da Informática

Fabiano Moreira.

Transcrição:

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade Disciplina: PEOO Professor: Eberton da Silva Marinho e-mail: ebertonsm@gmail.com Data: 18/02/2019 Data de entrega: Exercícios Objetivos: - Apresentar conceitos básicos da computação - Introdução ao Java O que é um computador? O computador é um dispositivo capaz de realizar cálculos e tomar decisões lógicas a velocidades de milhões e até bilhões de vezes mais rápido que os seres humanos. Os computadores processam dados sob o controle de conjuntos de instruções chamadas programas de computador. Esses programas de computador orientam o computador por conjuntos ordenados de ações especificadas por pessoas chamadas programadores de computador. A ilustração 1 mostra como se dá a organização arquitetural dos computadores atuais. Ilustração 1. Organização da arquitetura de um computador moderno. CPU Memória ULA Entrada Saída Unidade de Entrada: Ela obtém as informações a partir de dispositivos de entrada e coloca essas informações à disposição de outras unidades de modo que possam ser processadas. Unidade de Saída: Ela pega as informações processadas pelo computador e coloca-as em vários dispositivos de saída de forma a tornar as informações disponíveis para serem utilizadas fora do computador. Unidade de Memória: É a seção de armazenamento de capacidade relativamente baixa e acesso rápido do computador. Ela retém informações inseridas na Unidade de Entrada, guarda as informações que serão reprocessadas pela CPU e as informações a serem disponibilizadas na Unidade de Saída. Comumente chamada de Memória Principal. Unidade Lógica e Aritmética (ULA): Responsável pelos cálculos lógicos e aritméticos do computador.

Unidade Central de Processamento (CPU): Coordenador do computador e responsável pela supervisão das operações das outras seções. A CPU diz à Unidade de Entrada quando as informações devem ser lidas na unidade de memória, à ULA quando as informações da Unidade de Memória devem ser utilizadas em cálculos e avisa a Unidade de Saída sobre quando enviar informações para certos dispositivos de saída. Linguagens de computação As linguagens de programação podem ser divididas em 3, se utilizarmos o nível de abstração das linguagens como critério de avaliação. Linguagem de máquina: Qualquer computador pode entender diretamente somente a sua própria linguagem de máquina, que é a linguagem natural de um computador específico. Ela é definida pelo projeto de hardware desse computador. Há várias famílias de microprocessadores: AMD FX; Phenom e Phenom II; Athlon 64; Sempron; Turion 64; Opteron; Core i7; Core i5; Core i3; Core 2 Duo; Core Duo; Atom; Pentium 4; Pentium D e Pentium EE; Pentium M; Celeron; Xeon; Qualcomm. E as arquiteturas mais conhecidas atualmente são a da Intel (x86 e x64), AMD e ARM. As linguagens de máquina consistem geralmente em sequências de números (0 s e 1 s) que instruem os computadores a realizar suas operações mais elementares uma de cada vez. A Figura 1 mostra um exemplo de código de máquina que exibe o texto Hello World! na cor verde na tela do computador. Figura 1. Código em linguagem de máquina que exibe o texto Hello World! na cor verde. Linguagem Assembly: São programas escritos com abreviações do inglês para representar operações elementares do computador. Programas tradutores chamados de montadores (Assembler) foram desenvolvidos para transformar tais programas Assembly em linguagem de máquina. Na Figura 2 vemos um exemplo de programa na linguagem Assembly que exibe o texto hello world na tela e na Figura 3 sua tradução para linguagem de máquina.

Figura 2. Programa na linguagem Assembly que exibe o texto hello world na tela. Figura 3. Programa em linguagem de máquina após tradução do código Assembly da Figura 2. Linguagens de alto nível: Ainda Assim, a linguagem Assembly se torna difícil para representar programas mais complexos. Para acelerar o processor de programação, foram desenvolvidas linguagens de alto nível em que instruções únicas poderiam ser escritas para realizar tarefas substanciais. Os programas tradutores que convertem linguagens de alto nível em linguagens de máquina são chamados de compiladores. Na Figura 4 é mostrado um exemplo de programa que mostra o texto Hello World na tela do computador escrito na linguagem C. Figura 4. Exemplo que mostra o texto Hello World escrito na linguagem C. Como cada código de programação escrito em uma linguagem de alto nível deve ser traduzido para a linguagem de máquina utilizando um programa chamado de compilador, um programa pode gerar diferentes códigos de máquina, um para cada arquitetura de máquina. Nesta perspectiva, as linguagens de programação podem ser classificadas como compiladas ou interpretadas. Compilar: Do latim compilare; reunir, ajuntar. Interpretar: Do latim interpretare; tornar claro o sentido de, explicar, traduzir, fazer juízo a respeito de. Linguagens Compiladas Quando a compilação do código se dá ainda em tempo de desenvolvimento, gerando o código de máquina antes da inicialização do programa. Linguagens como C e C++ realizam esse processo. Uma vantagem das linguagens compiladas é que elas costumam ser executadas mais rapidamente, já que a análise não precisa ser feita durante a execução, além do que, por analisar o código de forma integral, pode-se fazer otimizações. Algumas destas otimizações demoram para serem realizadas pelo compilador, mas como este trabalho de otimização não atrasará a execução ele pode ser feito confortavelmente.

Linguagens Interpretadas Quando a compilação se dá à medida em que o programa é executado, ou seja, em tempo de execução. Linguagens como Java, C# e Python são executadas desta forma. O programa é compilado para uma linguagem intermediária e em tempo de execução essa linguagem intermediária é transformada em código de máquina. Sendo assim, em tempo de execução, o código intermediário pode ser encarado como um "código fonte" que será compilado dinamicamente pelo interpretador da linguagem em código de máquina. Obviamente, ter este processo de compilação embutido na execução do programa tem um custo. E esse custo não é barato! Por isso, nos últimos anos muito foi investido para otimizar este processo, resultando em todas as técnicas de Just In Time Compiling e Ahead of Time Compiling que permitem as linguagens interpretadas alcançarem performance excepcionais. Finalmente, com base nestas definições, podemos dizer que C e C++ são linguagens compiladas. Enquanto Java, C# e Python, mesmo com as técnicas de JIT e AOT, são linguagens interpretadas, afinal, esta é uma definição da arquitetura da linguagem de programação. Uma vantagem de código interpretado é que ele pode ser executado em várias plataformas sem a necessidade do usuário recompilar o código para a arquitetura específica do processador onde o programa será executado. Introdução ao Java Características Orientada à Objetos: Java é uma linguagem puramente orientada à Objetos pois, com exceção de seus tipos primitivos de dados, tudo em Java são classes ou instâncias de uma classe. Java possui mecanismos de abstração, encapsulamento e hereditariedade. Ambiente de desenvolvimento composto pelo compilador, interpretador, gerador de documentação e etc. Independente de Plataforma: Os programas em Java são compilados para uma forma intermediária de código denominada bytecodes que utiliza instruções e tipos primitivos de tamanho fixo e um conjunto de bibliotecas de classe padronizadas. Os bytecodes é uma linguagem intermediária destinada a plataforma Java Virtual Machine (JVM), um interpretador de bytecodes. Desde que a JVM esteja disponível para uma determinada plataforma, o programa Java será executado. Ambiente de execução que pode ser qualquer máquina que possua Java Runtime Environment (JRE) instalado, uma máquina virtual Java (JVM); Independente de plataforma; Sem Ponteiros: Java não possui manipulação direta de ponteiros, ou seja, não se pode manipular diretamente endereços de memória e não exige que o programador crie ou destrua alocações de memória para os objetos. A JVM possui um mecanismo automático de gerenciamento de memória conhecido como garbage collector, que recupera a memória para objetos não referenciados pelo programa. Performance: Java foi projetado para ser compacto, independente de plataforma e para utilização em rede. Por ser uma linguagem interpretada, foram desenvolvidos mecanismos que otimizam a interpretação, tradução e execução do programa em tempo de execução (Just in Time). Segurança: Devido a aplicação Java ser executada na JVM e não haver a manipulação direta de endereçamentos de memória, Java se torna uma linguagem segura para criação de

aplicações. A JVM gerencia todo o processo de criação e liberação de memória para aplicações e não permite que uma interfira diretamente na outra, a não ser através de bibliotecas específicas para comunicação de dados. Permite Multithreading: Java oferece recursos para o desenvolvimento de aplicações capazes de executar rotinas concorrentemente e dispõe de elementos para a sincronização destas várias rotinas. Cada um destes fluxos de execução é o que se denomina thread, um importante recurso de programação de aplicações mais sofisticadas. Histórico A linguagem de programação Java foi criada em 1991 por James Gosling. Inicialmente a linguagem iria chamar-se Oak (Carvalho) em referência a árvore que era visível pela janela de James Gosling. A mudança de nome ocorreu pois já existia uma linguagem de programação com este nome, então a linguagem foi rebatizada para Java. Bibliotecas de classe Java Os programas Java consistem em partes chamadas classes, e estas possuem métodos que realizam tarefas e podem retornar informações ao completarem suas tarefas. Você pode programar cada pedaço parar formar um programa Java. Porém, é muito comum utilizarmos código que não foi criado por nós, seja ele fornecido na própria instalação Java, seja ele disponibilizado por terceiros. A esse conjunto de código damos o nome de biblioteca de classes ou em inglês Application Programing Interface (API). Realmente há duas partes a se aprender no mundo Java, aprender a própria linguagem de modo que você possa programar suas próprias classes, aprender a utilizar as classes das bibliotecas disponíveis no kit de desenvolvimento Java (Java Development Kit - JDK). A Figura 5 mostra o esquema de criação de um projeto Java. Figura 5. Fases de Execução de um Programa Java. Edição Compilação Interpretação Execução Edição: Quando o programa está sendo criado pelo programador a fim de resolver algum problema. Implementamos toda a lógica de negócio no arquivo com extensão.java. Compilação: Um tradutor transforma o programa com extensão.java para um arquivo de bytecodes com extensão.class. Antes de fazer a tradução, o compilador verifica a sintaxe e semântica do código a fim de encontrar erros no programa. Se houver um erro grave, o tradutor não gera o.class e avisa sobre o erro ao programador. Interpretação: A JVM interpreta os bytecode do arquivo.class e gera o código de máquina para ser executado na máquina corrente. Execução: A JVM e fazer com que o programa seja devidamente executado pela máquina.

Dica: Evite reinventar a roda. Utilize partes existente criadas para resolver problemas a seu favor. Isso se chama reutilização de código. Dica: Erros em tempo de compilação ou execução são comuns, sejam eles que causem a não execução ou interrupção do programa, sejam eles lógicos. Os últimos são bem mais difíceis de identificar. Dica: Escreva programas em Java de maneira simples e direta. Máquina Virtual Java Java Virtual Machine A máquina virtual java (JVM) é uma máquina imaginária que emula uma aplicação em uma máquina real. É a JVM que permite a portabilidade do código Java, isto ocorre porque todo código Java é compilada para um formato intermediário, bytecode, este formato é então interpretado pela JVM. Cada Sistema Operacional que tenha uma JVM instalada pode executar o código Java. Coletor de Lixo Garbage Collection Em muitas das linguagens de programação, inclusive C e C++, a responsabilidade pela liberação do espaço que não mais será utilizado é do programador nem sempre é fácil gerenciar o que está e o que não está sendo utilizado. A má gerência da memória ocasiona muitas vezes o estouro de pilha (stack overflow) entre outros problemas. Na linguagem de programação Java a responsabilidade pela gerência da memória é do Coletor de lixo (Garbage Collector). JRE e JDK JRE: O Java Runtime Environment contém tudo aquilo que um usuário comum precisa para executar uma aplicação Java (JVM e bibliotecas), como o próprio nome diz é o Ambiente de execução Java ; JDK: O Java Development Kit é composto pelo JRE e um conjunto de ferramentas úteis ao desenvolvedor Java. Exercícios Os computadores processam dados sob o controle de conjuntos de instruções chamados de. As seis unidades lógica-chave do computador são:. Podemos classificar as linguagens de programação em três tipos, levando em consideração o nível de abstração. Quais são elas e quais as características de cada uma?. Os programas que traduzem programas de linguagem de alto nível para linguagem de máquina são chamados de. Os programas fonte Java terminam com a extensão. Quando um programa Java é compilado, é gerado um arquivo com a extensão.

Porque você poderia querer escrever um programa em uma linguagem independente de máquina em vez de uma que dependa da máquina? Por que uma linguagem dependente de máquina talvez fosse mais apropriada para escrever certos tipos de programas?. Que tipo de linguagem de computador utiliza abreviações semelhantes ao inglês para instruções de linguagem de máquina?. Explique como se dá o fluxo de informação no computador explicando o que cada item de arquitetura faz e para que serve..