Think Java 2nd Ed.
o objetivo deste livro é ensinar você a pensar como um cientista da computação.Esta maneira de pensar combina algumas das melhores características da matemática, engenharia e ciência natural.Como matemáticos, cientistas da computação usam linguagens formais para denotar ideias-especificamente, computações.Como engenheiros, eles projetam coisas, montando componentes em sistemas e avaliando trade-offs entre alternativas.E como os cientistas, eles observam o comportamento de sistemas complexos, formam hipóteses e testam previsões.Uma habilidade importante para um cientista da computação é o problema .solving.It envolve a capacidade de formular problemas, pensar criativamente sobre soluções, e expressar soluções claramente e accurately.As acontece que o processo de aprender a programar computadores é uma excelente oportunidade para desenvolver habilidades de resolução de problemas.Em um nível, você estará aprendendo a escrever programas Java, uma habilidade útil por si só.Mas em outro nível, você vai usar a programação como um meio para um end.As se avançarmos, esse fim tornar-se-á mais claro.O que é um computador?Quando as pessoas ouvem a palavra computador, muitas vezes pensam em um desktop ou um laptop.Não surpreendentemente, a busca por” computador ” no Google Images (https://images.google.com/) exibe linhas e linhas deste tipo de máquinas.No entanto, em um sentido mais geral, um computador pode ser qualquer tipo de dispositivo que armazena e processa dados.
Dictionary.com define um computador como ” um dispositivo eletrônico programável projetado para aceitar dados, executar operações matemáticas e lógicas prescritas em alta velocidade, e exibir os resultados dessas operações.Mainframes, desktop e laptop Computadores, tablets e smartphones são alguns dos diferentes tipos de computadores.”
cada tipo de computador tem seu próprio projeto único, mas internamente todos compartilham o mesmo tipo de hardware.Os dois componentes de hardware mais importantes são processadores (ou CPUs) que realizam cálculos simples e memória (ou RAM) que armazenam temporariamente informações.A figura 1.1 mostra como são estes componentes.
figura 1.1: processador de exemplo e hardware de memória.
os usuários geralmente vêem e interagem com touchscreens, Teclados e monitores, mas são os processadores e a memória que realizam a computação real.Hoje em dia é bastante padrão, mesmo para um smartphone, ter pelo menos oito processadores e quatro gigabytes (quatro bilhões de células) de memória.O Que É A Programação?
um programa é uma sequência de instruções que especifica como executar uma computação em hardware de computador.A computação pode ser algo matemático, como resolver um sistema de equações ou encontrar as raízes de um polinômio.Também pode ser uma computação simbólica, como procurar e substituir texto em um documento ou (estranhamente o suficiente) compilar um programa.
os detalhes parecem diferentes em diferentes línguas, mas algumas instruções básicas aparecem em quase todas as línguas:
entrada: Obter Dados do teclado, um arquivo, um sensor, ou algum outro dispositivo. saída: exibir dados no ecrã, ou enviar dados para um ficheiro ou outro dispositivo. matemática: executar operações matemáticas básicas como adição e divisão. decisão: verificar determinadas condições e executar o código apropriado. repeticao: Executar uma ação repetidamente, geralmente com alguma variação. Acredites ou não, é praticamente tudo o que há.Todos os programas que já usou, por mais complicados que sejam, são feitos de pequenas instruções que se parecem muito com these.So você pode pensar na programação como o processo de quebrar uma tarefa grande e complexa em sub-tarefas menores e menores.O processo continua até que as sub-tarefas sejam simples o suficiente para serem realizadas com os circuitos eletrônicos fornecidos pelo hardware.
1.3 o programa Hello World
tradicionalmente, o primeiro programa que você escreve quando aprende uma nova linguagem de programação é chamado de programa “Hello World”.Tudo o que faz é transmitir as palavras Olá, Mundo! para a screen.In Java, parece-se com isto:
quando este programa é executado, ele exibe o seguinte:
Olá, Mundo!
Notice that the output does not include the quotation marks.Os programas Java são compostos de definições de classe e método, e os métodos são compostos de afirmações.Uma declaração é uma linha de código que executa uma ação básica.No programa Hello World, esta linha é uma declaração de impressão que mostra uma mensagem para o utilizador:
sistema.as.println (“Hello, World!”);
System.out.println
mostra os resultados no ecrã; o nome println
significa “linha de impressão”.Confusamente, a impressão pode significar tanto ” Mostrar no ecrã “como”enviar para a impressora”. neste livro, vamos tentar dizer” mostrar ” quando queremos dizer saída para o ecrã.Como a maioria das declarações, a declaração de impressão termina com um ponto e vírgula (;
).
Java é “sensível a maiúsculas”, o que significa que maiúsculas e minúsculas não são as mesmas.No programa Hello World, System
tem que começar com uma letra maiúscula; system
e SYSTEM
não vai funcionar.
a method is a named sequence of statements.Este programa define um método chamado main
:
public static void main(String args)
o nome e O formato de main
é especial: quando o programa é executado, ele começa a primeira instrução em main
e termina quando termina a última instrução.Mais tarde, você verá programas que definem mais de um método.
este programa define uma classe chamada Hello
.Por enquanto, uma classe é uma coleção de métodos; teremos mais a dizer sobre isto mais tarde.Você pode dar a uma classe qualquer nome que você gosta, mas é convencional começar com uma letra maiúscula.O nome da classe tem de corresponder ao nome do ficheiro em que está, por isso esta classe tem de estar num ficheiro chamado Hello.hipoteca.
Java usa Chavetas ({
e }
) para agrupar coisas together.In Olá.java, os suspensórios mais exteriores contêm a definição de classe, e os suspensórios internos contêm a definição do método.
a linha que começa com duas barras (//
) é um comentário, que é um pouco de texto Em inglês que explica o código.Quando Java vê //
, ignora tudo de lá até o fim da linha.Os comentários não têm efeito na execução do programa, mas tornam mais fácil para outros programadores (e seu eu futuro) entender o que você queria fazer.
1.4 compilar programas Java
a linguagem de programação que você aprenderá neste livro é Java, que é uma linguagem de alto nível.Outras linguagens de alto nível que você pode ter ouvido incluem Python, C E C++, PHP, Ruby e JavaScript.
Antes de poderem ser executados, os programas em línguas de alto nível têm de ser traduzidos para uma linguagem de baixo nível, também chamada de “linguagem de máquina”.Esta tradução leva algum tempo, o que é uma pequena desvantagem de línguas de alto nível.Mas as línguas de alto nível têm duas grandes vantagens:
- é muito mais fácil de programar em uma linguagem de alto nível.Programas levam menos tempo para escrever, eles são mais curtos e mais fáceis de ler, e eles são mais propensos a estar correto.
- as línguas de alto nível são portáteis, o que significa que podem funcionar em diferentes tipos de computadores com poucas ou nenhumas modificações.Programas de baixo nível podem ser executados em apenas um tipo de computador.
Dois tipos de programas de traduzir linguagens de alto nível para nível baixo idiomas: interpretadores e compiladores.Um interpretador lê um alto nível de programa e executa-lo, o que significa que ele faz o que o programa diz.Ele processa o programa um pouco de cada vez, alternadamente linhas de leitura e realização de cálculos.A figura 1.2 mostra a estrutura de um intérprete.
figura 1.2: como as linguagens interpretadas são executadas.
em contraste, um compilador lê todo o programa e traduz-lo completamente antes do programa começar a correr.O programa de alto nível é chamado de código fonte.O programa traduzido é chamado de código objeto, ou o executável.Uma vez que um programa é compilado, você pode executá-lo repetidamente sem mais Tradução da fonte code.As um resultado, programas compilados muitas vezes executar mais rápido do que programas interpretados.
Note that object code, as a low-level language, is not portable.Você não pode executar um executável compilado para Windows laptop em um telefone Android, por exemplo.Para executar um programa em diferentes tipos de máquinas, ele deve ser compilado várias vezes.Pode ser difícil para escrever o código-fonte que compila e executa corretamente em diferentes tipos de máquinas.
para abordar esta questão, Java é compilada e interpretada.Em vez de traduzir o código fonte diretamente em um executável, o compilador Java gera código para uma máquina virtual.Esta máquina “imaginária” tem a funcionalidade comum aos desktops, laptops, tablets, telefones, etc.Sua linguagem, chamada de código Byte Java, parece um código objeto e é fácil e rápido de interpretar.
como resultado, é possível compilar um programa Java em uma máquina, transferir o código byte para outra máquina, e executar o código byte nessa outra máquina.A figura 1.3 mostra as etapas do processo de desenvolvimento.O compilador Java é um programa chamado javac.It traduz .java files into .class files that store the resulting byte code.O interpretador Java é um outro programa, chamado java, que é abreviado para “Java Virtual Machine” (JVM).
Figura 1.3: O processo de compilar e executar um programa Java.
o programador escreve código fonte no ficheiro Hello.java e usa javac para compilá-lo.Se não houver erros, o compilador grava o código byte no arquivo Hello.class.To execute o programa, o programador usa java para interpretar o código byte.O resultado do programa é então exibido na tela.Embora possa parecer complicado, estes passos são automatizados para você na maioria dos ambientes de desenvolvimento.Normalmente, você só tem que pressionar um botão ou digitar um único comando para compilar e interpretar o seu programa.Por outro lado, é importante saber que passos estão acontecendo no fundo, então se algo correr mal você pode descobrir o que é.
1, 5 exibindo duas mensagens
você pode colocar quantas afirmações quiser no método main
.Por exemplo, para mostrar mais de uma linha de saída:
como este exemplo também mostra, você pode colocar comentários no final de uma linha, bem como em linhas Todas por si mesmas.
frases que aparecem entre aspas são chamadas strings, porque elas contêm uma sequência de caracteres presos em memória.Os caracteres podem ser letras, números, marcas de pontuação, símbolos, espaços, tabs, etc.
System.out.println
adiciona um personagem especial, chamado de uma nova linha, que se move para o início da próxima linha.Se não quiser uma linha nova no final, pode usar print
em vez de println
:
neste exemplo, a primeira instrução não adiciona uma linha nova, de modo que o resultado aparece em uma única linha:
Goodbye, cruel world
Notice that there is a space at the end of the first string, which appears in the output just before the word cruel.
1.6 formatação do código fonte
no código fonte Java, alguns espaços são necessários.Por exemplo, você precisa de pelo menos um espaço entre as palavras, de modo que este programa não é legal:
publicclassGoodbye{ publicstaticvoidmain(String args) { System.as.print (“Goodbye,”); System.as.println (mundo cruel)”); }}
mas a maioria dos outros espaços são opcionais.Por exemplo, este programa é legal:
as linhas novas são opcionais, too.So nós poderíamos apenas escrever isto:
ainda funciona, mas o programa está ficando cada vez mais difícil de ler.As novas linhas e espaços são importantes para organizar visualmente o seu programa, tornando mais fácil compreender o programa e encontrar erros quando ocorrem.
muitos editores irão automaticamente formatar o código fonte com indentação consistente e quebras de linha.Por exemplo, em DrJava (ver Apêndice A. 1), poderá indentar o seu código seleccionando todo o texto (Ctrl+A) e carregando na tecla Tab.
organizações que fazem um monte de desenvolvimento de software geralmente têm diretrizes rígidas sobre como formatar o código fonte.Por exemplo, o Google publica seus padrões de codificação Java para uso em projetos de código aberto: https://google.github.io/styleguide/javaguide.html.
você provavelmente não vai entender essas diretrizes agora, porque eles se referem a recursos de linguagem que você ainda não viu.Mas você pode querer se referir a eles periodicamente enquanto você lê este livro.
1,7 usando sequências de Escape
é possível exibir múltiplas linhas de saída com apenas uma linha de código.Só tens de dizer ao Java onde pôr a linha.:
a saída é de duas linhas, cada uma terminando com um carácter newline:
Olá!Como vai?
cada \n
é uma sequência de escape, ou dois caracteres de código fonte que representam um único carácter.(A barra invertida permite-lhe escapar do texto para escrever caracteres especiais.) Notice there is no space between \n
and How
.Se você adicionar um espaço lá, haverá um espaço no início da segunda linha.
\n
nova linha \t
guia \"
aspas duplas \
barra invertida Tabela 1.1: Comum sequências de escape
Java tem um total de oito seqüências de escape, e os quatro mais comumente utilizados estão listados na Tabela 1.1.Por exemplo, para escrever aspas dentro de strings, você precisa escapar deles com uma barra invertida:
sistema.as.println (“ela disse \” Olá!para mim.”);
o resultado é O seguinte:
Ela disse: “Olá!”para mim.
1.8 O Que É Ciência Da Computação?
este livro omite intencionalmente alguns detalhes sobre a linguagem Java (como as outras seqüências de escape), porque nosso principal objetivo é ensiná-lo a pensar como um cientista da computação.Ser capaz de entender computação é muito mais valioso do que apenas aprender a escrever código.Se você está interessado em aprender mais sobre Java, a Oracle mantém um conjunto oficial de tutoriais em seu site (https://thinkjava.org/tutorial).O tutorial “Language Basics”, encontrado em” Learning the Java Language”, é um bom lugar para começar.
um dos aspectos mais interessantes dos programas de escrita é decidir como resolver um problema particular, especialmente quando existem várias soluções.Por exemplo, existem inúmeras maneiras de classificar uma lista de Números, e cada caminho tem o seu advantages.In para determinar qual é o melhor caminho para uma dada situação, precisamos de técnicas para descrever e analisar soluções formalmente.
um algoritmo é uma sequência de passos que especifica como resolver um problema.Alguns algoritmos são mais rápidos do que outros, e alguns usam menos espaço na memória do computador.A Ciência da computação é a ciência dos algoritmos, incluindo a sua descoberta e analysis.As você aprende a desenvolver algoritmos para problemas que você não resolveu antes, você vai aprender a pensar como um cientista da computação.
desenhar algoritmos e escrever código é difícil e propenso a erros.Por razões históricas, erros de programação são chamados bugs, e o processo de rastreá – los e corrigi-los é chamado debugging.As você aprende a depurar seus programas, você vai desenvolver novas habilidades de resolução de problemas.Você precisará pensar criativamente quando erros inesperados acontecem.Embora possa ser frustrante, a depuração é uma parte intelectualmente Rica, desafiadora e interessante do computador .science.In de certa forma, depurar é como um trabalho de detective.Você é confrontado com pistas, e você tem que inferir os processos e eventos que levaram aos resultados que você vê.Pensar em como corrigir programas e melhorar o seu desempenho às vezes até leva à descoberta de novos algoritmos.
1.9 programas de depuração
é uma boa ideia ler este livro em frente a um computador para que possa experimentar os exemplos à medida que vai.Você pode executar muitos dos exemplos diretamente na área de interações de DrJava (ver Apêndice A. 2).Mas se você colocar o código em um arquivo fonte, será mais fácil experimentar variações.
sempre que você está experimentando com uma nova funcionalidade, você também deve tentar cometer erros.Por exemplo, no programa Hello World, O Que Acontece se você deixar de fora uma das aspas?E se omitires ambos?E se soletrar println
errado?Este tipo de experiências ajudam-te a lembrar o que lês.Eles também ajudam com depuração, porque você aprende o que as mensagens de erro mean.It é melhor cometer erros agora e de propósito do que mais tarde e acidentalmente.
depuração é como uma ciência experimental: uma vez que você tem uma idéia sobre o que está errado, você modifica seu programa e tenta novamente.Se sua hipótese estava correta, então você pode prever o resultado da modificação, e você dá um passo mais perto de um programa de trabalho.Se a tua hipótese estava errada, tens de inventar uma nova.
programação e depuração devem andar de mãos dadas.Não basta escrever um monte de código e, em seguida, executar a depuração de tentativa e erro até que tudo funcione.Em vez disso, comece com um programa que faz alguma coisa e fazer pequenas modificações, debugging-los como você vai, até que o programa faz o que você quer.Dessa forma, você sempre terá um programa de trabalho, e os erros de isolamento será mais fácil.
um grande exemplo deste princípio é o sistema operacional Linux, que contém milhões de linhas de code.It começou como um programa simples que Linus Torvalds usou para explorar o chip Intel 80386.De acordo com Larry Greenfield no Linux Users’ Guide, “Um dos projetos anteriores de Linus foi um programa que iria mudar entre a impressão AAAA e BBB.Isso mais tarde evoluiu para Linux.”
finalmente, programação às vezes traz emoções fortes.Se você está lutando com um bug difícil, você pode se sentir irritado, desanimado, ou envergonhado.Lembre-se que você não está sozinho, e virtualmente todos os programadores tiveram experiências semelhantes.Não hesite em contactar um amigo e fazer perguntas!
1.10 vocabulário
ao longo do livro, tentamos definir cada termo a primeira vez que usamos it.At no final de cada capítulo, incluímos os novos Termos e suas definições por ordem de aparência.Se você passar algum tempo aprendendo este vocabulário, você terá um tempo mais fácil de ler os seguintes capítulos.Resolução de problemas: o processo de formular um problema, encontrar uma solução e expressar a solução. hardware: os componentes eletrônicos e mecânicos de um computador, tais como CPUs, RAM e Discos Rígidos. processador: Um chip de computador que executa instruções simples como aritmética básica e lógica. memória: circuitos que armazenam dados desde que o computador esteja ligado.Não deve ser confundido com dispositivos de armazenamento permanente como discos rígidos e flash. programa: uma sequência de instruções que especifica como executar tarefas em um computador.Também conhecido como”software”. programação: a aplicação da resolução de problemas para a criação de programas de computador executáveis. instrução: parte de um programa que especifica um passo de um algoritmo. declaração de impressão: uma declaração que faz com que o resultado seja exibido no ecrã. metodo: Uma sequência nomeada de afirmações. classe: por agora, uma coleção de métodos relacionados.(Você verá mais tarde que há muito mais para ele.) comentário: uma parte de um programa que contém informações sobre o programa, mas não TEM Efeito quando o programa é executado. linguagem de alto nível: uma linguagem de programação que é projetada para ser fácil para os seres humanos ler e escrever. linguagem de baixo nível: uma linguagem de programação que é projetado para ser fácil para um computador executar.Também chamado de “linguagem de máquina”. portátil: a capacidade de um programa para executar em mais de um tipo de computador. interpretar: Executar um programa em uma linguagem de alto nível, traduzindo-o uma linha de cada vez e executando imediatamente as instruções correspondentes. compile: para traduzir um programa em uma linguagem de alto nível para uma linguagem de baixo nível, tudo de uma vez, em preparação para a execução posterior. código fonte: UM programa em uma linguagem de alto nível, antes de ser compilado. código objeto: a saída do compilador, depois de traduzir o programa. executável: outro nome para o código objeto que está pronto para executar em hardware específico. máquina virtual: uma emulação de uma máquina real. O JVM permite que um computador execute programas Java. código byte: um tipo especial de código objeto usado para programas Java.O código Byte é semelhante ao código objeto, mas é portátil como uma linguagem de alto nível. string: a sequence of characters; the primary data type for text. newline: um personagem especial que significa o fim de uma linha de texto.Também conhecido como” fim de linha”,” fim de linha “(EOL), ou”quebra de linha”. sequência de escape: uma sequência de código que representa um carácter especial quando usado dentro de uma cadeia de caracteres. algoritmo: um procedimento ou fórmula para resolver um problema, com ou sem um computador. informatico: A abordagem científica e prática do cálculo e suas aplicações. erro: um erro num programa. depuração: o processo de encontrar e remover erros. No final de cada capítulo, incluímos exercícios que você pode fazer com as coisas que você aprendeu.Encorajamo-lo a tentar, pelo menos, todos os problemas.Você não pode aprender a programar apenas lendo sobre isso; você tem que praticar.Antes de poder compilar e executar programas Java, poderá ter de baixar e instalar algumas ferramentas.Existem muitas boas opções, mas recomendamos DrJava, que é um “ambiente de desenvolvimento integrado” (IDE) bem adequado para iniciantes.As instruções para começar estão no Apêndice A.
o código para este capítulo está no diretório ch01 de ThinkJavaCode2.Vês o page ?? para instruções sobre como baixar o repositório.Antes de iniciar os exercícios, recomendamos que você compile e execute os exemplos.
cientistas da computação têm o hábito irritante de usar palavras comuns em Inglês para significar algo diferente de seus significados comuns em inglês.Por exemplo, em inglês, afirmações e comentários são a mesma coisa, mas em programas eles são diferentes.
- em jargão de computador, Qual é a diferença entre uma declaração e um comentário? O que significa dizer que um programa é portátil?
- em Inglês comum, o que significa a palavra compilar? O que é um executável? Porque é que essa palavra é usada como substantivo?
a secção de vocabulário no final de cada capítulo destina-se a destacar palavras e frases que têm significados especiais na ciência da computação.Quando vires palavras familiares, não presumas que sabes o que significam!
Before you do anything else, find out how to compile and run a Java program.Alguns ambientes fornecem exemplos de programas semelhantes ao exemplo na Seção 1.3.
- Type in the Hello World program; then compile and run it.
- adicione uma declaração de impressão que mostra uma segunda mensagem após o Hello, World!.Diz algo espirituoso como, Como estás?.Compile e execute o programa novamente.Adicione um comentário ao programa (em qualquer lugar), recompile e execute novamente.O novo comentário não deve afetar o resultado.
Este exercício pode parecer trivial, mas é o ponto de partida para muitos dos programas que vai trabalhar.Para depurar, com confiança, você precisa ter confiança no seu ambiente de programação.
em alguns ambientes, é fácil perder o controle de qual programa está executando.Você pode encontrar-se tentando depurar um programa enquanto você está acidentalmente executando outro.Adicionar (e alterar) declarações de impressão é uma maneira simples de ter certeza de que o programa que você está olhando é o programa que você está executando.
é uma boa idéia cometer tantos erros quanto você possa pensar, de modo que você veja que mensagens de erro o compilador produz.Às vezes, o compilador diz-nos exactamente o que está errado, e tudo o que temos de fazer é corrigi-lo.Mas às vezes as mensagens de erro são enganosas.Ao longo do tempo você vai desenvolver um sentido para quando você pode confiar no compilador e quando você tem que descobrir as coisas por si mesmo.
começando com o programa Hello World, experimente cada um dos seguintes erros.Depois de fazer cada alteração, compilar o programa, ler a mensagem de erro (se houver uma), e em seguida corrigir o erro.Remova um dos dentes encaracolados de abertura.
main
, escreva mian
.static
.public
.System
.println
por Println
.println
por print
.