Baixe o app para aproveitar ainda mais
Prévia do material em texto
MANUAL DO CURSO DE LICENCIATURA EM GESTÃO DE SISTEMAS DE INFORMAÇÃO 1º Ano Disciplina: Programação I Código: ISCED1-GSI06 Total Horas/1o Semestre: Créditos (SNATCA): 5 Número de Temas: INSTITUTO SUPERIOR DE CIÊNCIAS E EDUCAÇÃO A DISTÂNCIA - ISCED ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I i Direitos de autor (copyright) Este manual é propriedade do Instituto Superior de Ciências e Educação a Distância (ISCED), e contém reservados todos os direitos. É proibida a duplicação ou reprodução parcial ou total deste manual, sob quaisquer formas ou por quaisquer meios (electrónicos, mecânico, gravação, fotocópia ou outros), sem permissão expressa da entidade editora (Instituto Superior de Ciências e Educação a Distância (ISCED). A não observância do acima estipulado o infractor é passível a aplicação de processos judiciais em vigor no País. Instituto Superior de Ciências e Educação a Distância (ISCED) Direção Académica Rua Dr. Almeida Lacerda, No 212 Ponta - Gêa Beira - Moçambique Telefone: +258 23 323501 Cel: +258 82 3055839 Fax: 23323501 E-mail: isced@isced.ac.mz Website: www.isced.ac.mz ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I ii Agradecimentos O Instituto Superior de Ciências e Educação a Distância (ISCED) e o autor do presente manual agradecem a colaboração dos seguintes indivíduos e instituições na elaboração deste manual: Pela Coordenação Pelo design Direção Académica do ISCED Direção de Qualidade e Avaliação do ISCED Financiamento e Logística Pela Revisão Instituto Africano de Promoção da Educação a Distância (IAPED) Adjelo Garfo, Licenciado em Informática. Programador. Elaborado Por: Solomone Rumhungwe (MSc. IT) ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I iii Índice Visão geral 1 Bem-vindo à Disciplina/Módulo de Programação I .......................................................... 1 Objectivos do Módulo....................................................................................................... 1 Quem deveria estudar este módulo ................................................................................. 1 Como está estruturado este módulo ................................................................................ 2 Ícones de actividade ......................................................................................................... 4 Habilidades de estudo ...................................................................................................... 4 Precisa de apoio? .............................................................................................................. 7 Tarefas (avaliação e auto-avaliação) ................................................................................ 8 Avaliação ........................................................................................................................... 9 TEMA I: FUNDAMENTOS BÁSICOS DE PROGRAMAÇÃO ................................................. 11 Unidade 1.1: Introdução à programação ........................................................................ 11 Unidade 1.2: Algoritmos ................................................................................................. 14 TEMA II: CONCEITOS E FUNDAMENTOS BÁSICOS DE PROGRAMAÇÃO JAVA ................ 22 Unidade 2.1: Tecnologia JAVA ........................................................................................ 22 Unidade 2.2: Introdução Prática ..................................................................................... 32 Exercícios de AUTO-AVALIAÇÃO (Com respostas): ......................................................... 35 Exercícios de AVALIAÇÃO: .............................................................................................. 37 TEMA III: TIPOS DE DADOS ............................................................................................. 38 Unidade 3.1: Tipos primitivos ......................................................................................... 39 Unidade 3.2: Operadores ................................................................................................ 41 Unidade 3.3: Caracteres especiais e palavras reservadas .............................................. 48 Exercícios de AUTO-AVALIAÇÃO (Com Respostas): ........................................................ 51 Exercícios de AVALIAÇÃO ................................................................................................ 53 TEMA IV: ESTRUTURAS DE CONTROLO ........................................................................... 56 Unidade 4.1: Estruturas de Controlo .............................................................................. 57 Exercícios de AUTO-AVALIAÇÃO (com respostas) .......................................................... 69 Exercícios de AVALIAÇÃO ................................................................................................ 70 ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I iv TEMA V: UMA INTRODUÇÃO ÀS ESTRUTURAS DE DADOS COMO ARRAY E MATRIZES (ARRAYS BIDIMENSIONAIS)............................................................................................. 74 Unidade 5.1: Array (Vector) ............................................................................................ 75 Exercícios de AUTO-AVALIAÇÃO (com respostas) .......................................................... 79 Exercícios de AVALIAÇÃO ................................................................................................ 80 TEMA VI: INTRODUÇÃO AO PARADIGMA DE PROGRAMAÇÃO ORIENTADA A OBJECTOS (POO) ............................................................................................................................... 83 Unidade 6.1: Objectos, Classes, Atributos e Métodos ................................................... 85 Unidade 6.2: Métodos .................................................................................................... 88 Exercícios de AUTO-AVALIAÇÃO (Com Respostas) ......................................................... 93 Exercícios de AVALIAÇÃO ................................................................................................ 95 TEMA VII: NETBEANS IDE ................................................................................................ 97 Unidade 7.1: NetBeans IDE ............................................................................................. 97 Exercícios ............................................................................................................. 103 TEMA VIII: ORIENTAÇÃO A OBJECTOS (CONTINUAÇÃO) .............................................. 104 Unidade 8.1: Modificadores de acesso e atributos de classe ...................................... 104 Unidade 8.2: Herança, Reescrita e Polimorfismo ......................................................... 107 Unidade 8.3: Pacotes (packages): ................................................................................. 123 Exercícios de AUTO-AVALIAÇÃO (Com Respostas) ....................................................... 126 Exercícios de AVALIAÇÃO .............................................................................................. 126 ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo:Programação I 1 Visão geral Bem-vindo à Disciplina/Módulo de Programação I Objectivos do Módulo Ao terminar o estudo deste módulo de Programação I deverá ser capaz de: Apresentar o domínio dos principais conceitos de Programação e suas aplicações. Desenvolver pequenos aplicativos em Java. Implementar algoritmos na resolução de casos práticos no contexto do curso frenquentado. Objectivos Específicos Definir os principais conceitos de programação, tais como os tipos de dados, variáveis, estruturas de controlo e de decisão, e paradigma de orientação a objectos; Analisar problemas, delinear e implementar algoritmos; Desenvolver pequenos programas em Java; Conhecer os fundamentos básicos da programação orientada a objectos. Quem deveria estudar este módulo Este módulo foi concebido para estudantes do 1º ano do curso de licenciatura em Gestão de Sistemas de Informação do ISCED. Poderá ocorrer, contudo, que haja leitores que queiram se actualizar e consolidar seus conhecimentos nessa disciplina, esses ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 2 serão bem-vindos, não sendo necessário para tal se inscrever. Mas poderá adquirir o manual. Como está estruturado este módulo Este módulo de Programação I, para estudantes do 1º ano do curso de Licenciatura em Gestão de Sistemas de Informação, à semelhança dos restantes do ISCED, está estruturado como se segue: Páginas introdutórias Um índice completo; Uma visão geral detalhada dos conteúdos do módulo, resumindo os aspectos-chave que você precisa conhecer para melhor estudar. Recomendamos vivamente que leia esta secção com atenção antes de começar o seu estudo, como componente de habilidades de estudos. Conteúdo desta Disciplina/Módulo Este módulo está estruturado em temas. Cada tema, por sua vez comporta certo número de unidades temáticas ou simplesmente unidades. Cada unidade temática se caracteriza por conter uma introdução, objectivos e conteúdos. No final de cada unidade temática ou do próprio tema, são incorporados antes o sumário, exercícios de auto-avaliação e só depois é que aparecem os exercícios de avaliação. Os exercícios de avaliação têm as seguintes características: puros exercícios teóricos/práticos, problemas não resolvidos e actividades práticas algumas incluíndo estudo de caso. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 3 Outros recursos A equipa dos académicos e pedagogos do ISCED, pensando em si, num cantinho recôndito deste nosso vasto Moçambique e cheio de dúvidas e limitações no seu processo de aprendizagem, apresenta uma lista de recursos didácticos adicionais ao seu módulo para que possas explorar. Para tal o ISCED disponibiliza na biblioteca do seu centro de recursos mais material de estudos relacionado ao seu curso como: livros e/ou módulos, CD, CD-ROM, DVD. Para além deste material físico ou electrónico disponível na biblioteca, pode ter acesso à Plataforma digital Moodle para alargar mais ainda as possibilidades dos seus estudos. Auto-avaliação e Tarefas de avaliação Tarefas de auto-avaliação para este módulo encontram-se no final de cada unidade temática e de cada tema. As tarefas dos exercícios de auto-avaliação apresentam duas características: primeiro apresentam exercícios resolvidos com detalhes. Segundo, exercícios que mostram apenas respostas. Tarefas de avaliação devem ser semelhantes às de auto-avaliação mas sem mostrar os passos e devem obedecer o grau crescente de dificuldades do processo de aprendizagem, umas a seguir a outras. Parte das tarefas de avaliação será objecto dos trabalhos de campo a serem entregues aos tutores/docentes para efeitos de correcção e subsequentemente nota. Também constará do exame do fim do módulo. Pelo que, caro estudante, fazer todos os exercícios de avaliação é uma grande vantagem. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 4 Comentários e sugestões Use este espaço para dar sugestões valiosas, sobre determinados aspectos, quer de natureza científica, quer de natureza didáctico- Pedagógica, etc, sobre como deveriam ser ou estar apresentadas. Pode ser que graças as suas observações que, em goso de confiança, classificamo-las de úteis, o próximo módulo venha a ser melhorado. Ícones de actividade Ao longo deste manual irá encontrar uma série de ícones nas margens das folhas. Estes ícones servem para identificar diferentes partes do processo de aprendizagem. Podem indicar uma parcela específica de texto, uma nova actividade ou tarefa, uma mudança de actividade, etc. Habilidades de estudo O principal objectivo deste campo é o de ensinar aprender a aprender. Aprender aprende-se. Durante a formação e desenvolvimento de competências, para facilitar a aprendizagem e alcançar melhores resultados, implicará empenho, dedicação e disciplina no estudo. Isto é, os bons resultados apenas se conseguem com estratégias eficientes e eficazes. Por isso é importante saber como, onde e quando estudar. Apresentamos algumas sugestões com as quais esperamos que caro estudante possa rentabilizar o tempo dedicado aos estudos, procedendo como se segue: 1º. Praticar a leitura. Aprender à distância exige alto domínio de leitura. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 5 2º. Fazer leitura diagonal aos conteúdos (leitura corrida). 3º. Voltar a fazer leitura, desta vez para a compreensão e assimilação crítica dos conteúdos (ESTUDAR). 4º. Fazer seminário (debate em grupos), para comprovar se a sua aprendizagem confere ou não com a dos colegas e com o padrão. 5º. Fazer TC (Trabalho de Campo), algumas actividades práticas ou as de estudo de caso se existirem. IMPORTANTE: Em observância ao triângulo modo-espaço-tempo, respectivamente como, onde e quando estudar. Como foi referido no início deste item, antes de organizar os seus momentos de estudo reflicta sobre o ambiente de estudo que seria ideal para si: estudo melhor em casa/biblioteca/café/ ou noutro lugar? Estudo melhor à noite/de manhã/de tarde/fins-de- semana/ao longo da semana? Estudo melhor com música/num sítio sossegado/num sítio barulhento!? Preciso de intervalo em cada 30 minutos, em cada hora, etc. É impossível estudar numa noite tudo o que devia ter sido estudado durante um determinado período de tempo; Deve estudar cada ponto da matéria em profundidade e passar só ao seguinte quando achar que já domina bem o anterior. Privilegia-se saber bem (com profundidade) o pouco que puder ler e estudar, que saber tudo superficialmente! Mas a melhor opção é juntar o útil ao agradável: Saber com profundidade todos conteúdos de cada tema, no módulo. Dica importante: não recomendamos estudar seguidamente por tempo superior a uma hora. Estudar por tempo de uma hora intercalado por 10 (dez) a 15 (quinze) minutos de descanso ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 6 (chama-se descanso à mudança de actividades). Ou seja, que durante o intervalo não se continuar a tratar dos mesmos assuntos das actividades obrigatórias. Uma longa exposição aos estudos ou ao trabalho intelectual obrigatório pode conduzir ao efeito contrário: baixar o rendimento da aprendizagem. Por que o estudante acumula um elevado volume de trabalho,em termos de estudos, em pouco tempo, criando interferência entre os conhecimentos, perde sequência lógica, por fim ao perceber que estuda tanto mas não aprende, cai em insegurança, depressão e desespero, por se achar injustamente incapaz! Não estude na última da hora; quando se trate de fazer alguma avaliação. Aprenda a ser estudante de facto (aquele que estuda sistematicamente), não estudar apenas para responder a questões de alguma avaliação, mas sim estude para a vida, sobre tudo, estude pensando na sua utilidade como futuro profissional, na área em que está a se formar. Organize na sua agenda um horário onde define a que horas e que matérias deve estudar durante a semana; Face ao tempo livre que resta, deve decidir como o utilizar produtivamente, decidindo quanto tempo será dedicado ao estudo e a outras actividades. É importante identificar as ideias principais de um texto, pois será uma necessidade para o estudo das diversas matérias que compõem o curso: A colocação de notas nas margens pode ajudar a estruturar a matéria de modo que seja mais fácil identificar as partes que está a estudar e pode escrever conclusões, exemplos, vantagens, ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 7 definições, datas, nomes, pode também utilizar a margem para colocar comentários seus relacionados com o que está a ler; A melhor altura para sublinhar é imediatamente a seguir à compreensão do texto e não depois de uma primeira leitura; Utilizar o dicionário sempre que surja um conceito cujo significado não conhece ou não lhe é familiar. Precisa de apoio? Caro estudante, temos a certeza que por uma ou por outra razão, o material de estudos impresso, lhe pode suscitar algumas dúvidas como falta de clareza, alguns erros de concordância, prováveis erros ortográficos, falta de clareza, fraca visibilidade, páginas trocadas ou invertidas, etc). Nestes casos, contacte os serviços de atendimento e apoio ao estudante do seu Centro de Recursos (CR), via telefone, sms, e-mail, se tiver tempo, escreva mesmo uma carta participando a preocupação. Uma das atribuições dos Gestores dos CR e seus assistentes (Pedagógico e Administrativo), é a de monitorar e garantir a sua aprendizagem com qualidade e sucesso. Dai a relevância da comunicação no Ensino a Distância (EAD), onde o recurso às TICs se torna incontornável: entre estudantes, estudante – Tutor, estudante – CR, etc. As sessões presenciais são um momento em que você caro estudante, tem a oportunidade de interagir fisicamente com staff do seu CR, com tutores ou com parte da equipa central do ISCED indigitada para acompanhar as suas sessões presenciais. Neste período pode apresentar dúvidas, tratar assuntos de natureza pedagógica e/ou administrativa. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 8 O estudo em grupo, que está estimado para ocupar cerca de 30% do tempo de estudos a distância, é de muita importância, na medida em que permite-lhe situar, em termos do grau de aprendizagem com relação aos outros colegas. Desta maneira ficará a saber se precisa de apoio ou de apoiar aos colegas. Desenvolver o hábito de debater assuntos relacionados com os conteúdos programáticos, constantes nos diferentes temas e unidades temáticas, no módulo. Tarefas (avaliação e auto-avaliação) O estudante deve realizar todas as tarefas (exercícios, actividades e autoavaliação), contudo nem todas deverão ser entregues, mas é importante que sejam realizadas. As tarefas devem ser entregues duas semanas antes das sessões presenciais seguintes. Para cada tarefa serão estabelecidos prazos de entrega, e o não cumprimento dos prazos de entrega, implica a não classificação do estudante. Tenha sempre presente que a nota dos trabalhos de campo conta e é decisiva para a admissão ao exame final da disciplina/módulo. Os trabalhos devem ser entregues ao Centro de Recursos (CR) e os mesmos devem ser dirigidos ao tutor/docente. Podem ser utilizadas diferentes fontes e materiais de pesquisa, contudo os mesmos devem ser devidamente referenciados, respeitando os direitos do autor. O plágio1 é uma violação do direito intelectual do (s) autor (es). Uma transcrição à letra de mais de 8 (oito) palavras do testo de um 1 Plágio - copiar ou assinar parcial ou totalmente uma obra literária, propriedade intelectual de outras pessoas, sem prévia autorização. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 9 autor, sem o citar é considerado plágio. A honestidade, humildade científica e o respeito pelos direitos autorais devem caracterizar a realização dos trabalhos e seu autor (estudante do ISCED). Avaliação Muitos perguntam: Com é possível avaliar estudantes à distância, estando eles fisicamente separados e muito distantes do docente/tutor!? Nós dissemos: Sim é muito possível, talvez seja uma avaliação mais fiável e consistente. Você será avaliado durante os estudos à distância que contam com um mínimo de 90% do total de tempo que precisa de estudar os conteúdos do seu módulo. Quando o tempo de contacto presencial conta com um máximo de 10%) do total de tempo do módulo. A avaliação do estudante consta de forma detalhada no regulamento de avaliação. Os trabalhos de campo por si realizados, durante estudos e aprendizagem no campo, pesam 25% e servem para a nota de frequência para ir aos exames. Os exames são realizados no final da cadeira/disciplina ou módulo e decorrem durante as sessões presenciais. Os exames pesam no mínimo 75%, o que adicionado aos 25% da média de frequência, determinam a nota final com a qual o estudante conclui a cadeira. A nota de 10 (dez) valores é a nota mínima de conclusão da cadeira. Nesta cadeira o estudante deverá realizar pelo menos 2 (dois) trabalhos e 1 (um) (exame). Algumas actividades práticas, relatórios e reflexões serão utilizadas como ferramentas de avaliação formativa. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 10 Durante a realização das avaliações, os estudantes devem ter em consideração a apresentação, a coerência textual, o grau de cientificidade, a forma de conclusão dos assuntos, as recomendações, a identificação das referências bibliográficas utilizadas, o respeito pelos direitos do autor, entre outros. Os objectivos e critérios de avaliação constam do Regulamento de Avaliação. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 11 TEMA I: FUNDAMENTOS BÁSICOS DE PROGRAMAÇÃO Unidade 1.1: Introdução à programação O que é Programação? O que são Linguagens de Programação? O que é Programação? Com a evolução da tecnologia, cada dia mais pessoas têm acesso a um computador, seja em casa, na escola, no trabalho. Quando usamos computadores, podemos fazer muitas coisas. Uma criança pode usar a Internet para passar uma mensagem, um estudante pode usar uma planilha eletrônica para calcular uma média ou quantos pontos precisa para ser aprovado em cada matéria, um cozinheiro pode guardar suas receitas em software como o Word ou em um produto especializado para receitas. E para alguns mais curiosos, surgem perguntas como: "como os computadores fazem isto?", "Será que posso fazer ou aprender?", "Como será um computador por dentro?". Todos os dias pela manhã programamo-nos para ir ao trabalho/escola/faculdade:acordar, escovar os dentes, tomar o banho, café e sair. De uma maneira simples, programar é criar uma série de instruções. No exemplo acima essa seria a nossa programação, o nosso conjunto de instruções. Embora a tecnologia esteja tão avançada, os computadores ainda não “pensam” exatamente, no sentido literal da palavra. Eles simplesmente executam o que lhes são ordenados, seja bom ou não. Aliás, para eles não existe bom ou ruim, eles simplesmente fazem, não importa o resultado do trabalho; A “magia” está na capacidade de processamento de um computador. O que um simples notebook pode fazer, em termos de cálculos e rapidez, é muito mais do que qualquer um ser humano da face da terra pode fazer ao longo de toda a sua vida. Resumindo, programar é dizer para o computador o que você quer, e ele simplesmente fará. É dar instruções ao computador para que ele execute alguma tarefa. Mas como dizer isso? Como se comunicar e dar instruções ao ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 12 computador? Através das linguagens de programação. O que são Linguagens de Programação? Podemos imaginar o computador como uma super calculadora, capaz de fazer cálculos muito mais rápidos do que nós, mas para isso devemos dizer para o computador o que deve ser calculado e como deve ser calculado. Diferentemente dos seres humanos, os computadores não têm capacidade de raciocínio e precisam de instruções exatas para tudo o que fazem. O que é óbvio para você, humano, certamente não é óbvio para uma máquina. E se quisermos que a máquina faça algo, precisamos de certa forma, "falar com ela". A função das linguagens de programação é exatamente essa, ou seja, servir de um meio de comunicação entre computadores e humanos. Existem dois tipos de linguagens de programação: as de baixo nível e as de alto nível. Os computadores interpretam tudo como números em base binária, ou seja, só entendem zero e um. As linguagens de baixo nível são interpretadas diretamente pelo computador, tendo um resultado rápido, porém é muito difícil e incômodo se trabalhar com elas. Exemplos de linguagens de baixo nível são a linguagem binária e a linguagem Assembly. Exemplo de código em Assembly: Como pode-se notar, é uma linguagem bastante complicada. Já as linguagens de alto nível são mais fáceis de se trabalhar e de entender, as ações são representadas por palavras de ordem (exemplo faça, imprima, etc) geralmente em inglês, foram feitos assim para facilitar a memorização e a lógica. Elas não são interpretadas diretamente pelo computador, sendo necessário traduzí-las para linguagem binária utilizando-se de um programa chamado compilador. Quando programamos em uma linguagem de programação de alto nível primeiramente criamos um arquivo de texto comum contendo ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 13 a lógica do programa, ou seja, é onde falamos ao computador como deve ser feito o que queremos. Este arquivo de texto é chamado de código-fonte, cada palavra de ordem dentro do código-fonte é chamada de instrução. Após criarmos o código-fonte devemos traduzir este arquivo para linguagem binária usando o compilador correspondente com a linguagem na qual estamos programando. O compilador irá gerar um segundo arquivo que chamamos de executável ou programa, este arquivo gerado é interpretado diretamente pelo computador. Exemplo de código em linguagem JAVA (alto nível): Atualmente existem muitas linguagens de programação disponíveis. Essas linguagens foram criadas com um certo propósito, para tratar de determinados tipos de problemas, por isso a escolha da mais apropriada depende dos diversos tipos de problemas/situações. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 14 Unidade 1.2: Algoritmos Algoritmo Constituição de um algoritmo Formas de representação de um Algoritmo Algoritmo Um algoritmo pode ser definido como uma sequência finita de passos (instruções) para resolver um determinado problema. Sempre que desenvolvemos um algoritmo estamos estabelecendo um padrão de comportamento que deverá ser seguido (uma norma de execução de ações) para alcançar o resultado de um problema. Exemplo: Como se pode ver, um algoritmo pode ser qualquer sequência de instruções. A que podem ver acima, a confeção de um bolo, é realizada por um ser humano. Para o desenvolvimento de um algoritmo eficiente é necessário obedecermos algumas premissas básicas no momento de sua construção: Definição: Os passos de um algoritmo devem ser bem definidos, objetivando a clareza e evitando ambiguidades. Finitude: Um algoritmo deve chegar ao seu fim após um número finito de ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 15 passos. Efetividade: Um algoritmo deve ser efetivo, ou seja, suas operações devem ser básicas o suficiente para que possam, em princípio, serem executadas de maneira exata e em um tempo finito. Entradas: Um algoritmo deve possuir zero ou mais entradas. Estas são insumos ou quantidades que são processados pelos algoritmos durante a execução de seus passos. Saídas: Um algoritmo deve possuir uma ou mais saídas. Elas representam o resultado do trabalhado realizado pelos algoritmos. Os algoritmos são capazes de realizar tarefas como: 1. Ler e escrever dados; 2. Avaliar expressões algébricas, relacionais e lógicas; 3. Tomar decisões com base nos resultados das expressões avaliadas; 4. Repetir um conjunto de ações de acordo com uma condição; O algoritmo 1, a baixo, é um exemplo simples de algoritmo (sem condições ou repetições) para troca de um pneu. No algoritmo 2 estão ilustradas as tarefas anteriormente mencionadas. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 16 Nas linhas de 2 a 4 pode-se observar a repetição de uma ação enquanto uma dada condição seja verdadeira, neste caso em específico, o algoritmo está repetindo a ação “esperar ônibus” enquanto a condição “ônibus não chega” permanecer verdadeira. Assim que essa condição se tornar falsa (quando o ônibus chegar) o algoritmo deixará de repetir a ação “esperar ônibus”, e irá executar a linha 5. Já nas linhas de 7 a 9, é possível observar um exemplo da execução (ou não execução) de uma ação com base na avaliação de uma expressão. Nesse trecho, o algoritmo avalia se a expressão “não tenho passagem” é verdadeira e em caso positivo, executaa acão “pegar dinheiro”. Caso a expressão “não tenho passagem” seja falsa (ou seja, a pessoa tem passagem) então o algoritmo irá ignorar a ação “pegar dinheiro” e irá executar a linha 10. Essas são as chamadas estruturas de controlo e serão estudadas com mais detalhes no Tema IV. CONSTITUIÇÃO DE UM ALGORITMO Um algortimo quando programado num computador é constituído pelo menos das 3 partes, sendo elas: 1. Entrada de dados; 2. Processamento de dados; 3. Saída de dados; ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 17 Na parte de entrada, são fornecidas as informações necessárias para que o algoritmo possa ser executado. Estas informações podem ser fornecidas no momento em que o programa está sendo executado ou podem estar embutidas dentro do mesmo. Na parte do processamento são avaliadas todas as expressões algébricas, relacionaise lógicas, assim como todas as estruturas de controlo existentes no algoritmo (condição e/ou repetição). Na parte de saída, todos os resultados do processamento (ou parte deles) são enviados para um ou mais dispositivos de saída, como: monitor, impressora, ou até mesmo a própria memória do computador. FORMAS DE REPREENTAÇÃO DE UM ALGORITMO Descrição narrativa Os algoritmos são expressos em linguagem natural (português, inglês, francês, espanhol, etc.). Sua principal desvantagem se encontra no fato da linguagem natural estar bem distante da linguagem utilizada pelos computadores. Logo, a tradução de uma para a outra se torna uma atividade bastante dispendiosa. Além disso, linguagens naturais são mais propensas a ambiguidades. Muitas vezes uma palavra pode ter vários significados, dependendo do contexto no qual são utilizadas. Em contrapartida, é bem mais fácil elaborar um algoritmo por meio de uma linguagem com a qual já temos uma certa familiaridade, do que através de linguagens que não são utilizadas com frequência no dia-a-dia. Vejamos a seguir um exemplo de algoritmo em descrição narrativa: Algoritmo para fritar um ovo: 1. Retire o ovo da geladeira. 2. Coloque a frigideira no fogo. 3. Coloque óleo na frigideira. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 18 4. Quebre ovo, separando a casca. 5. Ponha a clara e a gema na frigideira. 6. Espere um minuto. 7. Apague o fogo. 8. Retire o ovo da frigideira. Fluxograma Os fluxogramas são uma apresentação do algoritmo em formato gráfico. Cada ação ou situação é representada por uma caixa. Tomadas de decisões são indicadas por caixas especiais, possibilitando ao fluxo de ações tomar caminhos distintos. Fluxograma consiste em usar formas geométricas padronizadas para descrever os passos a serem executados pelos algoritmos. As formas mais comumente utilizadas em fluxogramas são as seguintes: ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 19 Exemplos de fluxogramas: Fluxograma de algoritmo para cálculo de media de dois números. Fluxograma de algoritmo assar pão. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 20 Analisando o ultimo exemplo: O início e o fim do algoritmo estão marcados com uma figura elíptica; As ações a serem executadas estão em retângulos; Sendo que a estrutura de controlo condicional que está em losângolo indica duas possibilidades de proseguimento do algoritmo, uma para o caso da expressão avaliada (condição) ser verdadeira e outra para o caso de ser falsa. No exemplo da última figura, a primeira ação é executada “abrir forno” e então a segunda expressão é avaliada “fogo acesso?” como verdadeira ou falsa; caso seja verdadeira, o algoritmo prossegue para a ação à esquerda “botar lenha”; caso seja falsa, o algoritmo executa a ação à direita “acender fogo”. Em seguida, para qualquer um dos casos, a próxima ação a ser executada é “assar pão”. Pseudocodigo O pseudocódigo é uma maneira intermediária entre a linguagem natural e uma linguagem de programação de representar um algoritmo. Ela utiliza um conjunto restrito depalavras-chave, em geral na língua nativa do programador, que tem equivalentes nas linguagens de programação. Além disso, o pseudocódigo não requer todo a rigidez sintática necessária numa linguagem de programação, permitindo que o aprendiz se detenha na lógica do algoritmo e não no formalismo da sua representação. Na medida em que se obtém mais familiaridade com os algoritmos, então o pseudocódigo pode ser traduzido para uma linguagem de programação. Exemplo de um algoritmo em pseudocodigo para comparar dois números: ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 21 Neste exemplo é mostrado um exemplo de pseudocódigo escrito em português para escrever o maior valor entre, x ou y. As palavras leia, se, então, senão-se, fim e escreva são palavras-chave que representam estruturas presentes em todas as linguagens de programação. Entretanto, no pseudocódigo não é necessário se preocupar com detalhes de sintaxe (como ponto-e-vírgula no final de cada expressão) ou em formatos de entrada e saída dos dados. Deste modo, o enfoque no desenvolvimento do algoritmo fica restrito a sua lógica em si, e não na sua sintaxe para representação em determinada linguagem. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 22 TEMA II: CONCEITOS E FUNDAMENTOS BÁSICOS DE PROGRAMAÇÃO JAVA Unidade 2.1: Tecnologia JAVA Tecnologia Java Características da Linguagem e API Java Ambiente de desenvolvimento e de execução Máquina Virtual JAVA (JVM) Versões do Java Bytecode Coletor de Lixo (Garbage Collector) Tecnologia Java Java é uma linguagem de programação orientada a objetos feita na Sun Microsystems, hoje Oracle Corporation, lançada em 1995. A Linguagem Java foi desenvolvida nos princípios dos anos 90 por um grupo de Engenheiros liderado por James Gosling da antiga Sun Microsystems, e foi lançada em 1995. JAVA é uma linguagem derivada do C, porém, programar em Java é mais simples, pois é do alto nível. Isso quer dizer que não nos preocupamos tanto com detalhes do baixo nível, como memória, processamento, ponteiros, lixo etc. O Java já provém um gerenciamento automático de memória e um coletor de lixo (Garbage Collector), que facilitam a vida do desenvolvedor, mas consomem mais processamento. A diferença do Java é que os programas não são compilados diretamente na arquitetura do computador. Ao invés disso, é executado na JVM (Java Virtual Machine), uma máquina virtual, e esta é implementada nos mais diversos dispositivos, o que torna o Java referência quando o assunto é portabilidade. Em outras linguagens de programação, como em C ou C++, o programa é convertido em código de máquina (Assembly) e é executado http://www.programacaoprogressiva.net/2012/08/comece-programar-linguagem-de_3132.html http://programacaoprogressiva.blogspot.com/2012/08/comece-programar-linguagem-de_3132.html ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 23 especificamente num sistema operativo. O nome "Java" é usado para referir-se à: Uma linguagem de programação orientada a objectos; Uma colecção de APIs (classes, componentes, frameworks) para desenvolvimento de aplicações multiplataforma; Um ambiente de execução presente em navegadores, mainframes; SOs, celulares, palmtops, cartões inteligentes, electrodomésticos; Devido à compra da Sun pela Oracle em 2009, actualmente a página oficial do java é: http://www.oracle.com/technetwork/java/. A evolução da linguagem é controlada pelo Java Community Process (www.jcp.org), este é um mecanismo para o desenvolvimento de especificações técnicas padrão para a Tecnologia Java. Qualquer indivíduo pode registar-se no site e participar na revisão fornecendo feedback para as solicitações de especificação de Java. Características da linguagem e api java Linguagem de programação orientada a objectos Simples e robusta (minimiza bugs, aumenta produtividade); Familiar (sintaxe parecida com C); Possui códigos fonte e objectos portáveis para diversas arquitecturas e sistemas operacionais, Independente de plataforma; Suporte nativo a threads (+ simples, maior portabilidade); Dinâmica (módulos, acoplamento em tempo de execução; Com colecta de lixo (menos bugs, mais produtividade); Segura (mecanismos para garantir segurança); Código intermediário de máquina virtual interpretado; Compilação rápida (mais produtividade no desenvolvimento); Sintaxe uniforme, rigorosa quanto a tipos (código mais simples, menos diferenças em funcionalidades iguais). API Java http://www.oracle.com/technetwork/java/ http://www.jcp.org/ ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 24 API (Interface de Programação de Aplicação) é um conjunto de padrões de programação (classes e interfaces), que permite a construção e utilização de aplicativos de maneira não transparente ao usuário; As classes e interfaces que compõem a API do Java estão divididas em pacotes e cada um destes agrupa um conjunto de classes e interfaces que possuem propósitos comuns; A estrutura dos pacotes que abriga as classes e interfaces de Java reflectem a estrutura de directórios onde seus arquivos compilados estão dispostos; As classes e interfaces do JDK encontram-se em um arquivo compactado chamado rt.jar que se encontra no directório \jre\lib; As especificações sobre a API Java Standard Edition 7 estão disponíveis em: http://docs.oracle.com/javase/7/docs/api/, neste site estão especificados os pacotes e classes que compõem a API Java, bem como uma breve descrição das suas funcionalidades. O pacote java: Contém classes e interfaces essenciais à consecução dos seus desígnios enquanto linguagem de programação e também recursos indispensáveis para realização de tarefas importantes para a execução de qualquer programa; Possui 13 pacotes: applet, awt, beans, io, lang, math, net, nio, rmi, security, sql, text e util. Estes contém classes e interfaces distribuídas em diversos sub pacotes que devem ser aplicados para desenvolver determinado tipo de aplicação, cada pacote de acordo com as necessidades da aplicação. O pacote javax: Contém classes e interfaces que complementam as dispostas no pacote java e outras que oferecem novos recursos; No javax estão disponíveis os pacotes acessibility, activity, annotation, http://docs.oracle.com/javase/7/docs/api/ ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 25 crypto, imageio, print, swing, xml, tools, dentre outros. O pacote java.lang contém recursos necessários para a implementação de diversas operações fundamentais para a construção de uma diversidade de aplicações. Ambiente de desenvolvimento e de execução A evolução da linguagem java, após o seu lançamento, levou ao aumento do número de bibliotecas padrão da linguagem e à criação de três divisões na plataforma a partir da versão 2 da linguagem: J2SE, J2EE e J2ME. A partir de 2006, o número 2 foi retirado da sigla e estas passaram a ser: JSE, JEE e JME. Java Standard Edition (JSE): é o ambiente de desenvolvimento mais utilizado, seu uso é voltado a PC’s e servidores. Possui ferramentas e APIs essenciais para qualquer aplicação Java (inclusive GUI), é a mais indicada para quem quer aprender a linguagem; Java Enterprise Edition (JEE): é voltado para redes, internet, intranets e afins. Possui bibliotecas para o acesso a servidores, sistemas de email, banco de dados e outros. Contém ferramentas e APIs para o desenvolvimento de aplicações distribuídas. Foi desenvolvia para suportar grande quantidade de usuários simultâneos; Java Micro Edition (JME): é usado no desenvolvimento para dispositivos móveis ou portáteis como celulares e palmtops. JRE (Java Runtime Environment): É necessário para executar aplicações Java; É composto por uma JVM e um conjunto de bibliotecas que permite executar softwares em java. JDK (Java Development Kit): Conjunto de utilitários que permite criar sistemas de software para a plataforma Java; Possui uma JVM privada e alguns recursos para finalizar o desenvolvimento ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 26 da aplicação Java. É o Kit de Desenvolvimento Java. Deve ser descarregada pelos desenvolvedores, é formado pelo JRE e outras ferramentas como o compilador; Colecção de ferramentas de linha de comando para, entre outras tarefas, compilar, executar e depurar aplicações Java; Para desenvolver em java é necessário descarregar e instalar o JDK na sua máquina (computador), para tal visite o site: http://www.oracle.com/technetwork/java/. É necessário descarregar e instalar o Kit de Desenvolvimento Java SE para resolver os exercícios deste manual e executar os exemplos. Algumas outras ferramentas do SDK: Debugger: jdb, depurador simples de linha de comando; Profiler: java –prof, opção do interpretador Java que gera estatísticas sobre uso de métodos em um arquivo de texto chamado java.prof; Java Documentation Generator: javadoc, gera documentação em HTML (default) a partir de código-fonte Java; Java Archiver: jar, extensão do formato ZIP; ferramenta comprime, lista e expande; Applet Viewer: appletviewer, permite a visualização de applets sem browser; HTML Converter: htmlconverter.jar, converte <applet> em <object> em páginas que usam applets; Disassembler: javap, permite ler a interface pública de classes. http://www.oracle.com/technetwork/java/ ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 27 JVM (Java Virtual Machine): Máquina imaginária que é implementada através de software emulador em uma máquina real; Provê especificações de plataforma de hardware na qual compila-se todo o código java; Permite que o software java seja uma plataforma independente, pois a compilação é feita por uma máquina genérica (JVM); Entende e interpreta o bytecode; Camada responsável por traduzir o que sua aplicação deseja fazer para as respectivas chamadas do sistema operacional onde ela encontra-se a executar no momento; A aplicação executa sem nenhum envolvimento do SO, conversa apenas com a JVM. Esta gerencia os recursos computacionais, pois funciona como uma máquina real; As máquinas virtuais utilizam uma estratégia de compilação chamada Just-in- time Compilation (JIT), através da qual um código de máquina pode ser gerado diversas vezes durante o processamento de um programa, para melhorar a utilização dos recursos disponíveis em um determinado instante da execução. A forma de execução de uma aplicação depende: da origem do código a ser executado (remoto ou local); Bytecode Java Máquina Virtual Java (Windows ou Linux) SO (Windows ou Linux) ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 28 da forma como foi implementada a JVM pelo fabricante usando java. (Usando java tecnologia JIT, HotSpot, etc.) A primeira tarefa executada pela JVM é o carregamento das classes necessárias para rodar a aplicação. O Class Loader: Carrega primeiro as classes nativas do JRE (APIs); Depois carrega extensões do JRE: JARs em $JAVA_HOME/jre/lib/ext e classes em $JAVA_HOME/jre/lib/classes; Carrega classes do sistema local (a ordem dos caminhos no CLASSPATH define a precedência); Por último, carrega possíveis classes remotas. Versões do java Java 1.0 e 1.1 são as primeiras versões do Java, mas já traziam bibliotecas importantes comoo JDBC e o java.io; Java 1.2 trouxe grande aumento no tamanho da API, e foi nesse momento em que trocaram a nomenclatura de Java para Java2, com o objectivo de diminuir a confusão que havia entre Java e Javascript (uma outra linguagem); Java 1.3 e 1.4 e o Java 1.5, esta última passou a chamar-se Java 5, tanto por uma questão de marketing, como também devido à mudanças significativas na linguagem; ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 29 A última versão do Java disponível actualmente é a 8. Bytecode É o código de máquina que é executado em qualquer máquina através da Máquina Virtual Java (JVM). O texto contendo código escrito em linguagem Java é traduzido em bytecode através do processo de compilação e é armazenado em um arquivo *.class chamado de Classe Java; F4 D9 00 03 0A B2 FE FF FF 09 02 01 01 2E 2F 30 62 84 3D 29 3A C1 Figura: Bytecode Java (código de máquina virtual) Coletor de lixo A memória alocada em Java não é liberada pelo programador, ou seja, objectos criados não são destruídos pelo programador. A criação de objectos em Java consiste em: 1. Alocar memória no heap para armazenar os dados do objecto; 2. Inicializar o objecto (via construtor); 3. Atribuir endereço de memória a uma variável (referência); 4. Mais de uma referência pode apontar para o mesmo objecto. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 30 Quando um objecto não tem mais referências apontando para ele, seus dados não mais podem ser usados, e a memória deve ser liberada; O colector de lixo irá liberar a memória na primeira oportunidade. Criação de um programa (Passo a Passo) 1. (Editar), O programa é criado em um editor e armazenado em disco em um arquivo com extensão .java: 2. Compilar: 3. Carregar: ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 31 4. Verificar: 5. Executar: Como compilar? ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 32 Para compilar é necessário usar o java compiler (linha de comando): 1. javac NomeDaClasse.java 2. javac -d .. /destino Um.java Dois.java 3. javac -d .. /destino *.java 4. javac -classpath c:\fontes -d ../destino *.java Como executar? Para executar é necessário usar o interpretador java (faz parte do JRE)*: 1. java NomeDaClasse; 2. java pacote.subpacote.NomeDaClasse; 3. java -classpath c:\classes;c:\bin;. pacote.Classe; 4. java -cp c:\classes;c:\bin;. pacote.Classe; 5. java -cp %CLASSPATH%;c:\mais pacote.Classe; 6. java -cp biblioteca.jar pacote.Classe; 7. java -jar executavel.jar. Unidade 2.2: Introdução Prática Nesta seção será apresentado o exemplo de uma aplicação simples em Java (Aplicação HelloWorld), com o objectivo de mostrar: Como escrever uma aplicação Java; Como compilar uma aplicação Java; Como executar uma aplicação Java. Como escrever uma aplicação java Aplicação HelloWorld Esta mini-aplicação em Java imprime um texto na tela quando executada via linha de comando. Digite o texto a baixo em um editor de texto simples, no caso do windows pode recorrer- ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 33 se ao Notepad: HelloWorld.java Comentário de bloco Salve o ficheiro com a extensão .java no directório em que pretende guardar seus ficheiros java, neste caso, o ficheiro encontra-se no directório “C:\isced\exemplos”: Selecione “Save” para salvar o ficheiro: ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 34 Na imagem acima nota-se que ao salvar o ficheiro com a extensão .java, este é reconhecido como um JAVA File, diferentemente do ficheiro acima ao qual não foi especificada sua extensão. COMO COMPILAR UMA APLICAÇÃO JAVA Para compilar e executar o código java, usaremos o cmd (prompt de comando do Windows). Antes, é necessário efectuar pequenas alterações na variável do ambiente, para tal, siga as instruções descritas neste link: http://pt.m.wikihow.com/Instalar-o-Kit- de-Desenvolvimento-de-Software-Java-(JDK); O passo a seguir é abrir o cmd no modo do administrador e indicar o diretório do ficheiro que se pretende compilar: neste caso, o ficheiro a compilar é o HelloWorld.java; A seguir, compile o ficheiro através do comando javac, sem se esquecer de especificar a extensão .java, como mostra a imagem a baixo: http://pt.m.wikihow.com/Instalar-o-Kit-de-Desenvolvimento-de-Software-Java-(JDK) http://pt.m.wikihow.com/Instalar-o-Kit-de-Desenvolvimento-de-Software-Java-(JDK) ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 35 O código foi compilado com sucesso e não foram encontrados erros. Caso tivessem sido detectados erros, a linha a seguir estaria a descrever a natureza do erro. Neste caso, o código foi compilado com sucesso e foi gerado um ficheiro .class (HelloWord.class) no mesmo directório do ficheiro .java: COMO EXECUTAR UMA APLICAÇÃO JAVA E para executar basta digitar o comando “java HelloWord”, a baixo: Desta forma, podemos compilar qualquer aplicação java no nosso computador. É importante lembrar que após compilar o código, basta executar para usar a aplicação, não sendo necessário compilar novamente. Exercícios de AUTO-AVALIAÇÃO (Com respostas): 1. O que é e pra que serve um algoritmo? 2. Diga o que é um pseudocódigo e pra que serve. 3. Complete as frases que se seguem com as palavras em falta: a. O comando ______ do JDK executa um aplicativo Java; b. O comando _________ compila um programa Java; c. Um arquivo de programa Java deve terminar com a extensão de arquivo _________; d. Quando um programa Java é compilado, o arquivo produzido pelo compilador termina com extensão de arquivo ________; e. O arquivo produzido pelo compilador Java contém _______ que são executados ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 36 pela JVM. 4. O termo Java pode ser usado para referir-se a: a. Uma ________________ orientada a objetos; b. Uma coleção de___________ para desenvolvimento de aplicações multiplataforma; c. Um ________ presente em browsers, mainframes; 5. Cite e comente 5 características da linguagem Java. 6. Diga o que é e de que é composta a API Java. 7. Quantos e quais são os pacotes encontrados no pacote java? 8. Diga o nome das três partes da plataforma Java abordadas neste capítulo e em que versão do Java deu-se a conhecer esta divisão. Respostas: 1. Algoritmo é uma série de acções que obedecem certa ordem para resolver determinado problema, ou seja, uma sequência lógica que leva a resolução de um problema. Como a sua definição já diz, o algoritmo serve para indicar os passos a seguir para resolver um problema e a ordem de execução desses. 2. Pseudocódigo é uma Linguagem informal, similar a língua quotidiana, conveniente e amigável ao usuário, usada para desenvolver algoritmos. 3. As palavras em falta nas frases são: a. java; b. javac; c. . java; d. .class; e. bytecodes. 4. Java pode ser usada para referir-se a: a. linguagem de programação; ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 37 b. APIs (classes, componentes, frameworks); c. ambiente de execução. 5. Algumas das características da Linguagem Java são: a. Simples e robusta (minimiza bugs e aumenta produtividade); b. Independente de plataforma, possui códigos fonte e objectos portáveis para diversas arquiteturas e sistemas operacionais; c. Suporte nativo a threads (+ simples, maior portabilidade); d. Coleta de lixo (menos bugs, mais produtividade); e. Código intermediário de máquina virtual interpretado. 6. API Java: a. Conjunto de padrões de programação (classes e interfaces), que permite a construção e utilização de aplicativos de maneira não transparente ao usuário; b. As classes e interfaces que compõem a API do Java estão divididas em pacotes e cada um destes agrupa um conjunto de classes e interfaces que possuem propósitos comuns. 7. No pacote java estão disponíveis 13 pacotes, nomeadamente: applet, awt, beans, io, lang, math, net, nio, rmi, security, sql, text e util. 8. As três partes da plataforma Java abordadas neste capítulo são: JSE, JEE e JME, que surgiram com a versão 2 do Java. Exercícios de AVALIAÇÃO: 1. Rotineiramente, usamos algoritmos para as mais diversas tarefas. Cite três algoritmos que podemos encontrar no dia-a-dia. 2. Discorra sobre as formas de representação de algoritmos mais comuns, destacando suas vantagens e desvantagens. 3. Que empresa foi responsável pela criação do Java e em que ano a linguagem foi lançada ao mercado? ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 38 4. Qual era a finalidade da criação do Java? 5. Fale das três categorias principais dos pacotes da API Java e da sua composição. 6. Fale do JSE, JEE e JME. 7. Fale de SDK, JDK e JRE. 8. O que é Máquina Virtual Java ou Java Virtual Machine? 9. Quantas versões do Java existem e qual é a última (indique o ano de lançamento de cada uma)? 10. O que é Bytecode? 11. Como funciona a coleta de lixo em Java? 12. Explique o funcionamento de um programa java, a partir da sua criação até sua execução. 13. Explique os passos a seguir para compilar um programa java pela linha de comando. 14. Indique três limitações do Java. 15. Que editores de texto podem ser usados para escrever códigos java? Fale das vantagens e desvantagens de cada um. 16. Quais são os requisitos para compilar e correr uma aplicação java na minha máquina? 17. Com base no programa HelloWorld apresentado, escreva um programa em Java que imprima o seu nome. TEMA III: TIPOS DE DADOS Objectivos: Aprender a trabalhar com os seguintes recursos do java: Tipos primitivos; Operadores; Declaração e atribuição de valores; Casting; Caracteres especiais e palavras reservadas; Comentários e Delimitadores em Java. ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 39 Unidade 3.1: Tipos primitivos Tipos de dados primitivos são aqueles que já vem por definição na própria linguagem, isto é, não foram criados pelo programador. A cada variável em JAVA está associada a um tipo de dados. O tipo de dados define quais os valores que a variável pode conter. Se, por exemplo, dissermos que uma variável é do tipo Inteiro, não poderemos lá colocar um valor booleano ou um Caracter. Existem 8 tipos de dados primitivos em java divididos como mostra a figura a baixo: Lógicos: O tipo boolean pode representar dois estados: Verdadeiro (TRUE); Falso (FALSE). Inteiro: Em java, os inteiros podem ser representados de 5 formas: Decimal; Octal; Hexadecimal; ASCII; Unicode. Exemplo: // valor 2 em decimal; ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 40 // 0 indica que ele está representado em octal; 0xBACC // 0x indica que ele está representado em hexadecimal; 'A' // representação ASCII; \u0061' // representação Unicode. Inteiro Longo Por padrão os inteiros são representados por int. Os tipos de dados inteiros assumem valores de acordo com as faixas da figura a baixo: Número Fracionário O tipo ponto-flutuante possui o valor double como padrão. Os números flutuantes possuem um ponto decimal ou um dos seguintes caracteres: E ou e // expoente; F ou f // float; D ou d // double; Exemplos: 3.14 // tipo double; 6.02E23 // double com expoente; 2.718F // float; 1 23.4E+306D // double ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 41 A baixo a tabela mostra os tipos e faixa de valores dos números fraccionários: Unidade 3.2: Operadores Operadores aritméticos: Operadores de Incremento e Decremento: ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 42 Operadores Relacionais: Operadores Lógicos Operadores lógicos avaliam um ou mais operandos lógicos que geram um único valor final true ou false como resultado da expressão. A figura abaixo dá a entender como eles funcionam: Operador Condicional (?:) O operador condicional é também chamado de operador ternário. Tem 3 argumentos que juntos formam uma única expressão condicional. A estrutura de uma expressão utilizando um operador condicional é a seguinte: exp1?exp2:exp3. Precedência de Operadores Serve para indicar a ordem na qual o compilador interpretará os diferentes tipos de operadores, para que ele sempre tenha como saída um resultado coerente e não ambíguo: ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 43 Declaração e atribuição de valores Nome da variável: Deve ser iniciado por uma letra, _ ou $; Seguido de letras, números, _ ou $; Podem ter qualquer tamanho; Não podem ser igual a uma palavra reservada. Sintaxe: tipo_de_dado nome_variável; Java é case sensitive. Ex: int idade; //é válido int _idade // é válido int $idade // é valido int 1 // é inválido Na linguagem de programação Java, as variáveis devem ser declaradas para que possam ser utilizadas; A declaração de uma variável envolve definir um nome único (identificador) dentro de um ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 44 escopo e um tipo de valor, conforme os tipos de dados usados em java; Opcionalmente, pode atribuir-lhe um valor inicial; Pode-se declarar várias variáveis de mesmo tipo na mesma linha, separando com vírgula. Ex: int idade, _idade; // é válido As variáveis são acessadas pelos nomes e armazenam valores compatíveis com o seu tipo; Em Java, toda variável tem um tipo que não pode ser mudado, uma vez declarado. Exemplo: int idade //esta é uma variável inteira e após sua declaração não poderá deixar de ser inteira. A variável pode ser usada atribuindo-à valores. Exemplo: idade = 10; O valor atribuído a variável pode ser usado por outras variáveis, pode ser lançado à tela, etc. Ex: int soma, media; soma = 10; media = soma/2; As variáveis são acessadaspelos nomes e armazenam valores compatíveis com o seu tipo; A declaração de uma variável pode ser realizada em qualquer linha de um bloco; Não é necessário declarar todas as variáveis no começo do bloco como acontece em algumas linguagens de programação; Não podemos declarar duas variáveis com o mesmo nome em um único bloco ou escopo pois ocorrerá um erro de compilação; O escopo define onde a variável é visível (onde podemos ler/atribuir seu valor); O escopo de uma variável vai do “{“ anterior à sua declaração até o próximo “}”. Inicialização de Variáveis Toda variável deve ser inicializada antes de ser utilizada pela primeira vez; A inicialização é realizada através do operador de atribuição = Esse operador guarda um valor em uma variável; O exemplo anterior serve de exemplo pra este ponto. Notas: ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 45 Para as variáveis dos tipos primitivos do Java, o valor que elas guardam é o real conteúdo da variável. Ao utilizar o valor de atribuição =, o valor será copiado; Os tipos primitivos do Java são armazenados na pilha e o Java não é OO pura por causa deles; O escopo da variável é o nome dado ao trecho de código em que aquela variável existe e onde é possível acessá-la. Atribuição de valores Quando realizamos uma atribuição: x = y: Java faz a cópia do valor da variável da direita para a variável da esquerda para tipos primitivos, isso significa que alterações em x não implicam alterações em y; · Ex: Para objectos, como o que é copiado, é a referência para o mesmo objecto, alterações no objecto que x referencia alteram o objecto que y referencia, pois é o mesmo objecto. Ex: public class Exemplo { public static void main(String[] args) { int x, y; ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 46 x = 10; y = x; y = 20; System.out.println("Valor de x:" + x); System.out.println("Valor de y:" + y); } } Resultado: Strings em Java Java não possui tipo primitivo para cadeia de caracteres, mas existe a classe String. Esta classe tem tratamento especial: Construção facilitada usando literais (""). Operador de concatenação; Conversão automática de tipos primitivos e objectos para String; Não podemos mudar o valor de um caractere da string. Podemos somente criar outra string; Casting Alguns valores são incompatíveis ao tentar fazer uma atribuição directa. Enquanto um número real costuma ser representado em uma variável do tipo double, tentar atribuir ele a uma variável int não funciona porque é um código que diz: "i deve valer d”, mas não se sabe se d realmente é um número inteiro ou não. Exemplo: double d = 3.1415; int i = d; // não compila ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 47 O mais interessante, é que nem mesmo o seguinte código compila: double d = 5; int i = d; // não compila; O exemplo: int i = 5; double d2 = i; //compila sem problemas, já que um double pode guardar um número com ou sem ponto flutuante. Às vezes, precisamos que um número quebrado seja arredondado e armazenado num número inteiro. Para fazer isso sem que haja o erro de compilação, é preciso ordenar que o número quebrado seja moldado (casted), como um número inteiro. Esse processo recebe o nome de casting: double d3 = 3.14; int i = (int) d3; O casting foi feito para moldar a variável d3 como um int; O valor de i agora é 3; O mesmo ocorre entre valores int e long: long x = 10000; int i = x; // não compila, pois pode estar perdendo informação. E, se quisermos realmente fazer isso, fazemos o casting: long x = 10000; int i = (int) x; Precisamos do casting porque o Java faz as contas e vai armazenando sempre no maior tipo que apareceu durante as operações, no caso o double; No mínimo, o Java armazena o resultado em um int, na hora de fazer as contas; Casting com variáveis do tipo char pode ocorrer. O único tipo primitivo que não pode ser atribuído a nenhum outro tipo é o boolean. Castings possíveis Na tabela a baixo estão relacionados todos os casts possíveis na linguagem Java, mostrando a conversão de um valor para outro. A indicação Impl. quer dizer que aquele cast é implícito e automático, ou seja, não precisamos indicar o cast explicitamente (lembrando que o tipo booleano não pode ser convertido para nenhum outro tipo): ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 48 Ex: public class Exemplo { public static void main(String[] args) { int x; double y; x = 20; y = x; System.out.println("Valor de x:" + x); System.out.println("Valor de y:" + y); } } Unidade 3.3: Caracteres especiais e palavras reservadas PALAVRAS RESERVADAS Modificadores de acesso: private: acesso apenas dentro da classe; protected: acesso por classes no mesmo pacote e subclasses; public: acesso de qualquer classe. Modificadores de classes, variáveis ou métodos: abstract: classe que não pode ser instanciada ou método que precisa ser ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 49 implementado por uma subclasse não abstracta; class: especifica uma classe; extends: indica a superclasse que a subclasse está estendendo; final: impossibilita que uma classe seja estendida, que um método seja sobrescrito ou que uma variável seja reinicializada; implements: indica as interfaces que uma classe irá implementar; interface: especifica uma interface; native: indica que um método está escrito em uma linguagem dependente de plataforma, como o C; new: instancia um novo objecto, chamando seu construtor; static: faz um método ou variável pertencer à classe ao invés de às instâncias; strictfp: usado em frente a um método ou classe para indicar que os números de ponto flutuante seguirão as regras de ponto flutuante em todas as expressões; synchronized: indica que um método só pode ser acessado por uma thread de cada vez; transient: impede a serialização de campos; volatile: indica que uma variável pode ser alterada durante o uso de threads; Controle de fluxo dentro de um bloco de código: break: sai do bloco de código em que ele está; case: executa um bloco de código dependendo do teste do switch; continue: pula a execução do código que viria após essa linha e vai para a próxima passagem do loop; default: executa esse bloco de código caso nenhum dos teste de switch-case seja verdadeiro; do: executa um bloco de código uma vez, e então realiza um teste em conjunto com o while para determinar se o bloco deverá ser executado novamente; else: executa um bloco de código alternativo caso o teste if seja falso; for: usado para realizar um loop condicional de um bloco de código; if: usado para realizar um teste lógico de verdadeiro o falso; instanceof: determina se um objeto é uma instância de determinada classe, ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 50 superclasse ou interface; return: retorna de um método sem executar qualquer código que venha depois desta linha (também poderetornar uma variável); switch: indica a variável a ser comparada nas expressões case; while: executa um bloco de código repetidamente enquanto a condição for verdadeira. Tratamento de erros assert: testa uma expressão condicional para verificar uma suposição do programador; catch: declara o bloco de código usado para tratar uma excepção; finally: bloco de código, após um try-catch, que é executado independentemente do fluxo de programa seguido ao lidar com uma excepção; throw: usado para passar uma excepção para o método que o chamou; throws: indica que um método pode passar uma excepção para o método que o chamou; try: bloco de código que tentará ser executado, mas que pode causar uma excepção. Controle de pacotes import: importa pacotes ou classes para dentro do código; package: especifica a que pacote todas as classes de um arquivo pertencem; Primitivos boolean: um valor indicando verdadeiro ou falso; byte: um inteiro de 8 bits (signed); char: um caracter unicode (16-bit unsigned); double: um número de ponto flutuante de 64 bits (signed); float: um número de ponto flutuante de 32 bits (signed); int: um inteiro de 32 bits (signed); long: um inteiro de 64 bits (signed); short: um inteiro de 32 bits (signed). Variáveis de referência super: refere-se a superclasse imediata; this: refere-se a instância actual do objecto; Retorno de um método ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 51 void: indica que o método não tem retorno. Palavras reservadas não utilizadas const: Não utilize para declarar constantes; use public static final; goto: não implementada na linguagem Java por ser considerada prejudicial; Literais reservados De acordo com a Java Language Specification, null, true e false são tecnicamente chamados de valores literais, e não keywords. Se tentar criar algum identificador com estes valores, terá um erro de compilação. Comentários e delimitadores em Java Ignorados pelo compilador; Usados pelo programador para melhorar a legibilidade do código. Existem três tipos: 1. Comentários de uma linha: // ...; 2. Comentários de múltiplas linhas: /* ... */; 3. Comentários JavaDoc: /** ... */ – utilizados pela ferramenta javadoc para criar uma documentação HTML das classes, atributos e métodos. A ferramenta javadoc vem com o JDK; Caracteres especiais: Exercícios de AUTO-AVALIAÇÃO (Com Respostas): 1. Quantos tipos primitivos existem em java e como estão divididos? ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 52 2. Quantos e quais estados representam os tipos lógicos? 3. Quais são os tipos de operador aritmétrico usados em Java? 4. O que significa “Java é case sensitive”, que implicações isso traria no nosso código? Dê exemplo. 5. Como é feita a inicialização de variáveis em Java e como funciona? 6. Porquê o Java não é OO pura? 7. Crie um programa que receba quatro números inteiros, calcule e mostre a soma desses números: Respostas: 1. Existem 8 tipos de dados primitivos em java divididos em inteiro, lógico, inteiro longo e fracionário. 2. Os tipos lógicos representam dois estados que são Verdadeiro (TRUE) e Falso (FALSE). 3. Os tipos de operador aritmétrico usados em Java são o *, que representa multiplicação, / divisão, + adição, – subtracção e % módulo ou resto da divisão. Exemplo: a = 2 + b; 4. “Java é case sensitive” significa que, a linguagem java faz a distinção entre caracteres maiúsculos e minúsculos. Ou seja, em Java, o “A” maiúsculo é diferente do “a” minúsculo. Devemos prestar atenção nas variáveis declaradas no nosso código, e usar os mesmos tipos de caracteres sempre que quisermos usá-la para evitar erros. 5. A inicialização de variáveis em java é feita através do operador de atribuição =, que dá um valor inial à variável e permite que esta seja usada. 6. O Java não é OO pura por possuir tipos primitivos, estes guardam o vaor real da variável e são armazenados na pilha. 7. Programa que possui quatro números inteiros, calcula e mostra a soma desses números: public class Exercicio7 { public static void main (String[] args) { int n1, n2, n3, n4, soma; n1 = 2; n2 = 4; n3 = 6; n4 = 8; ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 53 soma = n1 + n2 + n3 + n4; System.out.println"\n \t"+ soma + "\n"); } } Resultado: Exercícios de AVALIAÇÃO 1. De que formas podem ser representados os dados inteiros? 2. Quantos e quais tipos de operadores foram abordados? 3. Diga pra que serve e como funciona a precedência de operadores. 4. Diga o que é necessário para usar uma variável. 5. Quais dos identificadores abaixo podem ser usados como nomes de classes, atributos, métodos e variáveis em Java? Quais não podem, e por quê? A. four B. for C. from D. 4 E. FOR 6. Quais dos identificadores abaixo podem ser usados como nomes de classes, atributos, métodos e variáveis em Java? Quais não podem, e por quê? A. dia&noite B. diaENoite C. dia & noite D. dia E noite E. dia_e_noite ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 54 7. Quais dos identificadores abaixo podem ser usados como nomes de classes, atributos, métodos e variáveis em Java? Quais não podem, e por quê? A. contador B. 1contador C. contador de linhas D. Contador E. count 8. De acordo com os conhecimentos já adquiridos, escolha o tipo de dado ou classe mais adequada para representar: A. O número de municípios de uma Província de Moçambique. B. O nome de uma Capital Provincial de Moçambique. C. A população de uma Região de Moçambique. D. A área de Moçambique em quilómetros quadrados. E. A população total do mundo. F. O nome de uma rua em um endereço de Moçambique. 9. Considerando as tabelas apresentadas, escolha o tipo de dado ou classe mais adequada para representar: A. A altura de uma pessoa em metros. B. O peso de uma pessoa em quilos. C. A temperatura corporal de uma pessoa. D. O sexo de uma pessoa. E. A altura de uma pessoa em milímetros. 10. Responda verdadeiro ou falso para cada uma das afirmações abaixo, explicando ou justificando a sua resposta. A. Um valor do tipo boolean pode receber o valor numérico zero. B. Um valor do tipo float pode armazenar valores maiores do que os que podem ser armazenados por um valor do tipo long. C. Podemos ter caracteres cujos valores sejam negativos. D. O número de bytes ocupados por uma variável do tipo float depende do computador e do sistema operacional sendo usado. E. O tipo char pode ser usado para representar pares de caracteres, uma vez ISCED CURSO: GESTÃO DE SISTEMAS DE INFORMAÇÃO; 10 Ano Disciplina/Módulo: Programação I 55 que variáveis desse tipo ocupam dois bytes na memória. F. Os tipos de dados double e long não são equivalentes, apesar de variáveis desses tipos ocuparem o mesmo espaço na memória. 11. Identifique e explique o (s) erro (s) na classe abaixo e comente. class Registro De Eleitor { /** * Declaração dos atributos desta classe */ int títuloDeEleitor; // número do título do eleitor String nome; // nome do eleitor short zonaEleitoral; // número da zona eleitoral } // fim da classe 12. Que elemento define onde a variável é visível, onde podemos ler/atribuir seu valor? Como é delimitado? 13. Escreva um programa em
Compartilhar