Académique Documents
Professionnel Documents
Culture Documents
JULHO DE 2012
FORTALEZA/CEARÁ
Governador
Cid Ferreira Gomes
Vice-governador
Domingos Gomes de Aguiar Filho
Secretária de Educação
Maria Izolda Cela de Arruda Coelho
Secretário Adjunto
Maurício Holanda Maia
Secretário Executivo
Antonio Idilvan de Lima Alencar
Equipe de Elaboração:
Cintia Reis
Fernanda Vieira Ribeiro
João Paulo de Oliveira Lima
Liane Coe Girão Cartaxo
Mirna Geyla Lopes Brandão
Moribe Gomes de Alcântara
Valbert Oliveira Costa
Sumário do Manual
APRESENTAÇÃO ............................................................................................................................7
EMENTA ..................................................................................................................................... 12
REFERÊNCIAS BIBLIOGRÁFICAS.................................................................................................. 28
SUMÁRIO DA APOSTILA............................................................................................................... 29
No intuito de deixar claro à (o) professor (a) o que é esperado do aluno ao final da
disciplina, este manual propõe os objetivos de aprendizagem referentes ao tema,
acompanhado do conteúdo de cada disciplina. Disponibiliza uma bibliografia para o
(a) professor (a), subsidiando-o (a) para aprofundar os debates em sala de aula,
bem como, uma bibliografia de referência do Manual.
Objetivos de Aprendizagem
Ao final da disciplina os alunos devem ser capazes de...
Aplicar os conceitos fundamentais de algoritmos para a solução de problemas
a partir de técnicas de modularização e refinamentos sucessivos.
Formular algoritmos consistentes em português estruturado.
Interpretar e avaliar Algoritmos e fluxogramas.
Desenvolver aplicações com interfaces gráficas em linguagem Java
respeitando o paradigma de orientação a objetos
Compreender conceitos sobre sistemas de informação.
Aplicar técnicas para levantamento de requisitos.
Analisar e conceber requisitos para o desenvolvimento de sistemas.
Interpretar e elaborar diagramas UML (diagramas de Classes, diagramas de
Sequência e diagramas de Casos de Uso)
Conteúdo Programático
FASE I – LÓGICA DE PROGRAMAÇÃO
Aula - 7. Subprogramas
7.1. Características Gerais
7.2. Procedimentos
7.3. Funções
COMPETÊNCIAS
(Descrevem os elementos essenciais da competência na forma de
comportamentos particulares).
AÇÕES PEDAGÓGICAS
(Os limites a serem respeitados e os meios de aplicação).
CRITÉRIOS DE PARTICIPAÇÃO
(Exigências da participação que os alunos e alunas devem respeitar durante a
aprendizagem).
Conteúdos Interdisciplinares
BASE TÉCNICA:
Fórmulas matemática
Operadores relacionais
Proposições lógicas
Conceitos de estrutura lógica
Conceitos de variáveis
Técnicas para resolução de problemas (Top down, dividir pra conquistar etc)
DISCIPLINAS CONTRIBUTIVAS:
Referências Bibliográficas
7. Kathy Sierra, Bert Bates. Use a Cabeça - Java. Rio de Janeiro : O'Reilly, 2005.
11. de Souza, Marcos Antônio Furlan e Goncílio, Marcelo Marques. Algoritmos e Lógica de
Programação. s.l. : Thomson.
12. Deitel, Harvey M. e Deitel, Paul J. Java como Programar 8ª Ed. s.l. : Pearson.
13. Ascencio, Ana Fernanda Gomes e Ven, Edilene Aparecida. Fundamentos da Programação de
Computadores – Algoritmos, Pascal, C/C++, JAVA 2 Edição. s.l. : Pearson Prentice Hall.
14. Forbellone, André Luiz Villar. Lógica de Programação – A Construção de Algoritmos e Estruturas de
Dados. São Paulo : Makron, 1993.
15. Puga, Sandra e Rissetti, Gerson. Lógica de Programação e Estruturas de Dados. s.l. : Pearson.
17. Evolução Educação e Tecnologia. Orientação a Objetos com Java. [www.evolucao.com.br – junho de
2012].
Sumário da Apostila
FASE I : LÓGICA DE PROGRAMAÇÃO 32
10.5. OPERADORES 88
AULA - 11. ESTRUTURAS DE CONTROLE 90
11.1. ESTRUTURA DE SELEÇÃO 90
11.2. ESTRUTURAS DE REPETIÇÃO 91
AULA - 12. ESTRUTURAS DE DADOS INDEXADAS 95
12.1. VETORES 95
12.2. MATRIZES 96
AULA - 13. SUBPROGRAMAS 97
13.1. PROCEDIMENTOS 97
13.2. FUNÇÕES 97
1.1. Introdução
Programar é como escrever um texto para que se possa escrever corretamente você
primeiramente pensa e analisa o vocabulário depois inicia o procedimento de escrever
colocando cada palavra no seu devido lugar e usando a sintaxe correta, no mundo da
programação é de extrema importância à lógica, pois através dela adquirimos a
capacidade de escrever programas em qualquer linguagem de programação, é isso
mesmo o que muda de uma linguagem para outra é a sintaxe.
Nesta disciplina, iniciaremos nossos estudos sobre Lógica de Programação. Mas, antes
de começarmos, seria útil uma reflexão sobre o significado da palavra “Lógica”. Assim,
o que é Lógica?
Sendo A o dinheiro ou qualquer outra coisa que tenho que pegar em B(bolsa), tenho o
conhecimento prévio de que o que quero pegar está na bolsa e a mesma encontra-se
fechada.
Neste exemplo do dia-a-dia tenho duas premissas que através delas chego a uma
conclusão.
Exercício Prático
A desvantagem é que são bastante difíceis de manejar e usar, além de ter códigos
fonte enormes onde encontrar uma falha é quase impossível.
São aquelas que se encontram mais próximas à linguagem natural do que à linguagem
de máquina. Estão dirigidas a solucionar problemas mediante o uso de EDD's.
Trata-se de um termo não aceito por todos, porém certamente vocês já devem ter
escutado. Estas linguagens se encontram em um ponto médio entre as duas
anteriores. Dentro destas linguagens poderia se situar C já que pode acessar aos
registros do sistema, trabalhar com endereços de memória, todas elas características
de linguagens de baixo nível e ao mesmo tempo realizar operações de alto nível.
Gerações
QUARTA GERAÇÃO: São linguagens capazes de gerar código por si só, são os
chamados RAD, com o qual pode-se realizar aplicações sem ser um expert na
linguagem. Aqui também se encontram as linguagens orientadas a objetos, tornando
possível a reutilização de partes do código para outros programas. Ex: Visual, Natural
Adabes…
A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de
objetos para descrever um sistema de software. O funcionamento deste sistema se dá
através do relacionamento e troca de mensagens entre estes objetos. Na programação
orientada a objetos, implementa-se um conjunto de classes que definem os objetos
presentes no sistema de software. Cada classe determina o comportamento (definido
nos métodos) e estados possíveis (atributos) de seus objetos, assim como o
relacionamento com outros objetos.
Até mesmo as coisas mais simples, podem ser descritas por sequências lógicas. Por
exemplo:
Exercício Prático
3.2. Tipos de Algoritmos
Descrição narrativa
Utiliza linguagem natural;
Vantagem: Não é necessário aprender nenhum conceito novo, é como
estivéssemos falando ou escrevendo os detalhes de algo para outra pessoa.
Desvantagem: Permite várias interpretações, dificultando transcrição para
programa.
Exemplo
Pseudocódigo ou Portugol.
Utiliza uma linguagem com regras definidas com uma estrutura formal.
Também conhecido como português estruturado.
Vantagem: Transcrição para programa (linguagem de computador) é
praticamente imediata.
Desvantagem: Necessário aprender regras.
Imagine o seguinte problema: Calcular a média final dos alunos da 3ª Série. Os alunos
realizarão quatro provas: P1, P2, P3 e P4.
Onde:
Simbologia
Símbolo Descrição
Terminal: Representa o início e fim do fluxograma.
3.2.3. Pseudocódigo
O algoritmo deve ser fácil de interpretar e fácil de codificar. Ou seja, ele deve ser o
intermediário entre a linguagem falada e a linguagem de programação.
Exercício Prático
Corpo do Algoritmo: No corpo do algoritmo deve ser escrito todos os passos para a
resolução de problemas, como por exemplo;
Estas devem receber nomes para poderem ser referenciadas e modificadas quando
necessário. Um programa deve conter declarações que especificam de que tipo são as
variáveis que ele utilizará e às vezes um valor inicial.
Alfanuméricas: Específicas para dados que contenham letras e/ou números. Pode em
determinados momentos conter somente dados numéricos ou somente literais. Se
usado somente para armazenamento de números, não poderá ser utilizada para
operações matemáticas.
Lógicas: Armazenam somente dados lógicos que podem ser Verdadeiro ou Falso.
No Portugol IDE usamos a palavra variavel para declarar uma variável como no
exemplo anterior (variavel real prova1) na Erro! Autoreferência de indicador não válida.
podemos ver os tipos de dados utilizados.
Exercício Prático
Para escrever algo utilizamos a palavra escrever, se quisermos escrever algum texto ,
por exemlplo “Olá mundo!” digitamos o seguinte comando:
escrever A
Para ler uma variável que recebeu uma entrada do usuário digitamos a palavra ler
acompanhada do nome da variável declarada.
Ou ainda:
escrever “O conteúdo de A é: “, A
4.3. Operadores
4.3.1. Atribuição
O comando de atribuição faz com que um valor seja guardado em uma variável. Do
lado esquerdo temos a variável que armazenará o valor. Do lado direito da expressão
podemos ter um valor específico ou uma expressão que retorna um valor a ser
armazenado, em geral uma expressão aritmética. Observe na Figura 6.
No Portugol IDE utilizamos este símbolo <- para atribuir valor a uma variável.
A <- 2
4.3.2. Aritméticos
Os operadores aritméticos são os utilizados para obter resultados numéricos. Além
da adição, subtração, multiplicação e divisão, podem utilizar também o operador para
resto da divisão.
1 º ( ) Parênteses
2 º Exponenciação
4.3.3. Relacionais
4.3.4. Lógicos
A tabela abaixo mostra todos os valores possíveis criados pelos três operadores
lógicos (E, OU e NAO).
Tabela 6 - Tabela Verdade
Exemplos:
Operações Lógicas
Exercício Prático
conforme a sintaxe da linguagem. Por isso, ocorreria o erro sintático. Este tipo de erro
impede a execução do algoritmo ou programa.
ERROS SEMÂNTICOS – (ou lógicos) - ocorrem quando o código escrito pelo programador
não gera o resultado desejado por este. Ou seja, o código está sintaticamente correto,
mas o resultado gerado pelo algoritmo não está correto. Erros de lógica podem ser
simplesmente uso incorreto de operadores (+ no lugar de -, usar o operador OU no
lugar de usar o E), atribuições erradas (por exemplo, pedir para digitar o nome da
pessoa e guardar o que for digitado na variável endereço), etc.
Suponha um algoritmo para ler duas notas de um aluno e calcular a média das
mesmas. Depois indicar se o aluno foi aprovado (média >= 7) ou não. Suponha
também que os valores digitados para as notas serão 8.0 e 9.0, respectivamente.
Seguindo os passos que foram explicados do teste de mesa, vai ser criada uma coluna
para cada variável do algoritmo e uma coluna para o que vai aparecer na tela. Em
seguida, você vai seguindo, linha a linha, passo a passo a execução do algoritmo, com
os valores de teste sugeridos e vai preenchendo a tabela criada (vide
2. Crie uma coluna para cada uma das variáveis declaradas no algoritmo e uma coluna para a
saída de dados (o que vai ser impresso na tela)
Executando Variáveis
Visualização na tela
Nº Linha N1 N2 Media
3 Digite a sua 1ª nota
4 8.0
5 8.0 Digite a sua 2ª nota
6 8.0 9.0
7 8.5
9 Aprovado sua média é:
10 8.5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Exercício Prático
Na programação estruturada utiliza-se três formas básicas para controlar o fluxo das
operações: Sequência, Seleção e Repetição, que serão descritas e exemplificadas nas
subseções seguintes. A combinação destas estruturas permite construir algoritmos
diversos, em vários níveis de complexidade.
A sequência foi utilizada até agora, onde as instruções são executadas sem desvios. A
seguir veremos em mais detalhes seleção e repetição
Estas estruturas permitem direcionar o fluxo das ações conforme uma condição
estabelecida, ou seja, executam as ações de um determinado bloco se a condição de
teste retornar um valor verdadeiro. Caso a condição retorne falso, o programa desvia
seu fluxo de execução para o primeiro comando após o final da estrutura em questão.
Pode-se também utilizar uma estrutura composta, na qual adiciona-se o senão
imediatamente após o bloco de comandos do se. O bloco de comandos do senão será
executado se, e somente se, a condição de teste do se retornar um valor falso.
5.1.1. Simples
Imagine um algoritmo que determinado aluno somente estará aprovado se sua média
for maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria.
b – Portugol a – Fluxograma
Figura 10 - Status do aluno para sua média – condição simples
5.1.2. Composta
b – Portugol a – Fluxograma
No exemplo acima está sendo executada uma condição que, se for verdadeira, executa
o comando escrever “Aluno aprovado!”, caso contrário executa o segundo comando
escrever “Aluno reprovado!”.
5.1.3. Encadeada
Podemos também dentro de uma mesma condição testar outras condições. De forma
encadeada. Se o aluno que tiver que fazer uma outra avaliação quando sua média for
menor que 7.0, teremos a seguinte alteração no nosso algoritmo:
b – Portugol a – Fluxograma
Vale ressaltar que poderemos encontrar situações problema onde outro se dever ser
escrito dentro do bloco senão, ou termos outro se encadeado no se mais interno, as
possibilidades são infinitas.
Exercício Prático
5.2.1. Enquanto
O laço enquanto é bastante parecido com a estrutura de seleção simples, onde temos
um bloco de comandos sendo executado quando uma expressão lógica é verdadeira,
não tendo nada pra ser executado quando o resultado da expressão for falso.
Teste no início
O enquanto com teste no início não permite que nenhuma linha seja executada antes
que esteja testada a condição de entrada do laço, que é definida por uma expressão
lógica na primeira linha do laço.
Tabela 8 - Estruturas de repetição – Portugol
No exemplo iremos demonstrar como conduzir o seu raciocínio para que consiga
elaborar a solução para os problemas que irão ser apresentados pra você na área de
programação. Esta mesma forma de construir a solução pode ser aplicada para outros
problemas.
Exemplo – Dado um número deseja-se identificar seus divisores. Iremos usar os três
tipos de laços mencionados na Tabela 19 resolução do exercício proposto. Iremos
primeiro mostrar a interface escolhida para este problema. Todas as soluções irão usar
a mesma interface.
A <- A – 1
B % (B – 2) = 0 ? se B % A = 0 entao
escrever A, “ é divisor”
fimse
A <- A – 1
B % (B – 3) = 0 ? se B % A = 0 entao
escrever A, “ é divisor”
fimse
A <- A – 1
...
B % (1) = 0 ? se B % A = 0 entao
escrever A, “ é divisor”
fimse
A <- A – 1 //Nesse momento A = 0, nosso critério de parada
Teste no final
Figura 15 – Fluxograma Estrutura Enquanto - Teste no Final – Enquanto com teste no final
5.2.2. Para
O laço para, também conhecido como laço contado, tem uma estrutura muito
específica a para determinar seu critério de parada, ou seja, a sua expressão lógica.
Ele tem em sua estrutura uma variável chamada de contador que é inicializada,
atualizada e testada de acordo com o que é informado na primeira linha de definição do
laço.
Para Portugol
A variável contadora é inicializada, para contador de inicio ate fim passo p
atualizada e testada de acordo com o que //Código se expressão_lógica for verdadeira
está na definição do laço Proximo
Estruturas de dados estáticas são mais simples e fáceis de usar. Mas para a maioria
das aplicações não se pode conhecer o número de elementos necessários na
resolução do problema, exigindo estruturas de dados dinâmicas, em que a quantidade
de elementos pode ser frequentemente alterada.Em relação ao uso de estruturas de
dados dinâmicas podem ser citada, por exemplo; lista de contatos de uma agenda, lista
de clientes de um banco, número de personagens de um jogo, lista de usuários de um
computador.
6.1. Vetores
Vetores são elementos que são armazenados de forma indexada. Os vetores podem
ser estruturas de dados estáticas, pois o número de elementos nessa estrutura é
determinado no momento de sua alocação na memória; normalmente quando as
variáveis são declaradas. (Algumas linguagens permitem vetores de alocação
dinâmica).
1 2 3 4 5 6 7 8 9 10
Essa declaração define uma variável chamada V que pode armazenar um conjunto de
números inteiros que serão identificados como V[0], V[1], V[2], ..., V[N],
6.2. Matrizes
Uma matriz de dimensão 2 é uma matriz que exige dois índices para identificar um
elemento em sua estrutura;
A maioria das linguagens não impõe limite sobre a dimensão de uma estrutura
indexada, ficando a cargo do programador utilizar tantos índices quanto considerar
convenientes.
6.2.1. Declaração
A convenção mais comum é dizermos que o primeiro índice identifica uma linha de uma
matriz bidimensional e o segundo, uma coluna.
Exemplo: Dada uma matriz de 6 linhas e 2 colunas de inteiros, calcular e exibir a média
geométrica dos valores de cada uma das linhas. A média geométrica é calculada pela
seguinte expressão : SQRT (X1 * X2), que representa a raiz quadrada do resultado da
multiplicação dos elementos da coluna 1 (X1) pelos elementos da coluna 2 (X2).
Para realizarmos o acesso e atribuição em uma matriz temos que lembrar que, cada
elemento de uma matriz pode armazenar um valor, para realizar uma atribuição temos
que informar as dimensões (linha,coluna), podemos compara com uma planilha que
aprendemos a usar em Informática básica.
12 26
21 45
Redes de Computadores – Análise e Programação 66
Escola Estadual de Educação Profissional Ensino Médio Integrado a Educação Profissional
Algoritmo Exemplo:
Aula - 7. Subprogramas
No Portugol IDE não podemos implementar subprogramas, embora seja uma técnica
bastante utilizada em programação. Em Java subprogramas são chamados métodos.
Escopo de variáveis
Dentro do subprograma podem ser utilizadas tanto variáveis locais quanto variáveis
globais. Todas as variáveis locais aos subprogramas são alocadas somente quando
estão em execução, mas são liberadas quando o procedimento termina, perdendo
assim, seus conteúdos. Caso seja necessário o aproveitamento dos dados
manipulados, o procedimento deverá utilizar as variáveis globais.
Parâmetros
Parâmetros são dados que um subprograma necessita para executar suas instruções e
dá o retorno desejado. Por exemplo, quando criamos um subprograma para calcular a
soma de dois números n1 e n2, teremos que passar esses números para que o
subprograma possa realizar a soma dos mesmos. Então dizemos que n1 e n2 são
parâmetros para o subprograma soma.
soma(n1, n2)
Para chamarmos uma função ou procedimento deste tipo, devemos colocar o nome
seguido de um conjunto de parâmetros entre parênteses. Os parâmetros devem ser em
igual quantidade e de mesmos tipos, conforme foi definida a função ou o procedimento.
7.2. Procedimentos
Os subprogramas que não retornam um valor para o ponto de onde foram invocados é
chamado de procedimento. Aqueles que retornam são chamados de função.
7.3. Funções
Funções são rotinas similares aos procedimentos, só que retornam um valor após cada
chamada. Uma função não deverá simplesmente ser chamada, como no caso dos
procedimentos, mas deverá ser atribuída à alguma Var. Uma função deve ter um nome
e um tipo, e sua sintaxe é mostrada abaixo.
O nome da função é quem deve assumir o valor da função, como se fosse uma
variável. Assim como nos procedimentos, uma função deve ser definida dentro do
espaço de declaração de variáveis do programa. Para que a função possa retornar um
valor, este deverá ser explicitamente atribuído ao nome da função, dentro da rotina da
função.
8.1. História
Em 1992 foi criado na Sun um time, conhecido como Green Team, para desenvolver
inovações tecnológicas. Liderado por James Gosling, considerado o pai do Java, o time
lançou a ideia de criar um interpretador para pequenos dispositivos, facilitando a
reescrita de software para aparelhos eletrônicos. A ideia não vingou, tentaram fechar
diversos contratos com grandes fabricantes de eletrônicos, como Panasonic, mas não
houve êxito devido ao conflito de interesses e custos. Hoje, o Java domina o mercado
de aplicações para celulares com mais de 2.5 bilhões de dispositivos compatíveis.
Com o surgimento da web, a Sun percebeu que poderia utilizar a ideia criada em 1992
para rodar pequenas aplicações dentro do browser. Como a ideia inicial era
portabilidade, ambiente semelhante ao da internet, onde havia uma grande quantidade
de sistemas operacionais e browsers, e com isso seria grande vantagem poder
programar numa única linguagem, independente da plataforma. Foi aí que o Java 1.0
foi lançado, para transformar o browser, que funcionava apenas como um cliente fino
(thin client ou terminal burro) para um ambiente que pudesse também realizar
operações, não apenas renderizar HTML. (1)
Desde seu lançamento, em maio de 1995, a plataforma Java foi adotada mais
rapidamente do que qualquer outra linguagem de programação na história da
computação. Em 2004 Java atingiu a marca de três milhões de desenvolvedores em
todo mundo. Java continuou crescendo e hoje é uma referência no mercado de
desenvolvimento de software. Java tornou-se popular pelo seu uso na internet e hoje
possui seu ambiente de execução presente em navegadores, mainframes, sistemas
operacionais, celulares, palmtops, cartões inteligentes etc. (2)
Sugestão:
Isso só se tornou possível graças a JVM, sigla em inglês para Máquina Virtual Java. A
JVM tem a função de intermediar a “conversa” entre a aplicação/software Java que
está executando e a plataforma onde ele está. Veja a Figura 22:
Tanto Java quanto Delphi são linguagens compiladas, ou seja, geram código de
máquina a partir dos códigos fontes criados pelos programadores através de seus
compiladores. A diferença entre elas é que no Delphi temos a compilação para uma
plataforma específica (Linux, Windows etc), enquanto o compilador Java gera
bytecode, que é a linguagem de máquina da JVM. Sendo assim, observe a Figura 23.
Já vimos no item 1.2 que a JVM faz a “conversa” entre a aplicação Java e a plataforma
que está sendo utilizada. A esta “conversa” chamamos interpretação, ou seja, a JVM
interpreta os comandos existentes na aplicação para a plataforma em que está sendo
executada, em uma primeira instância esta interpretação de comandos é feita da
Redes de Computadores – Análise e Programação 71
Escola Estadual de Educação Profissional Ensino Médio Integrado a Educação Profissional
Fonte: https://wiki.smu.edu.sg/is200/Java_Virtual_Machine
Java não é apenas uma linguagem de programação, mas uma tecnologia. Além da
linguagem, onde temos principalmente o compilador com seu conjunto de palavras
reservadas e a sua sintaxe, oferece também o ambiente de execução das aplicações.
Sendo assim, o ciclo de vida de uma aplicação implementada em Java contempla três
etapas: escrita do programa, compilação do código para gerar o bytecode
correspondente e, por fim, a interpretação do programa pela JVM em tempo de
execução.
Desvantagens
Vantagens
Independência do sistema operacional Uma camada a mais
Segurança Desempenho
Estabilidade
Por fim, temos a etapa da implementação da solução, onde iremos transferir a solução
idealizada para uma linguagem de programação apropriada, que pode ser subdividida
em três etapas, como mostrado na Figura 25.
http://netbeans.org/kb/index_pt_BR.html
Para um melhor entendimento vamos ver como fazemos para receber uma entrada ou
saída nesta linguagem de programação e alguns conceitos que mudam quando
Redes de Computadores – Análise e Programação 73
Escola Estadual de Educação Profissional Ensino Médio Integrado a Educação Profissional
3
2
Acima temos a imagem de nossa IDE, na tabela abaixo vamos conhecer cada item
para aprendermos a utiliza-la, veremos antes alguns ícones importantes para nos
ambientarmos a IDE.
Com este ícone temos a identificação que este é um arquivo com a extensão
*.java.
Tabela 10 - Identificação das áreas no NetBeans
Item Descrição
Nesta área temos a barra de menu e barra de tarefas, através dela
criamos os nossos projetos, como na imagem acima temos o projeto
logica2, onde tem várias outras coisa que iremos conhecer.
1
Com estes ícones da esquerda para a direita, o
primeiro podemos criar um novo arquivo que terá a extensão *.java, o
segundo criamos o projeto onde teremos todos os nossos arquivos, para
cada algoritmo teremos um arquivo que segue as mesmas regras que
Redes de Computadores – Análise e Programação 74
Escola Estadual de Educação Profissional Ensino Médio Integrado a Educação Profissional
a. Novo projeto
Devemos então identificar a categoria (Java para desktop, Java Web, Java SE etc),
bem como do projeto (Aplicativo Java, Aplicativo da Área de Trabalho Java etc), Java e
Aplicativo Java serão selecionados respectivamente, como na Figura 27b, será o
modelo que iremos usar neste curso. Feito isso então nomeamos nosso projeto ( Figura
27c). Dado o nome e tendo marcado a caixa Criar classe principal, basta pressionar o
botão Finalizar.
No Portugol IDE quando queríamos escrever algo usávamos a palavra escrever agora
em nossa linguagem de programação iremos usar a seguinte instrução
System.out.println(“Olá mundo!”);, tudo que eu quero que seja exibido ao usuário
irei colocar dentro dos parênteses e com as aspas duplas, finalizando a linha com
ponto e virgula, ficando como na imagem ao lado;
Para executar podemos utilizar o atalho Shift+F6, que irá gerar a saída abaixo, no
console. Observe a Figura 30.
Podemos usar:
System.out.println(“Olá mundo!”);
A diferença entre eles é que o print ele gera a saída do conteúdo na mesma linha, e o
println realiza a quebra de linha.
Sugestão:
Então vejamos como começar... O primeiro passo é criar o formulário dentro do pacote
meuexemplo, que está dentro da pasta Pacote de código-fonte. Para isso basta que
seja usado o botão direito do mouse sobre o referido pacote, como mostra a Figura 31a.
Com o botão esquerdo do mouse seleciona a opção Formulário JFrame. Feito isso,
uma janela (Figura 31b) irá se abrir e deve ser colocado o nome do formulário, que
chamamos de JFPrincipal e pressiona o botão Finalizar.
Faz-se necessário, então, renomear os componentes. Isso é feito da mesma forma que
foi feito para alterar o texto dos componentes, pressionando o botão direito do mouse
sobre o componente, mas selecionar o item Alterar o nome da variável (que pode ser
visto na Figura 34). Esse procedimento deve ser repetido para todos os componentes
que serão manipulados dentro do código.
Por fim, podemos visualizar a interface gráfica que foi construída pressionando o botão
na barra de botões, como na
Figura 35a. Na
Exercício Prático
Na nossa aplicação MeuExemplo, todo o código está dentro do evento do botão ok.
sVendido = jTVendido.getText();
No MeuExemplo, temos que realizar um cálculo usando o valor vendido, que está em
jTVendido. No código apresentado acima armazenamos o valor de jTVendido em
sVendido, podemos então usar o valor de sVendido para calcular o valor da premiação,
como no código abaixo:
Vendido = Double.parseDouble(sVendido);
Para exibirmos o valor do prêmio temos que converter a variável sPremio em String
(texto), que é realizado usando o código a seguir:
sPremio = String.valueOf(Premio);
Quando queremos que uma informação do programa seja exibida na interface gráfica,
então usamos o método setText(). Para exibirmos uma informação contida na variável
sPremio na interface gráfica, devemos escrever o seguinte código:
jTPremio.setText(sPremio);
Temos que entender que nossas aplicações irão interagir com o usuário, dessa
interação é que temos a execução dos passos necessários para garantir o objetivo
desejado (determinado em princípio pelo usuário). É isso que deve fazer um sistema de
computação segundo Von Neummann (Figura 39), seja ele do ponto de vista do
hardware ou do software.
No final de toda instrução deve ser finalizada com o ponto e vírgula (;).
Os comentários podem ser representados de duas formas
o // : quando só for usar uma linha
o /* : sinaliza o início do comentário com múltiplas linhas
o */ : sinaliza o final do comentário com múltiplas linhas
Java Portugol
Scanner leia = new ler valor
Scanner(System.in);
valor = leia.nextDouble();
System.out.print(“Oi, Mundo!”); escrever “Oi, Mundo!”
Os tipos básicos em Java são: int (inteiro), long (inteiro longo), float (real de 4 bytes),
double (real de oito bytes), char (caracter), byte (byte) e Boolean (booleano). Temos
ainda o tipo String (texto), que é uma sequência de char. Embora não seja um tipo
básico, estamos colocando ele aqui pelo seu largo uso.
Java Portugol
int idade; inteiro idade
long habitantes;
float nota; real nota
double nota;
char sexo; caracter sexo
Boolean ligado; logico ligado
String nome; texto nome
Do lado esquerdo da tabela temos o código escrito em Java e do lado direito o mesmo
código em Portugol.
10.3. Variáveis
Variáveis são repositórios de valores que são usados no decorrer do programa, todas
devem ser declaradas antes de seu uso. Na declaração das variáveis estamos
reservando espaço de memória para que sejam usadas. Algumas observações sobre
declaração de variáveis:
10.4. Atribuição
Java Portugol
idade = 16; idade < - 16
10.4.1. Casting
Casting é usado quando queremos atribuir valores de outros tipos para uma variável.
Por exemplo, se quisermos que um valor real seja armazenado em uma variável
declarada como inteiro, teremos que realizar o processo de casting, de acordo com o
código que se segue:
Abaixo temos uma tabela de possíveis conversões de valores usando casting. Apenas
o Boolean não pode ser convertido em nenhum dos demais tipos primitivos. Nos
quadros onde encontramos a abreviação Impl. na
Tabela 9 significa que esta conversão é implícita, o que torna a ulização do casting
desnecessária, a atribuição direta de valores pode ser feita (1).
10.5. Operadores
10.5.1. Aritméticos
Java Portugol
int a = 2 + 2; inteiro a = 2 + 2
int a = 2 - 2; inteiro a = 2 – 2
int a = 2 * 2; inteiro a = 2 * 2
double a = 2 / 2; real a = 2 / 2
int a = 2 % 2; inteiro a = 2 % 2
Essa ordem pode ser alterada usando parênteses, na linguagem Java usamos apenas
os parênteses com esta função, enquanto na matemática usamos ainda os colchetes e
as chaves. Os parênteses são resolvidos do mais interno para ao mais externo.
10.5.2. Relacionais
Java Portugol
A == B A=B
A != B A =/= B
A>B A>B
A >= B A >= B
A>B A>B
A<B A<B
A <= B A <= B
A comparação entre duas Strings não pode ser feita diretamente usando os
operadores relacionais, temos que usar um método (equals) da classe String para
compará-las, veja:
10.5.3. Lógicos
Para que o aluno seja aprovado, a comparação Nota >= 6.0 deve ser ter resultado
verdadeiro, bem como (E), Faltas < 25 deve ter resultado verdadeiro. Portanto, Nota >=
6.0 E Faltas < 25 deve ter resultado verdadeiro para que o aluno seja aprovado.
Usamos o OU, quando precisamos que pelo menos uma seja verdadeira. Isso
descobrimos com o estudo do problema. Veja o exemplo a seguir:
Exemplo 2 – Quando um zero carro é comprado a fábrica oferece uma garantia que
acaba quando o período de um ano termina, mas leva em consideração também a
quilometragem de 20000 km é atingida pelo veículo. O que acontecer primeiro extingue
a garantia. Então se a primeira situação acontece, acabou o período maior que 1, a
garantia acaba ou se a outra situação acontece, atingiu a quilometragem máxima maior
que 20000, também acaba a garantia.
Para que a garantia se acabe, apenas a comparação Periodo > 1 deve ter resultado
verdadeiro, (OU) apenas Quilometragem > 20000. Então, Periodo > 1 OU
Quilometragem > 20000 deve ter resultado verdadeiro, para que a garantia seja
automaticamente suspensa.
Java Portugol
(A == B && C == D) (A = B E C == D)
(A == B || C == D) (A == B OU C == D)
Em uma estrutrura de decisão simples temos uma expressão lógica que é testada, de
onde se decide que trexo de código deve ser executado.
Java Portugol
if (expressão_lógica){ se expressão_lógica entao
//Código se expressão_lógica for verdadeira //Código se expressão_lógica for verdadeira
} fimse
if (expressão_lógica){ se expressão_lógica entao
//Código se expressão_lógica for verdadeira //Código se expressão_lógica for verdadeira
}else{ senao
//Código se expressão_lógica for falsa //Código se expressão_lógica for falsa
} Fimse
Exercício Prático
Java Portugol
while (expressão_lógica){ enquanto expressão_lógica faz
//Código se expressão_lógica for verdadeira //Código se expressão_lógica for verdadeira
} fimenquanto
do{ Faz
//Código se expressão_lógica for verdadeira //Código se expressão_lógica for verdadeira
}while (expressão_lógica) enquanto (expressão_lógica)
for (cont = inicio;critério parada;atualiza do para contador de inicio ate fim passo p
cont){ //Código se expressão_lógica for verdadeira
//Código se expressão_lógica for verdadeira Proximo
}
Exemplo – Dado um número deseja-se identificar seus divisores. Iremos usar os três
tipos de laços mencionados na Tabela 19 resolução do exercício proposto. Iremos
primeiro mostrar a interface escolhida para este problema. Todas as soluções irão usar
a mesma interface.
O laço while com teste no início (Tabela 19 – primeira linha), assim como no if, tem uma
expressão lógica para realizar ações (código se expressão_lógica for verdadeira), a
diferença é que o laço repete o bloco de comamandos até que a expressão lógica seja
falsa.
Quando temos o while com teste no final a primeira iteração do laço é realizada
independente da expressão lógica, que só testada ao final do bloco (código se
expressão_lógica for verdadeira). Este bloco só será executado novamente se a
expressão lógica for verdadeira.
O laço for tem sua expressão lógica bem defiida, sendo necessário que seja colocada
uma variável, que chamamos de contadora, que é inicializada na primiera parte de sua
definição, podendo ser também declarada neste momento. Na segunda parte de sua
definição temos o critério de parada, ou seja, a expressão lógica, que está relacionada
com a variável contadora. Por fim, temos na última parte como a variável contadora vai
mudar de valor, em geral é incrementada de um, quanod podemos usar o operador ++
ou --, de acordo com a necessidade do problema.
Sugestão:
Exercício Prático
12.1. Vetores
Neste exemplo em Java, declaramos um vetor do tipo String chamado meses com 12
posições linha 17.
Agora precisamos inicializar o vetor com os meses, fazemos isso através dos índices
como vemos nas linhas 18 a 29, para cada posição do vetor atribuímos um valor do
tipo String.
Na linha 31(Figura 44) usamos o JOptionPane para exibir o conteúdo do vetor, que irá
apresentar uma caixa de dialogo com todos os meses atribuídos, para imprimi-los na
console precisaremos usar uma estrutura de repetição o for, como veremos abaixo.
Para imprimir uma posição especifica do vetor você deve colocar o nome do vetor
meses [2] (Dentro do colchete você coloca a posição do índice do vetor que será
exibido) ficando assim System.out.println(meses[2]);.
O que está dentro das { } será o conteúdo do vetor, correspondente a cada índice.
12.2. Matrizes
Subprogramas em Java são chamados de métodos. Todos os métodos tem uma lista
de parâmetros de entrada e um parâmetro de retorno.
13.1. Procedimentos
13.2. Funções
Vamos observar o código da Figura 47, abaixo. Neste exemplo temos um programa que
vai executar no console. Este programa calcula a força resultante, dados massa e
gravidade. Foi criado um método que tem como parâmetros Massa e Gravidade.
Como este método tem como retorno a força resultante, que é do tipo double. No
método temos apenas uma instrução que é o retorno da fórmula m*g. m irá receber o
valor passado em Massa, e g irá receber o valor passado em Gravidade.
14.1. Introdução
Como aspecto inicial, podemos dizer que a orientação a objetos é uma forma de
análise, projeto e programação de sistemas de software, que tem por base a
composição e interação entre diversas unidades computacionais, as quais de
chamamos de objetos.
Ela surgiu com a finalidade de facilitar e garantir mais agilidade aos então existentes
programas computacionais e viabilizar também um entendimento mais claro de como
se conectam, interagem e trabalham os processos computacionais.
14.2. Histórico
Como dito, houve grande impulso para a Orientação ao Objeto com a Smalltalk,
nascida nos laboratórios da Empresa Norte Americana Xerox (Estados Unidos da
América). Neste renomado laboratório chamado Palo Alto Research Center, foi
desenvolvida pela equipe liderada por Alan Curtis Kay uma sequência de protótipos
que resultou na linguagem Smalltalk, esta é considerada uma das primeiras linguagens
computacionais orientadas a objeto e por isso apropriada para iniciantes. Diante deste
trabalho é que o estudioso programador Alan Kay é considerado históricamente um dos
criadores do termo “Programação Orientada a Objetos”.
Alan Kay, percebeu que o conceito de objetos possuia grande força como instrumento
do conhecimento. De fato a partir deste conceito se pode fazer uma série de
associações da maneira como percebemos pessoas, objetos e o mundo em si. Se
prestarmos bem atenção, a programação orientada a objetos tem como filosofia básica
simular o mundo real dentro do mundo virtual, implementando objetos para que se
comportem de forma similar à realidade.
Dentro deste conceito, Alan Kay pensou em como construir um sistema de software
partindo de itens autônomos que interagissem entre si, estabelecendo os seguintes
princípios da orientação a objetos:
Simula
Smalltalk
C++
ADA
Eiffel
Object Pascal
Java
Common Lisp
C#
Perl
Python
Cabe ao programador fazer uma análise do objeto do mundo real que será
implementado, observar suas particularidades relevantes e implementá-las, definindo
quais características os objetos podem assumir, e quais ações podem executar. Mas,
como fazer isso?
Fonte: http://vidadeprogramador.com.br/
Figura 48 – Tirinha sobre o que é Programação Orientada a Objeto
Vamos voltar ao nosso exemplo e refletir como podemos criar uma classe para ele:
Classe:
Observe que a classe define quais os tipos de características que o objeto vai ter, e
quando construídos, cada um adquire um conjunto novo de estados. Cada objeto é
único, mesmo que possuam dados idênticos.
Agora, vamos considerar como exemplo um estudante, sendo nosso objeto um aluno.
Para que esse objeto possa ser instanciado, precisamos definir a classe. Fazendo uma
análise abstrata, temos de relevante que um aluno possui nome, idade, matrícula,
notas e média geral. Como ação, temos o ato de calcular a média geral das
disciplinas.Observe:
Classe:
Mas, afinal, como escrever uma classe em códigos? Ao definir como a classe será
usada, temos que obedecer a estrutura a seguir:
Onde:
Dicas de Programação
Pense em nomes apropriados para a sua classe. Não a chame simplesmente de
classe XYZ ou qualquer outro nome aleatório.
14.3.3. Mensagem
Mensagens são requisições enviadas de um objeto para outro para que alguma
operação seja realizada. É a forma como os objetos interagem entre si, enviam e
recebem mensagens e respostas. Eles manifestam essa interatividade através da
14.3.4. Atributo
Os objetos possuem atributos, que são informações que definem seu estado. Os
atribtos de cada objeto de uma classe têm seus próprios valores. Em uma classe,
podemos encontrar dois tipos de atributos: atributos de objeto e atributos de classe.
Atributos de objeto: cada objeto tem seus atributos, e não compartilham com
os outros.
Atributos de classe são aqueles que têm valores compartilhados por todos
os objetos da classe.
Vamos analisar nosso exemplo, a classe Aluno. Sabemos que a classe tem como
atributos de objeto o nome, a matricula, idade, as notas das disciplinas e a média geral
do aluno. Poderemos ter também um atributo que guarda a média de notas dos alunos
da sala, não fazendo sentido algum essa informação constar em todos os objetos.
Acrescentemos, então, o atributo (de classe) media_turma.
Onde:
Dicas de Programação
1 Declare todos os atributos de objeto na parte superior da declaração da classe.
2 Atributos de objeto, assim como qualquer outro atributo devem iniciar com letra
MINÚSCULA.
3 Use o tipo de dado apropriado para cada atributo declarado.
4 Declare atributos de objetos como private de modo que somente os métodos da
classe possam acessá-los diretamente.
14.3.5. Método
Onde:
Dicas de Programação
1 Nomes de métodos devem iniciar com letra MINÚSCULA.
2 Nomes de métodos devem conter verbos.
3 Sempre faça documentação antes da declaração do método. Use o estilo javadoc
para isso.
4
14.3.6. Construtores
Definindo um construtor:
Vejamos agora exemplo de construtor com parâmetros. Nesse caso, ao ser chamado,
o construtor irá inicializar os atributos de nome e matrícula com os valores dos
parâmetros.
Para que alguma funcionalidade seja utilizada, não é necessário que a forma como ela
foi implementada seja conhecida. Vamos imaginar o funcionamento de um telefone
celular. O usuário faz ligações, recebe, usa a calculadora e o alarme sem ter
conhecimento de como aquelas funções foram desenvolvidas, mas, para que ele as
utilize, basta apenas acessar da forma correta que o aparelho atenderá suas
expectativas, independente de ter sido implementado de uma forma ou de outra.
Somente classes do mesmo pacote podem ter acesso aos atributos e métodos no
modo protegido.
Vimos que podemos definir a forma como os nossos dados serão acessados e
modificados por outros objetos, utilizando os modificadores de acesso. Muitas vezes o
acesso aos dados se dá de forma privada (private), porém, em algumas situações se
faz necessário que outros objetos acessem esses dados. Devemos ter muita cautela ao
declarar esses métodos, só devendo ser declarados em caso de real utilidade. Mas de
qual forma ele fará este acesso, se o dado foi definido como privado?
Set
Get
Podemos utilizar o método Get para ler valores de atributos (de objeto ou de classe). O
método deverá retornar um valor, que é a informação contida no atributo, obviamente
com o mesmo tipo de dado. Ao método Get, não é necessário passarmos nenhum
argumento.
Veja abaixo como o método Get é chamado na classe principal. Observe a chamada do
método calculaMediaAluno() definido anteriormente.
A herança nos permite que características que são comuns a diversas classes sejam
reunidas em uma única classe base. A partir desta, outras classes herdam suas
especificações, e nelas apenas é implementado o que lhes falta, a diferença.
Essa classe base, que reúne informações comuns a outras classes, é chamada de
Superclasse. Já a Subclasse é uma classe mais específica, que herda as
funcionalidades da Superclasse e ainda adiciona funcionalidades específicas que por
ventura venha a ter.
Esse conceito de Superclasses e Subclasses faz com que exista uma estrutura de
hierarquia entre as classes.
No Java, a classe Object é a raiz principal, a classe suprema, e a partir dela todas as
outras subclasses são criadas. Ainda que você não expresse que sua classe está
herdando de outra, o Java considera que você está herdando de Object. Sem exceção,
todas as classes herdam de Object, de forma direta ou indireta.
Figura 65 – Modificador de acesso “protected” para ser acessado também pelas subclasses
Figura 68 – Instância de objetos e chamada do método Set na classe principal para atribuição de valores
Veja a chamada dos métodos GETs na classe principal. Observe como o conceito de
herança é praticado pelo objeto da subclasse AlunoEEEP. Ele utiliza métodos de sua
própria classe (calculaMediaTecnicaAluno()) e herda métodos de sua superclasse
(calculaMediaAluno()).
Figura 69 – Instância de objetos e chamada do método SET na classe principal para atribuição de
valores
Agora, na classe principal, vamos ver como objetos das classes Aluno e AlunoEEEP se
comportam ao chamarem o método “calculaMediaAluno()”:
A saída do sistema é a média calculada das três notas enviadas por parâmetro:
Agora vamos refletir sobre a seguinte situação: em alguns momentos a média do aluno
de uma escola profissionalizante deve ser calculada apenas com as discilplinas da
base comum, porém em outros momentos é necessário que a nota seja calculada
também incluindo as disciplinas técnicas. Usando o conceito de polimorfismo, podemos
implementar o método “calculaMediaAluno()” na classe AlunoEEEP de forma que,
automaticamente, o programa saiba de que forma calcular: somente com as notas da
Uma classe abstrata é uma superclasse criada apenas para representar entidades e
conceitos abstratos, e dela não são gerados objetos, ou seja, a classe abstrata não é
instanciada.
Geralmente criamos uma classe com um propósito específico, porém, a classe abstrata
tem outra função, ela é criada com a intenção de que outras classes herdem
funcionalidades delas. É definida como um modelo genérico a ser utilizado pelas suas
subclasses.
Agora vamos imaginar a nossa classe Aluno contendo os dados básicos comuns a
todos os alunos da rede estadual de ensino. A superclasse Aluno poderá ser abstrata,
tendo como subclasses AlunoConv, AlunoEEEP e AlunoSuperior, que são,
respectivamente, alunos de escolas convencionais, alunos de escolas
profissionalizantes e alunos de ensino superior. Se todos os alunos se encaixam em
um desses três tipos, não faz sentido instanciar a classe Aluno, sendo ela, portanto,
uma classe abstrada.
Métodos abstratos são métodos da classe abstrata que não têm implementação. Eles
são declarados apenas com a assinatura, sem o corpo e com a palavra-chave abstract.
Exercício Prático
“Dados são itens referentes a uma descrição primária de objetos, eventos, atividades e
transações que são gravados, classificados e armazenados, mas não chegam a ser
organizados de forma a transmitir algum significado específico” (Turban, McLean e
Wetherbe, 004, pg. 63).
Exemplo
Através dos conceitos acima, já podemos ter uma ideia do significado de dados,
informações e conhecimentos para um Sistema de Informação. Vamos analisar um
exemplo:
Milena é aluna de uma EEEP. Assim como todos os demais, possui um boletim com
notas de diversas disciplinas. Essas notas nada mais são do que números que de
alguma forma foram friamente calculados, gerados e impressos em um papel através
de uma programação. As notas ali contidas são nada mais do que dados.
Se analisarmos seu boletim, podemos observar que todas as suas notas são boas, pois
estão bem acima da média. Contextualizando esses dados, obtemos uma informação:
Milena é uma ótima aluna.
Indo mais além, analisando o seu comportamento, temos que ela é uma aluna proativa
em sala de aula, administra bem o seu tempo, utiliza as aulas de estudo para de fato
estudar e pratica a TESE como sua filosofia de vida. Contextualizando essas
informações chegamos a um conhecimento sobre a pessoa de Milena.
Além dos fatores citados, outro a ser considerado é a análise dos dados relevantes
para o Sistema de Informação. Tais dados devem ser cuidadosamente examinados,
ponderados e utilizados de forma consistente, a fim de gerarem informações que de
fato sejam úteis aos usuários. Um sistema que considera a entrada de dados
inconsistentes em seu funcionamento, como data em branco ou preços com valores
nulos, certamente não chegará a uma saída interessante.
“É muito difícil criar produtos usando grupos foco. Muitas vezes, as pessoas
não sabem o que elas querem até que você mostre a elas.”
Steve Jobs
Deverá ser criado um modelo lógico do sistema, constituído, entre outros, do diagrama
de fluxo de dados, dicionário de dados e principais algoritmos.
Ao final da fase, já deverá estar definido pelo analista um relatório contendo qual tipo
de banco de dados será adotado pelo sistema, os arquivos que serão utilizados, a
definição dos arquivos de dados e seus layouts, relatórios a serem emitidos e os tipos
de dispositivos de armazenamento de dados.
Nesse momento, os relatos dos usuários ainda podem ser de grande valia para a
condução do sistema. O analista de sistemas deve definir quais programas irão compor
o sistema, e produzir as especificações referentes a cada um deles, especificações
essas que serão posteriormente entregues e codificadas pelos programadores.
18.5.6. Implementação
Inicia-se, após a finalização dos programas, os testes. Todo o sistema deve ser testado
exaustivamente antes de ser posto em funcionamento. Ainda nesta fase, os erros
detectados na homologação (testes) são corrigidos e testados novamente.
Uma vez sem erros, a equipe deve dedicar-se a escrever os manuais do usuário, um
tutorial contendo todas as informações necessárias para seu funcionamento.
Ao ser submetido ao uso real, o sistema ainda poderá apresentar alguma falha,
portando a equipe de analista e programadores ainda pode realizar ajustes.
19.1. Introdução
Acontece que tomar conhecimento desses requisitos é uma tarefa que, na prática, não
é tão simples como parece. Muitas vezes os próprios gestores e usuários não
conseguem expressar claramente seus objetivos. Por desconhecerem os
procedimentos técnicos que regem um Sistema de Informação, muitas vezes eles
ocultam informações de extrema importância, fundamentais para o planejamento da
solução.
19.2.1. Entrevista
É uma das formas mais eficientes de se obter as informações desejadas. Não existe
uma fórmula ou receita certa para a sua condução, mas, para obter um melhor
resultado, o analista deve atuar de forma racional e metódica, com certa flexibilidade,
porém, sem improvisações desnecessárias.
19.2.2. Pesquisa
Embora a entrevista seja uma técnica altamente eficaz, não deve ser a única fonte de
levantamento de requisitos. Outra forma de se obter dados interessantes é a pesquisa.
O analista poderá analisar documentos e relatórios gerados em diversos setores, além
de arquivos, e baseado neles tirar outras conclusões, que podem vir a somar com o
resultado já obtido na entrevista.
19.2.3. Questionário
19.2.4. Reuniões
19.2.5. Observações
Requisitos funcionais são aqueles que descrevem funcionalidades que o sistema deve
ter para atender às expectativas dos usuários. Por exemplo:
A quem interessa:
Gerentes de clientes
Usuários finais do sistema
Engenheiros do cliente
Gerentes do fornecedor
Arquitetos do sistema
A quem interessa:
A quem interessa:
Foi desenvolvida em 1994 por Grady Booch, James Rumbaugh e Ivar Jacobson,
criadores das três metodologias mais conceituadas de modelagem de sistemas
orientados a objetos, que juntos, resolveram fazer uma compilação dessas três
técnicas, trazendo as melhores ideias de cada uma delas.
“UML (Unified Modeling Language) é uma família de notações gráficas, apoiadas por
um metamodelo único, que ajuda na descrição e no projeto de sistemas de software,
particularmente daqueles construídos utilizando o estilo orientado a objetos (OO).”
Mas, como a UML faz tudo isso? Utilizando diagramas. Os diagramas são ilustrações
gráficas de uma coleção de elementos, que descrevem o sistema, capturando
diferentes aspectos do mesmo.
Diagramas Estruturais:
Diagramas Comportamentais:
É composto por:
DBDesigner: ASTAH:
http://www.fabforce.net/ http://www.astah.net/
Exercício Prático
Bibliografia
1. Antonio Manso, Célio Marques, Pedro Dias. http://www.dei.estt.ipt.pt/portugol. s.l. : Instituto
Politécnico de Tomar.
2. Caelum Ensino e Inovação. Java e Orientação a Objetos. [www.caelum.com - 10/05/2012]. São Paulo,
São Paulo, Brasil : www.caelum.com, 10 de 05 de 2012.
7. Kathy Sierra, Bert Bates. Use a Cabeça - Java. Rio de Janeiro : O'Reilly, 2005.
11. de Souza, Marcos Antônio Furlan e Goncílio, Marcelo Marques. Algoritmos e Lógica de
Programação. s.l. : Thomson.
12. Deitel, Harvey M. e Deitel, Paul J. Java como Programar 8ª Ed. s.l. : Pearson.
13. Ascencio, Ana Fernanda Gomes e Ven, Edilene Aparecida. Fundamentos da Programação de
Computadores – Algoritmos, Pascal, C/C++, JAVA 2 Edição. s.l. : Pearson Prentice Hall.
14. Forbellone, André Luiz Villar. Lógica de Programação – A Construção de Algoritmos e Estruturas de
Dados. São Paulo : Makron, 1993.
15. Puga, Sandra e Rissetti, Gerson. Lógica de Programação e Estruturas de Dados. s.l. : Pearson.
17. Evolução Educação e Tecnologia. Orientação a Objetos com Java. [www.evolucao.com.br – junho de
2012].
10. O Sr. João necessita saber o consumo médio de um automóvel, e solicitou para
você desenvolver um algoritmo que sendo fornecido a distancia total percorrida
pelo automóvel e o total de combustível gasto, mostrar o consumo do
automóvel.
11. Escreva um algoritmo que leia o nome de um vendedor, o seu salário fixo e o
total de vendas efetuadas por ele no mês (em dinheiro). Sabendo que este
vendedor ganha 15% de comissão sobre suas vendas efetuadas, informar o seu
nome, o salário fixo e o salário no final do mês.
17. Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras
ou falsas.
A. a) (A+C) > B ( )
B. b) B >= (A + 2) ( )
Redes de Computadores – Análise e Programação 140
Escola Estadual de Educação Profissional Ensino Médio Integrado a Educação Profissional
C. c) C = (B –A) ( )
D. d) (B + A) <= C ( )
E. e) (C+A) > B ( )
18. Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são
verdadeiras ou falsas.
A. a) (A > C) AND (C <= D) ( )
B. b) (A+B) > 10 OR (A+B) = (C+D) ( )
C. c) (A>=C) AND (D >= C) ( )
22. Faça um diagrama de bloco que leia um número inteiro e mostre uma
mensagem indicando se este número é par ou ímpar, e se é positivo ou
negativo.
de poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as
indústrias do 1º grupo são intimadas a suspenderem suas atividades, se o índice
crescer para 0,4 as indústrias do 1º e 2º grupos são intimadas a suspenderem
suas atividades, se o índice atingir 0,5 todos os grupos devem ser notificados a
paralisarem suas atividades. Faça um diagrama de bloco que leia o índice de
poluição medido e emita a notificação adequada aos diferentes grupos de
empresas.
25. Elabore um algoritmo que gera e escreve os números ímpares dos números
lidos entre 100 e 200.
Aula 7 – Subprogramas
27. A Secretaria de Meio Ambiente que controla o índice de poluição mantém 3
grupos de indústrias que são altamente poluentes do meio ambiente. O índice
de poluição aceitável varia de 0,05 até 0,25. Se o índice sobe para 0,3 as
indústrias do 1º grupo são intimadas a suspenderem suas atividades, se o índice
crescer para 0,4 as indústrias do 1º e 2º grupo é intimado a suspenderem suas
atividades, se o índice atingir 0,5 todos os grupos devem ser notificados a
paralisarem suas atividades. Faça um programa que leia o índice de poluição
medido e emita a notificação adequada aos diferentes grupos de empresas.
28. Elabore um programa que gera e escreve os números ímpares dos números
lidos entre 100 e 200, estes valores devem ser passados pelo usuário.
33. Escreva um algoritmo para calcular o maior e o menor de três números inteiros.
34. Escreva um algoritmo para calcular, dados três números inteiros, a soma dos
dois maiores.
35. Escreva um algoritmo para calcular o máximo divisor comum de dois números
inteiros.
36. Escreva um algoritmo para calcular o mínimo múltiplo comum de dois números
inteiros.
37. Escreva um algoritmo para calcular a soma dos números positivos, inferiores ou
iguais a 1000.
40. Ler três valores (A,B e C) representando as medidas dos lados de um triângulo e
escrever se formam ou não um triângulo. Obs. Para forma um triângulo, o valor
de cada lado deve ser menor que a soma dos outros dois lados.
41. Ler o nome de dois times e o número de gols marcados na partida (para cada
time ). Escreva o nome do vencedor. Caso não haja vencedor deverá ser
impressa a palavra EMPATE!.
42. Um empresário quer premiar seus vendedores de acordo com sua eficiência. O
vendedor recebe o prêmio de 10% do montante vendido.
44. Um empresário quer premiar seus vendedores de acordo com sua eficiência.
Quando o vendedor atingir a meta de R$ 1.000,00 ele ganha 10% do
valor que ele vendeu.
Quando o vendedor atingir o montante de R$ 5.000,00, sua premiação
será da ordem de 15%
Acima de R$ 10.000,00 ele recebe R$ 1.200,00.
47. Faça um programa em Java e em Portugol que armazene uma lista de contatos
com 10 posições.
49. Escreva em pseudocódigo e um programa em Java, uma matriz de 4x4 que será
preenchida pelo usuário e exibida o resultado na tela.
50. Vamos desenvolver um programa que receba os valores de uma matriz 2x2,
calcule e mostre a matriz resultante da multiplicação dos elementos da matriz
2x2 pelo seu maior elemento.
Fonte dos exercícios: Balagtas, Florence Tiu. Projeto J.E.D.I. Students Manual.s.l..
51. Sua tarefa é criar uma classe que contenha um Registro de Agenda. A tabela
abaixo descreve as informações que um Registro de Agenda deve conter:
52. Crie uma classe Agenda que possa conter entradas de objetos tipo Registro de
Agenda (utilize a classe criada no primeiro exercício). Devem ser oferecidos os
seguintes métodos para agenda:
Adicionar registro
Excluir registro
Visualizar registros
Modificar registro
Aula 17 – Polimorfismo
53. Neste exercício, queremos criar um registro mais especializado de Student que
contém informações adicionais sobre um estudante de Informática. Sua tarefa é
estender a classe StudentRecord que foi implementada nas lições anteriores e
acrescentar atributos e métodos que são necessários para um registro de um
estudante de Informática. Utilize override para modificar alguns métodos da
superclasse StudentRecord, caso seja necessário.
54. Crie uma classe abstrata chamada Shape com os métodos getArea() e
getName(). Escreva duas de suas subclasses Circle e Square. E acrescente
métodos adicionais a estas subclasses.
Fonte: Balagtas, Florence Tiu. Projeto J.E.D.I. Students Manual.s.l..