sábado, 31 de março de 2012

Banco de Dados 1 - Resumo Prático.

Conceitos básicos de banco de Dados.

Banco de Dados é um conjunto de dados relacionados

Problemas de não se usar um Banco de dados:


    • Problema de falta da integração de dados.
    • Inconsistência e redundância de dados.
    • Dificuldade de acesso aos dados.
    • isolamento de dados.
    • Problemas de integridade.
Visão dos Dados:

  1. Visão externa --> Aplicação.
  2. Visão Lógica --> SGBD.
  3. Visão interna --> Banco de Dados.
================================================================
O que é um SGBD (Sistemas de gerenciamento de banco de dados):
Software com recursos específicos para facilitar a manipulação das informações dos bancos de dados e do desenvolvimento de programas aplicativos.

================================================================

Características / Funcionalidades de um SGBD:

  • Controle de redundâncias.
  • Compartilhamento de dados.
  • Controle de acesso.
  • Interfaceamento.
  • Esquematização.
  • Controle de integridade.
  • Backups.
Tipos de Bancos de Dados:
  1. Banco de dados Tradicionais ( Informações acessadas são textuais ou numéricas).
  2. Banco de dados multimídia ( Armazena figuras, vioclipes, sons e mensagens de voz ).
  3. Sistemas de informações geográficas ( Armazena e analisa mapas, dados meteorológicos e imagens de satélites).
Vantagens dos SGBD

  1. Consistência e eliminação da redundância de dados.
  2. Integridade dos dados.
  3. Controle de concorrência.
  4. Recuperação e backup.
Modelos de dados 

Uma coleção de conceitos, construídos com bases em mecanismos de abstrações, que são usados para descrever um conjunto de dados e as operações para manipular os dados.

Representação:

--> Sintaxe de linguagem.
--> Notação Gráfica.

  • Modelos conceituais ( Entidade e relacionamentos).
  • Modelos lógicos ou implementação.
  • Modelos físicos.



segunda-feira, 19 de março de 2012

Windows 8 tem um milhão de downloads




Windows 8 ainda não está disponível oficialmente, mas já tem mais de um milhão de usuários. Este é o número de indivíduos que baixou a versão Consumer Preview, disponível desde o dia 29 de fevereiro.  Uma versão final do sistema operacional deve chegar até o final deste ano.
Construindo com o vislumbre de um ambiente touch e recheado de aplicativos, a plataforma é essencial para os esforços da Microsof de fazer frente a Apple e Google. Para rodar a Windows 8 Consumer Preview, é preciso ter um PC ou laptop com ao menos processador Intel ou AMD de 1GHz , 1 GB de memória RAM em um sistema de 32-bit ou de 2 GB de RAM em uma máquina com 64-bits. Além disso, são necessários 16 GB ou 20 GB de espaço em disco, respectivamente, e cartão de gráficos compatível com Directx9 ou uma versão acima.
Usuários também precisarão de um dispositivo touch para tirar as vantagens das funcionalidades do Windows 8. Uma versão do sistema desenhada em chips ARM e que, portanto, foram construídos para rodar em tablets não está disponível neste preview a consumidores, apenas no destinado a desenvolvedores (este último lançado no fim do ano passado).

domingo, 18 de março de 2012

Compilando programas no Ubuntu


C++_compiler

Instalação e Utilização do GCC e G++

OBS: Na distro 10.4 do ubuntu o Gcc já vem instalado. /usr/bin/gcc.
Esse é um guia de como instalar os compiladores GCC e G++ (GNU C/C++ compilers) assim como uma amostra de sua utilização !

Instalando o GCC e/ou o G++

Para instalá-los, clique em Aplicações->Adicionar/Remover para abrir o Synaptic. Ao abrir a janela clique em Avançado. Na janela que abrir clique em Desenvolvimento na lista à sua esquerda. Procure por gcc e g++ na lista que aparecer à sua direita (selecione todos os que possuirem como descrição GNU C/C++ compiler). Agora clique em aplicar. Espere até a instalação se completar e feche o Synaptic. Pronto, você possui os compiladores instalados.

Utilizando o GCC

A utilização dos compiladores são via terminal. Portanto abra-o. Se você já é programador, apenas navegue até a pasta em que se encontra o(s) fonte(s). Se você só instalou para poder montar programas pelo código-fonte, tente copiar esse código em um editor de textos como o gedit e salvar como teste.c:
#include <stdio.h>

int main()
{
    printf("Isso é um teste\n");
    return 0;
}
Agora, no terminal, navegue até a pasta utilizando os comandos cd para abrir a pasta e ls para listar os arquivos do diretório:
Para listar o diretório:
ls
Para entrar na pasta:
cd nome_da_pasta
Icones/importante.png O shell dos sistemas Unix são case sensitive, ou seja maiúsculas e minúsculas fazem diferença
Quando estiver na pasta desejada, digite:
gcc teste.c
Isso gerará um arquivo a.out na pasta atual. Se nenhuma mensagem de erro apareceu o seu compilador está instalado corretamente
Para abrir o programa digite ./a.out
Deverá aparecer:
Isso é um teste
usuario@ubuntu:~$
Se você quiser dar um nome ao programa como teste.bin ou teste.exe, digite:
gcc -o teste.bin teste.c
== Utilizando o g++ ===
Se você sabe usar o gcc, o g++ é a mesma coisa. Apenas digite:
g++ arquivo.cpp
Para gerar o a.out. Para escolher o nome, digite:
g++ -o nome.bin arquivo.cpp
Para testar se ele foi instalado corretamente, tente o seguinte código:
#include <iostream>
using namespace std;

int main()
{
    cout << "Isso é um teste" << endl;
    return 0;
}
Para compilar, navegue até a pasta onde você salvou o arquivo e digite g++ teste.cpp. Agora digite ./a.out para abrir.

quarta-feira, 14 de março de 2012

Instalando o plugin Java 6.20 no Google Chrome


Instalando o plugin Java 6.20 no Google Chrome

Faça o download do Java nesse link: http://www.java.com/pt_BR/download/

Use o comando abaixo para criar a pasta chamada java (você pode instalar em outro diretório. Eu prefiro instalar nesse por uma questão de organização):

# mkdir /opt/java

Depois mova o arquivo jre-6u20-linux-i586.bin para esse diretório.

# cp /diretorio_do_download/ jre-6u20-linux-i586.bin /opt/java

Entre no diretório e execute os comandos abaixo:

# cd /opt/java
# chmod +x jre-6u20-linux-i586.bin
# ./jre-6u20-linux-i586.bin


Após esse processo o Java já estará instalado.

Agora vamos instalar o Google Chrome.

Baixe o arquivo de instalação do site: http://www.google.com.br/chrome/eula.html?platform=linux_ubuntu_i386

Entre no terminal como root e digite:

# dpkg -i google-chrome-stable_current_i386.deb

O Google Chrome já esta instalado!

Agora siga os seguintes passos para ativar o plugins do Java no Google Chrome:

Criamos a pasta "plugins" no diretório de instalação do Chrome, pois o mesmo não vem criado:

# mkdir /opt/google/chrome/plugins

Acessamos o diretório:

# cd /opt/google/chrome/plugins

Criamos o link simbólico do plugin dentro da pasta que acabamos de criar:

# ln -s /opt/java/jre1.6.0_20/lib/i386/libnpjp2.so .

Seja feliz com seu Java no browser do Google! 

Exercícios Estrutura de Dados - Resolvidos


Lista de Exercícios




  1. Dê o conceito de:
    1. Algoritmo
      R:
      É uma sequencia de ações executáveis para obtenção de uma solução para um determinado problema.
    2. Tipo de dados
      R:
      Conjunto de valores a que uma constante pertence, ou podem ser assumidos por uma variável ou expressão a que podem ser gerados por uma função.
    3. Tipo abstrato de dados
      R:
      Pode ser visto como um modelo matemático, acompanhado das operações definidas sobre um modelo.

  2. Qual a descrição de algoritmos segundo Dijkstra?
    R:
    descreve como uma descrição de um padrão de comportamento, expresso em termos de um conjunto finito de ações.

  3. Descreva o conceito de programar para estrutura de dados.
    R:
    consiste em estruturar dados e construir algoritmos, sendo formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados, representando uma classe especial de algoritmos capazes de serem seguidos por computadores

  4. Cite os tipos de operações que podem ser definidas sobre uma lista.
    R:
    Criar lista, Retirar, inserir, alterar.

  5. Comente sobre os tipos de problemas distintos apresentado por Knuth.
    R:
    Análise de um algoritmo particular: custo ao usar um dado algoritmo para resolver um problema específico, investigar características importantes do algoritmo em questão devem ser investigadas.
Análise de uma classe de algoritmos: qual o algoritmo de menor custo possível para resolver um problema particular? Neste caso, deve ser investigado toda família de algoritmos para resolver um problema específico com a finalidade de identificar o melhor possível, colocando limites à complexidade computacional dos algoritmos pertencentes à classe
  1. Comente sobre as formas de medir os custos de utilização de um algoritmo e levando em consideração que os resultados não devem ser generalizados.
    R:
    Obtendo as medidas desta forma são inadequadas e seus resultados não devem ser generalizados, devido as seguintes objeções: (i) Os resultados dependem do compilador que pode favorecer algumas construções em detrimento de outras; (ii) os resultados dependem do hardware; (iii) quando grandes memória são utilizados, as medidas de tempo dependem deste aspecto.

  2. Cite e comente os três cenários distintos relacionados ao tempo de execução de um algoritmo.
    R:
    Melhor caso(Encontrar o registro rapidamente)
    médio caso(o mais difícil de se precisar) e pior caso(Percorrer todo o arquivo em busca de um registro.

  3. Cite as principais classes de problemas e suas funções de complexidade.
    R:
    As principais classes de problemas possuem as funções de complexidade são descritas abaixo.
f(n) = O(1). Algoritmos de complexidade O(1) são ditos complexidade constante.
  • f(n) = O(log n). Um algoritmo de complexidade O(log n) é dito ter complexidade logarítmica, onde a execução ocorre tipicamente em algoritmos que resolvem um problema transformando-o em problema menores.f(n) = O(n). Algoritmo de complexidade O(n) é dito ter complexidade linear, realizando um pequeno trabalho sobre cada elemento de entrada.
  • f(n) = O(n log n). Este tempo de execução ocorre tipicamente em algoritmos que resolver um problema quebrando–o em problema menores, resolvendo cada um deles independentemente e depois ajuntando as soluções.
  • f(n) = O(n2). Algoritmo de complexidade O(n2) é dito ter complexidade quadrática, são processados aos pares, sendo muitas vezes um anel dentro do outro.f(n) = O(n3). Algoritmo de complexidade O(n3) é dito ter complexidade cúbica e são úteis para resolver pequenos problemas.
f(n) = O(2n). Algoritmo de complexidade O(2n) é dito ter complexidade exponencial e geralmente não são úteis sob ponto de vista prático. São usados em algoritmos de força bruta.
  1. O que caracteriza programas considerados resolvidos e os não resolvidos?
    R:
    são os que existe um função polinomial para solucioná-los, enquanto problemas que não existem uma função polinomial para resolvê-lo é considerado intratável.

  1. Descreva sobre o problema do caixeiro viajante e apresente uma solução para o mesmo.
    R:
    Considere visitar as cidades de forma que sua viagem inicie e termine em uma mesma cidade e cada cidade seja vizitada uma única vez.

  2. Descreva sobre as técnicas de análise de algoritmos.
    R:
    Utiliza matemática discreta, envolvendo contagens ou enumerações dos elementos, envolvendo manipulações de operações.

  3. Cite os princípios a serem seguidos utilizando propriedade sobre notação O.
    R
    : O tempo de execução de um comando / O tempo de execução de uma seqüência de comandos / O tempo de execução de um comando de decisão/ O tempo para executar um anel /Quando o programa possui procedimentos não recursivos .
  1. Suponha dois algoritmos A e B, com funções de complexidade de tempo a(n) = n2 – n + 549 e b(n) = 49n + 49 respectivamente. Determine quais valores de n pertencentes ao conjunto de números naturais para os quais A leva menos tempo para executar do que B.
    R:
    Não exixte valores de n que satisfaça a condição.

Slides Capítulo 4 Linguagem técnica de Programação C++



Baixe aqui o arquivo pdf: Download

Apostila Complementar de C++






  1. Linguagem de Programação          C++

     Básico 



  1. Sumário



Linguagens de programação – História de C ____________
3
Características da linguagem C ______________________
4
A linguagem C++ ________________________________
5
Fundamentos de C++ ___________________________
6
Dados Padrões ________________________________
10
Tipos definidos e estruturas de dados _________________
11
Modificadores de dados ___________________________
13
Conversões de dados ___________________________
14
Classes de armazenamento ______________________
15
Matrizes _____________________________________
16
Operadores _____________________________________
17
Controle de fluxo ________________________________
22
Ponteiros _____________________________________
27
Funções _____________________________________
30
Diretivas do pré-processador ______________________
36
Arquivos _____________________________________
37
Introdução ao modo gráfico ______________________
41
Palavras reservadas ___________________________
43


Baixe aqui a apostila e programas : Download


terça-feira, 13 de março de 2012

Programas em "C" 1º Período de Sistemas - FAMINAS

Programa Calcula média de n Números.


#include <stdio.h>

int n,cont;

float media,soma=0, numeroDoFor=0;

int main(){
    printf("Quantos numeros voce quer calcular?\n");
    scanf("%i",&n);
    for(cont=1;cont<= n; cont++){
    //Usando if alternativo
       (!numeroDoFor) ? printf("Informe um numero: ")  : printf("Informe outro numero: ");
       scanf("%f",&numeroDoFor);
       fflush(stdin);
       soma+=numeroDoFor;
    }   //fim for

    printf("Soma = %.2f \n",soma);
    printf("Media = %.2f \n",soma/n);
 
    getchar();
 
    return 0;
 }

Programa Calcula média do Aluno


#include <stdio.h>

int n1,n2;

int main(){
    printf("PROGRAMA MEDIA \n\n");  
    printf("Digite a nota\n");
    scanf("%i",&n1);
    fflush(stdin);
    if (n1>=60)
        printf("Aprovado");
    else if
        (n1>=40 && n1<60){
        printf("Informe a nota da Prova substitutiva Final:\n");
        scanf("%i",&n2);
        }
    if (n2>=60){
        printf("Sua nota eh: %i \n",n2);
        printf(" Aprovado na prova final");
       
    else if
        printf("Sua nota eh: %i\n",n2);
        printf(" Reprovado na Prova Substitutiva\n");
        }
    getch();
 
    return 0;
}


Programa Números Primos



#include <stdio.h>

int primo(int n){
   int i;

   if (n == 1 ) return 0; // por definicao...

   for(i=2; i*i <= n;i++){
       if (n % i == 0) return 0; // NAO eh primo
                 }
   return 1; // EH PRIMO
   }
int n;
int main (void){
    printf("Informe um numero\n");
    scanf("%i",&n);
    fflush(stdin);
    int i;
    for(i=1;i<=n;i++){
        printf("O numero %i %s\n",i,((primo(i)? "eh primo\n": "nao eh primo\n")));
    }
             
    system("pause");
    return 0;
    }

Programa Fatorial


#include <stdio.h>
#include <stdlib.h>
unsigned int n=0, fator=0, i=1;

int main(){
    printf("Digite um numero\n");
    scanf("%d",&n);
    fator=n;
    for(i;i<n;i++){
    fator=fator*i;  
    printf("O fatorial de n eh: %d e %d\n",n,fator);
    }
 
    system("pause");
 
    return 0;

}




quarta-feira, 7 de março de 2012

domingo, 4 de março de 2012

UML - Conceitos e Casos de Uso

UML
Modelagem: Entendimento do ambiente onde vai operar.


Utilidades:
  • Entendimento dos problemas.
  • Comunicação entre pessoas envolvidas no projeto.
  • Compreensão dos requisitos.
  • Difundir os conhecimentos entre os envolvidos.
  • Avaliar diferentes soluções.
    ,OBS: Modelos existem para auxiliar o ser humano a entender a complexidade de um projeto.

O QUE É UML?
É uma linguagem usada para especificar, visualizar e documentar os artefatos de um sistema baseado em objeto sob desenvolvimento.

Notação:
  • Possui semântica bem definida.
  • Satisfaz bem as necessidades para representação de um sistema.
  • É bem entendida pelos participantes.
  • Não é específica para linguagem de programação.
CICLO DE VIDA CLÁSSICO

ANÁLISE --> PROJETO --> CODIFICAÇÃO --> TESTE --> SUPORTE

OBS: Na atualidade se utiliza com mais frequência o ciclo de vida interativo, onde permite reavaliar todas as fazes do projeto, O processo pode-se voltar a uma fase que já foi feita  como em uma espiral.

São três as principais fases:
  1. Elicitação (Coletar os requisitos do sistema de um usuário)
  2. Especificação ( Especificação dos requisitos do sistema e modelagem, requisitos de usuário e requisitos de negócio).
  3. Validação ( Estudo de viabilidade, prototipação e revisões).
P D C A " Definir metas , executar, checar resultados, agir (corretivamente, e preventivamente para melhoria)

LEVANTAMENTO DE REQUISITOS

São 4 técnicas de apoio:
  1. Observação.
  2. Entrevistas.
  3. Questionários.
  4. Investigação.
MODELAGEM DE CASOS DE USO
  • Modelo --> É uma representação das funcionalidades externamente observáveis do sistema.
  • Modela os requisitos funcionais do sistema, sem revelar a estrutura e o comportamento interno deste sistema.
  • Casos de uso --> Um caso de uso representa quem faz o quê(interage) com o sistema sem considerar o comportamento interno do sistema.  
 COMPONENTES DO MODELO
  • Casos de uso
    Grau de abstração
    Formato
    Grau de detalhamento.
  • Atores
  • Relacionamento entre os elementos anteriores.
     
DESCRIÇÕES DE SISTEMAS 
  • Descrição contínua.
  • Descrição numerada
  • Descrição narrativa particionada
DETALHAMENTO CASO DE USO
  • SUCINTO: Descrever as interações sem muitos detalhes.
  • EXPANDIDO: Descrever as interações em detalhes.
CATEGORIAS DE ATORES 
  • Pessoas (Funcionários).
  • Organizações (Empresa fornecedora).
  • Outros sistemas (Sistema de cobrança).
  • Equipamentos ( Leitora de códigos de barras).
    OBS: Um nome de um ator deve lembrar o seu papel ao invés de lembrar quem o representa.
TIPOS DE RELACIONAMENTOS
  1. Comunicação ( Ator com casos de uso).
  2. Inclusão ( Somente entre casos de uso "obrigatório").
  3. Extensão ( Somente entre casos de uso, interações que podem ser inseridas não obrigatoriamente).
  4. Generalização ( Entre casos de uso e atores, a reutilização de casos de uso e atores são comuns).
DIAGRAMAS DE CASOS DE USO

Representa graficamente os atores e casos de uso e relacionamentos entre os elementos.
Os diagramas de casos de uso (DCU) devem servir para dar suporte à parte escrita do modelo fornecendo uma visão de alto nível.