Você está na página 1de 41

Introdução aos Computadores e Java

Prof. Bruno Nogueira


Sistemas computacionais
} O que é um computador? Do que ele é composto?
} O que se pode fazer com um computador?

“The Analytical Engine has no pretensions whatever to originate


anything. It can do whatever we know how to order it to perform. It
can follow analysis; but it has no power of anticipating any analytical
relations or truths. Its province is to assist us in making available what
we are already acquainted with.”
Ada Augusta, Countess of Lovelace (1815–1852)

2 Introdução aos Computadores


Sistemas computacionais
} Definição do Wikipedia: “Um computador é um
dispositivo de propósito geral que pode ser programado
para desenvolver operações aritméticas ou lógicas de
maneira automática.”
} Computadores modernos (computadores digitais) são
baseados na máquina de Turing

Alan Turing (1912 – 1954)

3 Introdução aos Computadores


Sistemas computacionais
} Sistemas computacionais são compostos por hardware e
software
} Hardware: máquina física

4 Introdução aos Computadores


Sistemas computacionais
} Um conjunto de instruções para o computador é
chamado de programa
} Todos os tipos de programas desenvolvidos para fornecer
instruções ao computador são, coletivamente, chamados
de software
} Nosso foco é o desenvolvimento de software, mas
precisamos ter uma noção de hardware e seu
funcionamento

5 Introdução aos Computadores


Dispositivos de entrada e saída
} Todos os computadores possuem dispositivos de entrada
e saída de dados
} Dispositivos de entrada: teclado, mouse, sensores, touchscreen,
...
} Dispositivos de saída: monitor, tela, impressora, ...

} São usados na interação com o usuário, para receber e


fornecer dados

6 Introdução aos Computadores


Processadores
} A unidade central de processamento (Central Processing
Unit – CPU) é responsável por executar as instruções de
um programa
} Mover números e dados de uma posição de memória para
outra
} Efetuar somas, subtrações e outras operações aritméticas
} São unidades extremamente rápidas
} O Core i7 980-X Extreme Edition da Intel atinge até 20 G
FLOPS (FLoating-points Operations Per Second, instruções por
segundo)
} O supercomputador da China Thina’s Tianhe-2, com um
desempenho de 33,86 petaflops, é o título de sistema mais
rápido do mundo (Junho de 2014)

7 Introdução aos Computadores


Processadores
} FLOPS: FLoating-point Operations Per Second
} Operações de ponto flutuante por segundo
} Ponto flutuante: codificação de números reais dentro das
limitações de precisão finita presente nos computadores

8 Introdução aos Computadores


Processadores

9 Introdução aos Computadores


Memória
} A memória armazena os dados a serem processados, bem
como os resultados intermediários e finais destes
processos
} Duas formas de memória: memória principal e
memória auxiliar ou secundária

Memória Principal Memória Secundária


10 Introdução aos Computadores
Memória
} Memória principal
} Armazena o programa atual e boa parte dos dados que este
programa está manipulando
} Dados armazenados em memória principal são voláteis, isso é,
desaparecem quando se reinicia ou desliga o computador
} Memória RAM (Random Access Memory)
} Memória secundária
} Existe mesmo quando um computador está desligado
(persistente)
} Mais barata que a memória principal, mas também mais lenta

11 Introdução aos Computadores


Bytes de memória
} Memória é medida em bytes
} 1 GB ≈ 1 bilhão de bytes de memória
} 1 TB ≈ 1 trilhão de bytes de memória

} Um byte, por convenção, contém 8 dígitos (bits) binários,


com valores 1 ou 0
} Por quê 1’s e 0’s?
} Fácil construir equipamentos elétricos que possuam apenas dois
estados estáveis
} Essa codificação é transparente ao programador
} Por quê 1 byte = 8 bits?
} 8 bits são suficientes para armazenar um caractere

12 Introdução aos Computadores


Endereços de memória
} A memória principal é composta por uma longa lista de
bytes numerados
} Cada um destes números é conhecido como endereço de um
byte
} Dados (números, caracteres, ...) são codificados em bits e
armazenados nesses bytes
} Quando o computador precisa recuperar estes dados, usa o
endereço do byte para encontrá-lo
} Quando um dado excede 8 bits, bytes adjacentes são utilizados
para armazená-lo

13 Introdução aos Computadores


Endereços de memória

14 Introdução aos Computadores


Programas
} Programas, como já vimos, são conjuntos de instruções
} Quando fornecemos dados a um programa e dizemos ao
computador para executar as instruções do programa,
estamos executando ou rodando o programa sobre os
dados

Dados Saída

15 Introdução aos Computadores


Programas
} Programas, como já vimos, são conjuntos de instruções
} Quando fornecemos dados a um programa e dizemos ao
computador para executar as instruções do programa,
estamos executando ou rodando o programa sobre os
dados

O que usualmente Computador é visto como


interessa ao programador algo que “ajuda” o programa

Dados Saída

16 Introdução aos Computadores


Linguagens de Programação
} Utilizamos, atualmente, linguagens de alto nível
} Relativamente simples de entender e usar
} Java,Visual Basic, C, C++, C#, COBOL, Python, Php, Ruby, ...
} Mais de 700 linguagens existentes!

17 Introdução aos Computadores


Linguagens de Programação
} Computadores não entendem as linguagens de alto nível
} Linguagem que entendem é chamada de linguagem de
máquina
} Linguagem de baixo nível
} Linguagem Assembly se assemelha com o que as máquinas
conseguem entender
} Programas em linguagens de alto nível precisam ser
traduzidos para linguagem de máquina
} Um outro programa, chamado compilador, é responsável por
essa tradução
} Após compilar um programa uma vez, este está apto a ser
executado quando quiser, sem necessidade de recompilação

18 Introdução aos Computadores


Processo de Compilação

Código fonte

Compilador

100111010101000100100110010110101
001000100100100100100111111001001
Código objeto 000110101001010101010100100100010
001110010010001001010101010001000
100010000100010001001011111011010
19 Introdução aos Computadores
Processo de Compilação
} Maioria das linguagens de programação precisam de
compiladores específicos para cada sistema operacional
ou arquitetura de computador
} Novas arquiteturas ou novos SO’s necessitam de novos
compiladores
} Compiladores são programas caros e difíceis de serem
desenvolvidos
} Java resolve este problema adotando uma “máquina
virtual”
} JVM – Java Virtual Machine
} Camada intermediária entre a linguagem de alto nível e a
linguagem de máquina

20 Introdução aos Computadores


Java Bytecode
} Compilador Java traduz a linguagem de alto nível para
uma linguagem chamada bytecode
} Bytecode não é a linguagem de máquina para nenhuma
máquina específica, mas é muito parecida
} A tradução do bytecode para linguagens de máquina é
relativamente simples de ser feita
} Tradução de bytecode para linguagem de máquina é feita pela
JVM
} Cada tipo de computador precisa de seu próprio tradutor (sua
própria JVM)
} Este processo de tradução é transparente para o programador

21 Introdução aos Computadores


Java Bytecode

22 Introdução aos Computadores


Java

“Java n. An island of Indonesia, 48,842 square miles in area, lying between the
Indian Ocean and the Java Sea.

java n. Informal. Brewed coffee. [From Java.]”

THE AMERICAN HERITAGE DICTIONARY OF THE ENGLISH LANGUAGE,


FOURTH EDITION

23 Introdução aos Computadores


Java
} Criada em 1992 por James Goslin, na Sun Enterprise
} Originalmente chamada de Oak
} Objetivo era o desenvolvimento de utensílios domésticos,
como TV’s e torradeiras
} Posteriormente, muito utilizada para o desenvolvimento de
aplicações para a internet
} Applets: aplicações que rodam em web browsers
} Inicialmente adotados pelo Netscape

24 Introdução aos Computadores


Antes de começarmos com Java...
} Primeiro, vamos definir um conceito básico que
utilizaremos muito ao longo do semestre: Classes
} É um conceito da orientação a objetos, onde todos os
possíveis atores (conceitos) são representados por classes
} Por enquanto, basta que saibamos que uma classe é um
“pedaço de código”
} Programas em Java são compostos, geralmente, por mais de
uma classe

25 Introdução aos Computadores


Primeiro programa em Java
} Vamos fazer um programa que:
} Peça ao usuário para digitar dois números inteiros
} Faça a soma destes dois números inteiros
} Exiba para o usuário o resultado desta soma
} Vamos precisar que o usuário interaja com o programa
} É importante lembrar que nem sempre o usuário sabe o que
fazer
} Logo, é necessário sempre dar instruções claras para ele

26 Introdução aos Computadores


Primeiro programa em Java

27 Introdução aos Computadores


Primeiro programa em Java
} A primeira linha

} Diz ao compilador que este programa usa a classe Scanner


} Essa classe está definida dentro de um pacote java.util, que
é a abreviação de “Java utility”
} Um pacote é uma biblioteca de classes que já foram
desenvolvidas anteriormente e podem ser reutilizadas

28 Introdução aos Computadores


Primeiro programa em Java
} As demais linhas definem a classe PrimeiroPrograma,
delimitado pelas chaves (começando em “{“ e terminando
em “}”)

Dizemos que o
que está entre
estas chaves é o
escopo da classe

29 Introdução aos Computadores


Primeiro programa em Java
} Dentro das chaves, temos uma ou mais partes chamadas
de métodos
} Também são delimitados por chaves
} Também é uma definição que vem de orientação a objetos.
Vermos mais detalhes adiante no semestre...
} Toda aplicação tem um método principal chamado main

...

} É sempre o primeiro método a ser chamado quando da


execução de uma aplicação
} Por enquanto, não se preocupem com as palavras public
static, apenas tenham em mente que são necessárias
30 Introdução aos Computadores
Primeiro programa em Java
} Todas as instruções, ou comandos, dentro de um método
definem uma tarefa
} Em Java, instruções são delimitadas pelo “;”
} Nossas primeiras instruções pedem a exibição de
conteúdo na tela

} Por enquanto, interpretem System.out.println como “exiba na


tela o que está dentro dos parênteses”
} Palavras a serem exibidas devem estar entra aspas

31 Introdução aos Computadores


Primeiro programa em Java
} A próxima linha

} Diz que n1, n2 e soma são nomes de variáveis


} Variáveis conseguem armazenar dados
} A parte int diz que esses dados armazenados são números
inteiros
} Dizemos que int é o tipo de dado que será armazenado
} Tipo de dado determina um conjunto de possíveis valores que podem
ser armazenados, bem como as operações que podem ser feitas com
esses valores
} Valores de um mesmo tipo de dado são armazenados em memória
em um mesmo formato

32 Introdução aos Computadores


Primeiro programa em Java
} As próximas linhas

} Tornam o programa apto a ler dados do teclado (linha 13)


} Lê o valor para a variável n1, digitada no teclado (linha 14)
} Lê o valor para a variável n2, digitada no teclado (linha 15)
} Os valores lidos são somados e exibidos ao usuário

33 Introdução aos Computadores


Sumarizando
} De maneira geral, programas em Java possuem a seguinte
estrutura

Arquivo fonte (.java)

Classe
Método 1
Instrução 1
Instrução 2
Método 2
Instrução 1

34 Introdução aos Computadores


Compilando um programa
} Para que um programa seja executado, ele precisa ser,
antes compilado
} Conforme discutimos, a compilação traduz o programa em
linguagem Java para o bytecode
} Durante a compilação, o compilador verifica se o seu programa
foi escrito corretamente
} Todas as linguagens possuem regras de “gramática”
} Ao conjunto de regras gramaticais de uma linguagem, dá-se o
nome de sintaxe da linguagem
} Logo, para um programa ser executado, a sua sintaxe precisa
estar correta

35 Introdução aos Computadores


Compilando um programa
} No nosso exemplo, escrevemos apenas uma classe
PrimeiroPrograma

} Em Java, cada classe é localizada em um arquivo cujo


nome tem a terminação “.java”
} O nome do arquivo necessariamente tem que ser o mesmo
nome da classe
} No nosso caso, nosso arquivo tem que ter o nome
PrimeiroPrograma.java
} Por convenção, nomes de classes em Java começam com letras
maiúsculas
} Qualquer editor de texto pode ser utilizado para escrever os
arquivos fonte “.java”

36 Introdução aos Computadores


Compilando um programa
} Para compilar um programa em Java, o sistema Java
distribuído pela Oracle para diversos SO’s pode ser
utilizado
} Comando javac aciona o compilador
} No nosso exemplo, para compilar a classe que criamos no
arquivo PrimeiroPrograma.java
$ javac PrimeiroPrograma.java

} Uma vez que se compila uma classe Java, a sua versão traduzida
(bytecode) é colocada em um arquivo com o nome da classe
seguida pela extensão “.class”
} No nosso caso, será criado o arquivo PrimeiroPrograma.class

37 Introdução aos Computadores


Executando um programa
} Um programa em Java pode envolver qualquer número de
classes
} No nosso exemplo, usamos duas classes fornecidas por Java,
Scanner e System
} Entretanto, somente uma classe “principal” pode ser
executada
} Essa classe contém o método principal “main”
} Este método tem, sempre, essa assinatura:

public static void main (String [] args)

38 Introdução aos Computadores


Executando um programa
} Para executar o programa Java, usa-se a diretiva java
seguido do nome da classe principal
} No nosso exemplo, o comando seria

$ java PrimeiroPrograma

} A chamada é sempre sem a extensão “.class”

39 Introdução aos Computadores


Algumas considerações: boas práticas
} No código fonte, por questões de legibilidade do código,
diferentes escopos ficam em diferentes indentações
} Geralmente, uma tabulação

40 Introdução aos Computadores


Algumas considerações: boas práticas
} Inícios de nomes
} Classes: letras maiúsculas
} Ex: PrimeiroPrograma
} Métodos: letras minúsculas
} Ex: main
} Devemos, sempre, usar nomes representativos
} Evitar nomes genéricos de classes e métodos
} Por exemplo, uma classe Xpto, faz o que?
} E um método multiplica( ), o que se espera que ele faça?

41 Introdução aos Computadores