Olá a Todos!!!
Adiada prova de Programação III que seria realizada no dia 03 (Três) de Outubro.
Devido ao fato de alguns alunos do curso realizarem, no dia 03 (Três) e 04 (Quatro) de Outubro, a prova do ENEM (Exame Nacional do Ensino Médio) a prova de Programação III será adiada para o dia 10 (Dez) de Outubro. Porém, no dia 03 de Outubro haverá aula normal cujo assunto será a interligação do Visual Basic 6.0 com Banco de Dados (Introdução).
Atenciosamente
Felipe Antonio Cardoso
Representante da matéria de Programção III.
22 de setembro de 2009
15 de setembro de 2009
TAD Sequência com Arranjo Circular
Implemente o TAD sequência baseado em um arranjo variável usado de forma circular de maneira que as inserções no início e no fim da sequência executem em tempo constante.
Classes:
Posição:
public class Posicao
{
// indice no vetor
private int indice;
// referencia para o elemento
private Object elemento;
// construtor
public Posicao(int indice, Object elemento)
{
this.indice = indice;
this.elemento = elemento;
}
// retorna indice
public int index()
{
return indice;
}
// retorna elemento
public Object element()
{
return elemento;
}
}
Interador:
public class Iterador
{
// armazena elementos
private Posicao[] elementos;
// controla posicao no array
private int pos;
// construtor
public Iterador(Posicao[] elementos)
{
this.elementos = elementos;
pos = 0;
}
// retorna objeto corrente do array
public Posicao object()
{
return elementos[pos];
}
// verifica se tem proximo elemento
public boolean hasNext()
{
if(pos == elementos.length)
return false;
return true;
}
// move para o proximo elemento
public Posicao nextObject()
{
if(hasNext())
return elementos[pos++];
return null;
}
// volta ao começo
public void reset()
{
pos = 0;
}
}
Sequência:
public class Sequencia
{
// no. max. de elementos
private final int MAX_ELEMENTOS = 100;
// array de posicoes
private Posicao[] sequencia;
// variaveis de controle
private int first;
private int last;
private int N;
// construtor
public Sequencia()
{
sequencia = new Posicao[MAX_ELEMENTOS];
first = 0;
last = 0;
N = MAX_ELEMENTOS;
}
// insere elemento na primeira posicao
public void insertFirst(Object o)
{
// calcula possivel indice
int pos = first - 1;
// verifica se menor que limite
if(pos < 0)
pos = N - 1; // circular
// verifica se sequencia esta cheia
if(pos == last)
{
aumentar();
// chama funcao novamente apos aumentar
insertFirst(o);
}
else
{
// cria nova posicao
Posicao posicao = new Posicao(pos, o);
// insere na posicao candidata
sequencia[pos] = posicao;
// atualiza indice da primeira posicao
first = pos;
}
}
// insere elemento na ultima posicao
public void insertLast(Object o)
{
// cria nova posicao
Posicao posicao = new Posicao(last, o);
// insere na ultima posicao
sequencia[last] = posicao;
int pos;
// atualiza indice da ultima posicao
pos = (last + 1) % N;
// verifica se sequencia esta cheia
if(pos == first)
aumentar();
else
last = pos; // atualiza indice da ultima posicao
}
// duplica tamanho da sequencia
public void aumentar()
{
// cria nova sequencia com dobro do tamanho
Posicao[] temp = new Posicao[2*sequencia.length];
// contadores auxiliares
int pos = first;
int i = 0;
// copia todos os elementos para nova sequencia
while(pos != last)
{
temp[i] = new Posicao(i, sequencia[pos].element());
i++;
pos = (pos + 1) % N;
}
// atualiza indices
first = 0;
last = i;
sequencia = temp;
N = sequencia.length;
}
public int size()
{
return (N - first + last) % N;
}
public Iterador elements()
{
// cria array de elementos a serem retornados
Posicao[] elementos = new Posicao[size()];
// contadores auxiliares
int pos = first;
int i = 0;
// copia todos os elementos para array de saida
while(pos != last)
{
elementos[i] = sequencia[pos];
i++;
pos = (pos + 1) % N;
}
// cria iterador auxiliar e passa elementos
Iterador iterador = new Iterador(elementos);
// retorna iterador
return iterador;
}
// insere elemento antes de posicao p
public void insertBefore(Posicao p, Object o)
{
// indice para ultima posicao (valor corrente)
int pos = last;
// desloca todos os elementos depois de p
do
{
sequencia[pos] = new Posicao(pos, sequencia[pos-1].element());
pos--;
// verifica limite inferior
if(pos < 0)
pos = N-1;
}
while(pos > p.index());
// insere novo elemento
sequencia[pos] = new Posicao(pos, o);
// atualiza indice para ultimo elemento
last = (last + 1) % N;
// verifica necessidade de crescimento
if(size() == N)
aumentar();
}
}
Testa Sequência:
public class SequenciaApp
{
public static void main(String args[])
{
Posicao p = null;
Iterador it;
Sequencia seq = new Sequencia();
seq.insertLast("Bola");
seq.insertLast("Caixa");
seq.insertLast("Chave");
seq.insertFirst("Lapis");
it = seq.elements();
while(it.hasNext())
{
p = it.nextObject();
System.out.println((String)p.element());
}
seq.insertBefore(p, "Controle Remoto");
System.out.println();
it = seq.elements();
while(it.hasNext())
{
p = it.nextObject();
System.out.println((String)p.element());
}
}
}
Classes:
Posição:
public class Posicao
{
// indice no vetor
private int indice;
// referencia para o elemento
private Object elemento;
// construtor
public Posicao(int indice, Object elemento)
{
this.indice = indice;
this.elemento = elemento;
}
// retorna indice
public int index()
{
return indice;
}
// retorna elemento
public Object element()
{
return elemento;
}
}
Interador:
public class Iterador
{
// armazena elementos
private Posicao[] elementos;
// controla posicao no array
private int pos;
// construtor
public Iterador(Posicao[] elementos)
{
this.elementos = elementos;
pos = 0;
}
// retorna objeto corrente do array
public Posicao object()
{
return elementos[pos];
}
// verifica se tem proximo elemento
public boolean hasNext()
{
if(pos == elementos.length)
return false;
return true;
}
// move para o proximo elemento
public Posicao nextObject()
{
if(hasNext())
return elementos[pos++];
return null;
}
// volta ao começo
public void reset()
{
pos = 0;
}
}
Sequência:
public class Sequencia
{
// no. max. de elementos
private final int MAX_ELEMENTOS = 100;
// array de posicoes
private Posicao[] sequencia;
// variaveis de controle
private int first;
private int last;
private int N;
// construtor
public Sequencia()
{
sequencia = new Posicao[MAX_ELEMENTOS];
first = 0;
last = 0;
N = MAX_ELEMENTOS;
}
// insere elemento na primeira posicao
public void insertFirst(Object o)
{
// calcula possivel indice
int pos = first - 1;
// verifica se menor que limite
if(pos < 0)
pos = N - 1; // circular
// verifica se sequencia esta cheia
if(pos == last)
{
aumentar();
// chama funcao novamente apos aumentar
insertFirst(o);
}
else
{
// cria nova posicao
Posicao posicao = new Posicao(pos, o);
// insere na posicao candidata
sequencia[pos] = posicao;
// atualiza indice da primeira posicao
first = pos;
}
}
// insere elemento na ultima posicao
public void insertLast(Object o)
{
// cria nova posicao
Posicao posicao = new Posicao(last, o);
// insere na ultima posicao
sequencia[last] = posicao;
int pos;
// atualiza indice da ultima posicao
pos = (last + 1) % N;
// verifica se sequencia esta cheia
if(pos == first)
aumentar();
else
last = pos; // atualiza indice da ultima posicao
}
// duplica tamanho da sequencia
public void aumentar()
{
// cria nova sequencia com dobro do tamanho
Posicao[] temp = new Posicao[2*sequencia.length];
// contadores auxiliares
int pos = first;
int i = 0;
// copia todos os elementos para nova sequencia
while(pos != last)
{
temp[i] = new Posicao(i, sequencia[pos].element());
i++;
pos = (pos + 1) % N;
}
// atualiza indices
first = 0;
last = i;
sequencia = temp;
N = sequencia.length;
}
public int size()
{
return (N - first + last) % N;
}
public Iterador elements()
{
// cria array de elementos a serem retornados
Posicao[] elementos = new Posicao[size()];
// contadores auxiliares
int pos = first;
int i = 0;
// copia todos os elementos para array de saida
while(pos != last)
{
elementos[i] = sequencia[pos];
i++;
pos = (pos + 1) % N;
}
// cria iterador auxiliar e passa elementos
Iterador iterador = new Iterador(elementos);
// retorna iterador
return iterador;
}
// insere elemento antes de posicao p
public void insertBefore(Posicao p, Object o)
{
// indice para ultima posicao (valor corrente)
int pos = last;
// desloca todos os elementos depois de p
do
{
sequencia[pos] = new Posicao(pos, sequencia[pos-1].element());
pos--;
// verifica limite inferior
if(pos < 0)
pos = N-1;
}
while(pos > p.index());
// insere novo elemento
sequencia[pos] = new Posicao(pos, o);
// atualiza indice para ultimo elemento
last = (last + 1) % N;
// verifica necessidade de crescimento
if(size() == N)
aumentar();
}
}
Testa Sequência:
public class SequenciaApp
{
public static void main(String args[])
{
Posicao p = null;
Iterador it;
Sequencia seq = new Sequencia();
seq.insertLast("Bola");
seq.insertLast("Caixa");
seq.insertLast("Chave");
seq.insertFirst("Lapis");
it = seq.elements();
while(it.hasNext())
{
p = it.nextObject();
System.out.println((String)p.element());
}
seq.insertBefore(p, "Controle Remoto");
System.out.println();
it = seq.elements();
while(it.hasNext())
{
p = it.nextObject();
System.out.println((String)p.element());
}
}
}
Marcadores:
Algoritmos e Estruturas de Dados I
Banco de Dados I - 05
UML - Parte I
Exercício V:
Responder as perguntas abaixo:
1)Quais as fases do desenvolvimento de sistemas utilizados na UML? Explique-os.
2)A UML é composta por quais partes?
3) Quantas visões, diagramas e modelos de elementos são utilizados nas fases de análise de requisitos, análise e design?
4) Quais as visões que compõem um sistema? Explique 2 deles.
5)Quais são os diagramas utilizados pela UML? Explique 2 deles.
Possível Resolução
Exercício V:
Responder as perguntas abaixo:
1)Quais as fases do desenvolvimento de sistemas utilizados na UML? Explique-os.
2)A UML é composta por quais partes?
3) Quantas visões, diagramas e modelos de elementos são utilizados nas fases de análise de requisitos, análise e design?
4) Quais as visões que compõem um sistema? Explique 2 deles.
5)Quais são os diagramas utilizados pela UML? Explique 2 deles.
Possível Resolução
Marcadores:
Banco de Dados I
10 de setembro de 2009
Banco de Dados I - 04
Exercício IV-a:
Responda as questões abaixo:
1) Quem são os criadores do UML e quais metodologias cada um deles criou?
2) Quais os conceitos que Coad, Yourdon, Pressman apresentaram?
3) O que diz as metodologias de Booch, OMT, OOSE e Objectory?
4) Quais os principais objetivos da UML?
5) A UML pode ser utilizada por vários tipos de sistemas, quais são?
6) Utilizando a Internet, cite 4 softwares de mercado para modelagem de UML?
Possível Resolução
Responda as questões abaixo:
1) Quem são os criadores do UML e quais metodologias cada um deles criou?
2) Quais os conceitos que Coad, Yourdon, Pressman apresentaram?
3) O que diz as metodologias de Booch, OMT, OOSE e Objectory?
4) Quais os principais objetivos da UML?
5) A UML pode ser utilizada por vários tipos de sistemas, quais são?
6) Utilizando a Internet, cite 4 softwares de mercado para modelagem de UML?
Possível Resolução
Marcadores:
Banco de Dados I
5 de setembro de 2009
Exercícios Programação III - 03 e 04
Execício 03 - Download
Crie um gráfico igual a figura abaixo, onde a equação da reta da linha verde é y=x*3 e a equação da reta da linha vermelha é y=x^2:
Execício 04 - Download
Calcular a equação do 2º grau e plotar o gráfico da função.
Crie um gráfico igual a figura abaixo, onde a equação da reta da linha verde é y=x*3 e a equação da reta da linha vermelha é y=x^2:
Execício 04 - Download
Calcular a equação do 2º grau e plotar o gráfico da função.
Marcadores:
Programação III
Banco de Dados I - 03
História dos Bancos de Dados
UML - Introdução
Exercício IV:
1) Quais as diferenças entre os Modelos de Banco de Dados Hierárquico, Redes, Relacional e OO ?
2) Olhando as regras de Codd, diga qual delas é a mais importante e por quê?
3) Olhando a História do Banco de Dados, o que podemos esperar para o futuro?
4) Quais os Bancos de Dados utilizados no Brasil e no Mundo. Colocar em ordem de utilização.
Possível Resolução
UML - Introdução
Exercício IV:
1) Quais as diferenças entre os Modelos de Banco de Dados Hierárquico, Redes, Relacional e OO ?
2) Olhando as regras de Codd, diga qual delas é a mais importante e por quê?
3) Olhando a História do Banco de Dados, o que podemos esperar para o futuro?
4) Quais os Bancos de Dados utilizados no Brasil e no Mundo. Colocar em ordem de utilização.
Possível Resolução
Marcadores:
Banco de Dados I
3 de setembro de 2009
Engenharia de Software I - Exercícios
Capítulo I
1 – A razão é que os sistemas estão cada vez mais complexos e o volume de dados cada vez maior e com freqüentes modificações, com isso dificultando a tomada de decisões através dos dados recolhidos sem um sistema para auxiliar e navegar entre esses dados.
2 - SUMIU! :(
3 – Programas de computador, procedimentos e documentação possivelmente associados e dados relativos ao funcionamento de um sistema computador.
4 - A aplicação de uma sistemática e disciplinada, quantificável para o desenvolvimento, operação e manutenção de software, ou seja, a aplicação da engenharia de software.
5 - Um padrão planejado e sistemático de todas as ações necessárias para fornecer confiança adequada ao software que está em conformidade com os requisitos técnicos estabelecidos. Um conjunto de atividades destinadas a avaliar o processo pelo qual os produtos são desenvolvidos ou fabricados.
6 - O conjunto completo de programas de computador, procedimentos e documentação possivelmente associados e dados designados para entrega a um usuário.
7 – Projeto é uma concepção mental ou idéia de um produto, geralmente representada por modelos. É a representação de um sistema de software criada para facilitar análise,
planejamento e tomada de decisão.
8 - Por Processo entende-se uma série de ações ou passos, planejados cuidadosamente, a serem seguidos pelos desenvolvedores de software, sistematizando, disciplinando e
permitindo gerenciar o desenvolvimento de sistemas computadorizados.
9 – Atividades Executivas são atividades executadas nas fases:
Fase Requisitos do Usuário – RU, Fase Requisitos de Software – RS, Fase Projeto Arquitetural – PA, Fase Projeto Detalhado e Produção – PD, Fase Transferência – TR, Fase Operações e Manutenção – OM.
10 – Atividades Gerenciais são atividades como:
Gerência de Projeto, Gerência de Configuração, Gerência de Verificação e Validação e Gerência de Qualidade.
Capítulo II
1 -
* Fase Requisitos Do Usuario - RU;
* Fase Requisitos Do Software - RS;
* Fase Projeto Arquitetural - PA;
* Fase Projeto Detalhado E Produção - PD;
* Fase Projeto Transferencia - TR;
* Fase Operações E Manutenção - OM;
2 -
* DRU - Documento Requisitos Do Usuário;
* DRS - Documento Requisitos Do Software;
* DRA - Documento Projeto Arquitetural;
* DPD - Documento Projeto Detalhado;
* MUS - Manual Do Usuário;
* DTR - Documento De Transferencia;
* DHP - Documento Historico Do Projeto
3 - Começa quando o DRU é liberado pelo usario para uma revisao formal e termina quando o produto é descartado.
4 - Começa na RS (definição dos requisitos de software) termina no PD (projeto detalhado)
5 - Para os usuários definirem o que eles desejam e para os desenvolvedores definirem o que eles entenderam que o usuário deseja.
6 - Uma abordagem em cascata é adequada quando existe um projeto simples com fases seqüencial, o que torna essa abordagem simplificada e popular, requisitos estáveis e de alta qualidade, a duração do projeto seja de no máximo 2 anos (ou 4000 horas) e permite retomar etapas para correção.
7 - Abordagem incremental é utilizada quando a liberação se faz necessário para estar acordado com os requisitos, fazer integração com sistema já existente ou parte do sistema e oferecer uma prévia que o software será suficiente para resolver o problema.
8 - Abordagem evolucionária é uma série de projetos menores, onde cada projeto aproveita a experiência da liberação anterior e deve ser usada quando requisitos do usuário são de difícil implementação, pois podem depender de tecnologias futuras ou não são totalmente conhecidos, alguns requisitos podem atrasar a liberação do software, portanto necessita um acompanhamento evolucionário para a integração.
9 - Abordagem em cascata é utilizada para o desenvolvimento de software em curto prazo, quando são necessárias apenas pequenas correções e aperfeiçoamento, essas que são feitas na fase de Operação e Manutenção (OP).
10 - A execução simultânea ocorre quando a elaboração do projeto está em andamento e novos requisitos de software são apresentados, resultando em um maior tempo de desenvolvimento e necessidade de uma nova elaboração do projeto. O recomendado para esse projeto seria abordado o Método Cascata com Liberação Incremental.
Capítulo III
1 – O responsável pelo RU é o próprio Usuário junto ao desenvolvedor, onde ele especifica o que o seu sistema deve fazer.
2 – É aceitável desde que o desenvolvedor faça esse documento junto com o usuário e com a aprovação do mesmo.
3 – Os tipos são: Capacidade, Define o que o software deve fazer; Restritivos, Coloca restrições de como o software deve ser construído e operado.
4- Os requisitos do usuário se estruturam da seguinte forma:
– Capturar os Requisitos do Usuário;
– Determinar o ambiente operacional;
– Especificar os Requisitos do Usuário;
– Escrever o Plano dos Testes de Aceitação;
– Escrever os planos para a fase Requisitos de Software;
– Rever os Requisitos do Usuário.
5 – a) O usuário deve ser capaz de gerar relatórios através do software, não o software por si só gerar um relatório.
b) A especificação em relação à boa interface com o usuário está muito genérica, irá depender do ambiente operacional do software.
c) Falhas não é um requisito de usuário, nenhum usuário irá pedir que seu software tenha uma média de falha em 3 horas.
d) Está correto.
e) Este argumento não é um requisito de usuário, é um requisito de software.
6- Cada requisito de usuário deve conter pelo menos as seguintes características: Identificador, Necessidade, Prioridade, Fonte e Estabilidade.
7 – As interfaces para sistemas externos devem estar descritas nas características de restrição no requisito de usuário.
8 – Um sistema com em média 700 requisitos é considerado um sistema de porte Médio enquanto deveria ser desenvolvido com até 20 pessoas.ano, com apenas 2 pessoas.ano pode ser desenvolvido um software de porte pequeno de até 100 requisitos.
9 – O objetivo é sempre mostrar a opção mais adequada para o usuário, mas se o mesmo insistir em utilizar a interface escolhida por ele, assim deve ser feito.
10 – Não se deve colocar especificações desse tipo em um documento de requisitos de usuário, deve ser colocado especificações com uma linguagem menos técnica.
Marcadores:
Engenharia de Software I
Algoritmos e Estruturas de Dados I - Será?
interface estruturaLinear {
// verifica se a estrutura tem elementos
public boolean estaVazia();
// devolve a quantidade de elementos da estrutura
public int tamanho();
// insere um elemento no início da estrutura
public void inserir(Object p0);
// insere um elemento no fim da estrutura
public void inserirCauda(Object p0);
// remove um elemento do início da estrutura
public Object remover();
// remove um elemento do fim da estrutura
public Object removerCauda();
}
/****************/
public class ArrayCircularList implements estruturaLinear {
protected Object[] array;
protected int start,end,number;
public void pArrayList(int maxsize){
array = new Object[maxsize];
start = end = number = 0;
}
public boolean estaVazia(){
return number == 0;
}
public boolean isFull(){
return number >= array.length;
}
public int tamanho(){
return number;
}
public void inserir(Object o){
if(number < array.length){
array[start = (++start % array.length)] = o;
number++;
}
}
public void inserirCauda (Object o){
if(number < array.length){
array[end] = o;
end = (--end + array.length) % array.length;
number++;
}
}
public Object remover(){
if(estaVazia())
return null;
number--;
int i = start;
start = (--start + array.length) % array.length;
return array[i];
}
public Object removerCauda(){
if(estaVazia())
return null;
number--;
return array[end = (++end % array.length)];
}
}
// verifica se a estrutura tem elementos
public boolean estaVazia();
// devolve a quantidade de elementos da estrutura
public int tamanho();
// insere um elemento no início da estrutura
public void inserir(Object p0);
// insere um elemento no fim da estrutura
public void inserirCauda(Object p0);
// remove um elemento do início da estrutura
public Object remover();
// remove um elemento do fim da estrutura
public Object removerCauda();
}
/****************/
public class ArrayCircularList implements estruturaLinear {
protected Object[] array;
protected int start,end,number;
public void pArrayList(int maxsize){
array = new Object[maxsize];
start = end = number = 0;
}
public boolean estaVazia(){
return number == 0;
}
public boolean isFull(){
return number >= array.length;
}
public int tamanho(){
return number;
}
public void inserir(Object o){
if(number < array.length){
array[start = (++start % array.length)] = o;
number++;
}
}
public void inserirCauda (Object o){
if(number < array.length){
array[end] = o;
end = (--end + array.length) % array.length;
number++;
}
}
public Object remover(){
if(estaVazia())
return null;
number--;
int i = start;
start = (--start + array.length) % array.length;
return array[i];
}
public Object removerCauda(){
if(estaVazia())
return null;
number--;
return array[end = (++end % array.length)];
}
}
Marcadores:
Algoritmos e Estruturas de Dados I
31 de agosto de 2009
28 de agosto de 2009
Algoritmos e Estruturas de Dados I - Aula 02
Apostila 03 : Vetores, Listas e Sequências - Download
Apostila 04 : Árvores - Download
Apostila 05 : Filas de Prioridade - Download
Atividades terça, 25 de agosto de 2009:
FIFO Ganho (ou Perda) de Capital
Apostila 04 : Árvores - Download
Apostila 05 : Filas de Prioridade - Download
Atividades terça, 25 de agosto de 2009:
FIFO Ganho (ou Perda) de Capital
Quando um lote de ações de uma companhia é vendido, o ganho de capital (ou, às vezes, a perda) é a diferença entre o preço de venda do lote e o preço originalmente pago por ele. Essa regra é fácil de entender para um único lote, mas se vendermos múltiplos lotes comprados em tempos diferentes temos de identificar os lotes sendo vendidos. Um método usado para identificar que lotes são vendidos é usar uma estrutura que suporte o protocolo FIFO, na qual os lotes vendidos são aqueles que temos há mais tempo (este é o método usado em vários softwares de finanças pessoais). Por exemplo, suponha que compramos 100 lotes a $20 cada no dia 1, 20 lotes a $24 no dia 2, 200 lotes a $36 no dia 3 e vendemos 150 lotes no dia 4 a $30 cada. Aplicando o protocolo FIFO, significa que dos 150 lotes vendidos, 100 foram comprados no dia 1, 20 foram comprados no dia 2 e 30 foram comprados no dia 3. O ganho de capital neste caso seria 100.10+20.6+30.(-6), ou $940.
Escreva um programa que recebe como entrada uma sequência de transações da forma
Escreva um programa que recebe como entrada uma sequência de transações da forma
- compre x lotes a y cada
ou - venda x lotes a y cada
Marcadores:
Algoritmos e Estruturas de Dados I
Banco de Dados I - 02
Engenharia da Informação
Engenharia da Informação - Leitura
Exercício I:
Pesquisa em Laboratório
Pesquise os Softwares de Banco de Dados atuais (no mínimo 8).
Nome:
Empresa:
Plataforma:
Duas empresas que utilizam:
Notícia atual:
% de Mercado:
Colocar a Bibliografia (Sites com data e hora de acesso)
Possível Resolução
Exercício II:
Considerando o assunto exposto, pesquise e responda:
1) O SI segundo o Suporte a Decisões é dividido em quais tipos? Explique-os e dê exemplos.
2) Quais as diferenças entre os SI: Pessoal, Gurpal ou Departamental, Organizacional e Interorganizacional.
3) Explique os SI Informatizados e Automatizados. Dê exemplos.
4) A Empresa que você trabalha tem quais tipos de Sistema de Informação? Explique suas escolhas.
Possível Resolução
Exercício III:
Imaginando que você é o Diretor de uma empresa dê sua opinião sobre estas frases abaixo (recebidas de seus subordinados):
1. Queixas:
a. “A construção de sistemas toma muito tempo e o custo é muito alto”.
b. “As dificuldades de manutenção são enormes”.
c. “Os administradores não conseguem obter as informações do computador quando são necessárias”.
d. “Os dados são redundantes e o acesso a estes é caótico”.
e. “Muitos programas são um emaranhado frágil de código”.
2. “A informática é uma ferramenta crítica na competição do mundo dos negócios, torna-se cada vez mais, fundamental desenvolver aplicações rapidamente e alterá-las também rapidamente”.
3. “É preciso construir, em pouco tempo, a um baixo custo, aplicações que são altamente complexas, de alta qualidade, e que atendam totalmente as necessidades dos usuários finais".
Possível Resolução
Engenharia da Informação - Leitura
Exercício I:
Pesquisa em Laboratório
Pesquise os Softwares de Banco de Dados atuais (no mínimo 8).
Nome:
Empresa:
Plataforma:
Duas empresas que utilizam:
Notícia atual:
% de Mercado:
Colocar a Bibliografia (Sites com data e hora de acesso)
Possível Resolução
Exercício II:
Considerando o assunto exposto, pesquise e responda:
1) O SI segundo o Suporte a Decisões é dividido em quais tipos? Explique-os e dê exemplos.
2) Quais as diferenças entre os SI: Pessoal, Gurpal ou Departamental, Organizacional e Interorganizacional.
3) Explique os SI Informatizados e Automatizados. Dê exemplos.
4) A Empresa que você trabalha tem quais tipos de Sistema de Informação? Explique suas escolhas.
Possível Resolução
Exercício III:
Imaginando que você é o Diretor de uma empresa dê sua opinião sobre estas frases abaixo (recebidas de seus subordinados):
1. Queixas:
a. “A construção de sistemas toma muito tempo e o custo é muito alto”.
b. “As dificuldades de manutenção são enormes”.
c. “Os administradores não conseguem obter as informações do computador quando são necessárias”.
d. “Os dados são redundantes e o acesso a estes é caótico”.
e. “Muitos programas são um emaranhado frágil de código”.
2. “A informática é uma ferramenta crítica na competição do mundo dos negócios, torna-se cada vez mais, fundamental desenvolver aplicações rapidamente e alterá-las também rapidamente”.
3. “É preciso construir, em pouco tempo, a um baixo custo, aplicações que são altamente complexas, de alta qualidade, e que atendam totalmente as necessidades dos usuários finais".
Possível Resolução
Marcadores:
Banco de Dados I
Engenharia de Software I - 02
Capítulo 3: Fase Requisitos do Usuário - RU
Fase Requisitos do Usuário - RU - Download
Documento Liberável DRU - Download
Fase Requisitos do Usuário - RU - Download
Documento Liberável DRU - Download
Marcadores:
Engenharia de Software I
23 de agosto de 2009
Exercício da aula do dia 22/08/2009
Download do projeto aqui.
Exercício – Desenvolva uma interface que calcule a equação do segundo grau, onde seja possível entrar com os valores de "a", "b" e "c" via textbox. Neste mesmo programa desenvolva um programa que calcule o fatorial de um número. Este programa deve conter somente: 3 Textbox, 5 Labels, 1 command e 2 option ou 2 check:
Elementos:
Textbox 1 = "txtCoX2" - A ou - N
Textbox 2 = "txtCoX" - B
Textbox 3 = "txtConst" - C
Label 1 = "lbla" - A
Label 2 = "lblb" - B
Label 3 = "lblc" - C
Label 4 = "lblX1Val" - X1
Label 5 = "lblX2Val" X2
Command 1 = "cmdcalcular" - Calcular
Option 1 = "opt1" - Equação 2° Grau
Option 2 = "opt2" - Fatorial
Código:
Private Sub cmdcalcular_Click()
If opt2.Value = True Then
Dim valor, cont As Integer
Dim total As Double
total = 1
valor = Val(txtCoX2.Text)
If valor = 0 Then
MsgBox "Digite um valor valido", vbExclamation
Else
For cont = 1 To valor
total = total * cont
Next cont
lblX1Val.Caption = total
End If
Else
If opt1.Value = True Then
Dim A As Single
Dim B As Single
Dim C As Single
Dim Discriminante As Single
Dim X1 As Single
Dim X2 As Single
Dim n As Integer
Dim mensagem As String
A = Val(txtCoX2.Text)
B = Val(txtCoX.Text)
C = Val(txtConst.Text)
If A = 0 Then
MsgBox "O valor do coeficiente A não pode ser igual a zero.", vbCritical, mensagem
Exit Sub
End If
Discriminante = (B ^ 2 - 4 * A * C)
If Discriminante < 0 Then
lblX1Val = ""
lblX2Val = ""
MsgBox ("Esta equação não possui raizes reais !."), vbCritical, mensagem
Else
X1 = (-B + Sqr(Discriminante)) / (2 * A)
X2 = (-B - Sqr(Discriminante)) / (2 * A)
If Discriminante = 0 Then
lblX1Val = X1
lblX2Val = X1
MsgBox ("Esta equação possui duas raizes reais iguais."), vbInformation, mensagem
Else
lblX1Val = X1
lblX2Val = X2
MsgBox ("Esta equação possui duas raizes reais."), vbInformation, mensagem
End If
End If
End If
End If
End Sub
Private Sub opt1_Click()
txtCoX2.Text = ""
txtCoX.Text = ""
txtCoX.Visible = True
txtConst.Text = ""
txtConst.Visible = True
lblX1Val.Caption = ""
lblX2Val.Caption = ""
lbla.Caption = "A"
lblb.Visible = True
lblc.Visible = True
End Sub
Private Sub opt2_Click()
txtCoX2.Text = ""
txtCoX.Text = ""
txtCoX.Visible = False
txtConst.Text = ""
txtConst.Visible = False
lblX1Val.Caption = ""
lblX2Val.Caption = ""
lbla.Caption = "N"
lblb.Visible = False
lblc.Visible = False
End Sub
Private Sub txtConst_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
txtConst.Text = Left(txtConst.Text, (Len(txtConst.Text) - 1))
SendKeys "{END}"
End If
If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0
End Sub
Private Sub txtCoX_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
txtCoX.Text = Left(txtCoX.Text, (Len(txtCoX.Text) - 1))
SendKeys "{END}"
End If
If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0
End Sub
Private Sub txtCoX2_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
txtCoX2.Text = Left(txtCoX2.Text, (Len(txtCoX2.Text) - 1))
SendKeys "{END}"
End If
If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0
End Sub
Exercício – Desenvolva uma interface que calcule a equação do segundo grau, onde seja possível entrar com os valores de "a", "b" e "c" via textbox. Neste mesmo programa desenvolva um programa que calcule o fatorial de um número. Este programa deve conter somente: 3 Textbox, 5 Labels, 1 command e 2 option ou 2 check:
Elementos:
Textbox 1 = "txtCoX2" - A ou - N
Textbox 2 = "txtCoX" - B
Textbox 3 = "txtConst" - C
Label 1 = "lbla" - A
Label 2 = "lblb" - B
Label 3 = "lblc" - C
Label 4 = "lblX1Val" - X1
Label 5 = "lblX2Val" X2
Command 1 = "cmdcalcular" - Calcular
Option 1 = "opt1" - Equação 2° Grau
Option 2 = "opt2" - Fatorial
Código:
Private Sub cmdcalcular_Click()
If opt2.Value = True Then
Dim valor, cont As Integer
Dim total As Double
total = 1
valor = Val(txtCoX2.Text)
If valor = 0 Then
MsgBox "Digite um valor valido", vbExclamation
Else
For cont = 1 To valor
total = total * cont
Next cont
lblX1Val.Caption = total
End If
Else
If opt1.Value = True Then
Dim A As Single
Dim B As Single
Dim C As Single
Dim Discriminante As Single
Dim X1 As Single
Dim X2 As Single
Dim n As Integer
Dim mensagem As String
A = Val(txtCoX2.Text)
B = Val(txtCoX.Text)
C = Val(txtConst.Text)
If A = 0 Then
MsgBox "O valor do coeficiente A não pode ser igual a zero.", vbCritical, mensagem
Exit Sub
End If
Discriminante = (B ^ 2 - 4 * A * C)
If Discriminante < 0 Then
lblX1Val = ""
lblX2Val = ""
MsgBox ("Esta equação não possui raizes reais !."), vbCritical, mensagem
Else
X1 = (-B + Sqr(Discriminante)) / (2 * A)
X2 = (-B - Sqr(Discriminante)) / (2 * A)
If Discriminante = 0 Then
lblX1Val = X1
lblX2Val = X1
MsgBox ("Esta equação possui duas raizes reais iguais."), vbInformation, mensagem
Else
lblX1Val = X1
lblX2Val = X2
MsgBox ("Esta equação possui duas raizes reais."), vbInformation, mensagem
End If
End If
End If
End If
End Sub
Private Sub opt1_Click()
txtCoX2.Text = ""
txtCoX.Text = ""
txtCoX.Visible = True
txtConst.Text = ""
txtConst.Visible = True
lblX1Val.Caption = ""
lblX2Val.Caption = ""
lbla.Caption = "A"
lblb.Visible = True
lblc.Visible = True
End Sub
Private Sub opt2_Click()
txtCoX2.Text = ""
txtCoX.Text = ""
txtCoX.Visible = False
txtConst.Text = ""
txtConst.Visible = False
lblX1Val.Caption = ""
lblX2Val.Caption = ""
lbla.Caption = "N"
lblb.Visible = False
lblc.Visible = False
End Sub
Private Sub txtConst_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
txtConst.Text = Left(txtConst.Text, (Len(txtConst.Text) - 1))
SendKeys "{END}"
End If
If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0
End Sub
Private Sub txtCoX_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
txtCoX.Text = Left(txtCoX.Text, (Len(txtCoX.Text) - 1))
SendKeys "{END}"
End If
If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0
End Sub
Private Sub txtCoX2_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
txtCoX2.Text = Left(txtCoX2.Text, (Len(txtCoX2.Text) - 1))
SendKeys "{END}"
End If
If KeyAscii < 43 Or KeyAscii > 57 Or KeyAscii = 47 Or KeyAscii = 44 Then KeyAscii = 0
End Sub
Marcadores:
Programação III
19 de agosto de 2009
Camisetas do Curso Versão 2.0
Escolha o modelo e informe o seu tamanho:
(Clique na imagem para ampliar!)
Modelo 02.01:
Modelo 02.02:
(Clique na imagem para ampliar!)
Marcadores:
Inutilidades




