domingo, 21 de abril de 2013

Modelagem Banco de Dados: Berçario

Quando um bebê nasce, algumas informações são armazenadas sobre ele, tais como: nome, data do nascimento, peso do nascimento, altura, a mãe deste bebê e o médico que fez seu parto.

Para as mães, o berçário também deseja manter um controle, guardando informações como: nome, endereço, telefone e data de nascimento.

Para os médicos, é importante saber: CRM, nome, telefone celular e especialidade.


Neste banco de dados haverá 3 ou 4 tabelas. A primeira registra os médicos; a segunda registra as mães; a terceira registra as crianças. Esta modelagem acima foi de um colega de sala, esta outra, abaixo, fui eu quem fiz. Penso que assim atende a atividade.


Modelagem de Banco de Dados: Floricultura

Uma floricultura deseja informatizar suas operações. Inicialmente, deseja manter um cadastro de todos os seus clientes, mantendo informações como: RG, nome, telefone e endereço.

Deseja também manter um cadastro contendo informações sobre os produtos que vende, tais como: nome do produto, tipo (flor, vaso, planta,...), preço e quantidade em estoque.

Quando um cliente faz uma compra, a mesma é armazenada, mantendo informação sobre o cliente que fez a compra, a data da compra, o valor total e os produtos comprados.

Simples assim: Uma tabela contém os dados dos clientes. Na outra tabela a lista dos produtos. Na terceira tabela une Clientes e Produtos, registrando o nome do cliente, e os produtos comprados e a data da compra.

Modelagem de Banco de Dados: Escola


Uma Escola tem várias turmas. Uma turma tem vários professores, sendo que um professor pode ministrar aulas em mais de uma turma. Uma turma tem sempre aulas na mesma sala, mas uma sala pode estar associada a várias turmas (com horários diferentes).  Elabore um DER que responda a:

• Quais os professores de uma dada turma?
• Que turmas um professor ensina?
• Em que salas um professor ensina?

Clique na imagem para aumentar

Este Diagrama pode ser diferente. Por exemplo, criar uma relação entre a entidade Professor e a entidade Sala. Eu penso, que a relação de Professor, com a entidade Turma seja suficiente para indicar em que sala o professor está, uma veze que, " Uma turma tem sempre aulas na mesma sala"

Modelar Banco de Dados: Biblioteca

Uma biblioteca deseja manter informações sobre seus livros. Inicialmente, quer armazenar para os livros as seguintes características: ISBN, título, ano editora e autores deste livro. Para os autores, deseja manter: nome e nacionalidade.

Cabe salientar que um autor pode ter vários livros, assim como um livro pode ser escrito por vários autores. Cada livro da biblioteca pertence a uma categoria.

A biblioteca deseja manter um cadastro de todas as categorias existentes, com informações como: código da categoria e descrição. Uma categoria pode ter vários livros associados a ela.


Diagrama de Banco de Dados - DE-R : Empresa, cliente e pedidos

Uma firma vende produtos de limpeza, e deseja melhor controlar os produtos que vende, seus clientes e os pedidos. Cada produto é caracterizado por um código, nome do produto, categoria (ex. detergente, sabão em pó, sabonete, etc.), e seu preço.

A categoria é uma classificação criada pela própria firma. A firma possui informações sobre todos seus clientes. Cada cliente é identificado por um código, nome, endereço, telefone, status ("bom", "médio", "ruim"), e o seu limite de crédito.

Guarda-se igualmente a informação dos pedidos feitos pelos clientes. Cada pedido possui um número e guarda-se a data de elaboração do pedido. Cada pedido pode envolver de um a vários produtos, e para cada produto, indica-se a quantidade pedida.

Cliente, produtos e Clientes
Clique na imagem para ver maior

domingo, 9 de dezembro de 2012

Faça um algoritmo em C que converta uma string em MAIÚSCULAS usando código ASCII e vetor.

Isto seria um programa simples de se fazer. Bastaria usar algumas das funções já existentes na linguagem C/C++. Mas, porém, contudo, os professores exigem dos alunos é que eles usem vetor e a tabela ASCII. E nem todos sabem como fazer. Então, supro esta sua necessidade. Como é que faz? Eis abaixo em partes.

Parte 1: Pegando a String.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main ()
{
char palavra[20];
int tam,i;

printf("Digite uma palavra: ");
scanf("%s",&palavra);

printf("\nA palavra digitada foi: %s ",palavra);
printf("\n\n");

printf("\n\n");
system("pause");

}

 

O código acima é suficiente para coletar do usuário uma palavra. E sem espaço. Se você usar espaço o programa vai desconsiderar depois do ‘\0’. Se rodar o código acima ele vai apenas receber uma palavra e depois exibir na tela.


Depois de você ler as informações você vai ter que fazer a conversão. Para tal, o código abaixo deve ser inserido no código acima.


tam = strlen(palavra);

for (i=0;i < tam;i++)
{
palavra[i] = palavra[i]-32;
}

 

Você pode usar assim, como acima que funciona. A variavel “tam” através da função strlen() recebe o valor inteiro da quantidade de letras digitada. Você pode economizar escrevendo o código assim:


for (i=0;i < strlen(tam);i++)
{
palavra[i] = palavra[i]-32;
}

 


O que é que muda? A variavel “tam” é usada dentro do laço e vai ter a mesma ação, que é, pegar o tamanho em inteiro da quantidade de letras digitadas na palavra[i]. É esta a função de strlen(tam). Str=string e len=lenght. Tamanho da String. Usando desta maneira, você economiza a linha de atribuição: tam = strlen(palavra);


O código: palavra[i] = palavra[i]-32 é quem converte a sua palavra em minúsculo para MAIÚSCULA. Mas, como é que funciona? Simples: na tabela ASCII toda e qualquer letra minúscula, menos 32, vai para a mesma letra em maiúscula. Não acredita? Faz o teste: abra o Bloco de Notas e segure a tecla ALT da esquerda e então digite no teclado Numérico o número 97. Vai sair a letra ‘a’ em minúsculo. 97-32=65 não é? Então! Faça a mesma coisa. Segure ALT da esquerda e aperte no teclado númerico 65 e você vai ter uma letra A, em maiúscula.


Então é por isto que o código  palavra[i] = palavra[i]-32 vai converter a palavra minúsculo para maiúscula. Não esquecer do que muito se repete: toda cadeia de string é na verdade um vetor. O código completo fica assim:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main ()
{
char palavra[20];
int tam,i;

printf("Digite uma palavra: ");
scanf("%s",&palavra);

printf("\nA palavra digitada foi: %s ",palavra);
printf("\n\n");



for (i=0;i < strlen(tam);i++)
{
palavra[i] = palavra[i]-32;
}

printf("A palavra em maiusculas %s " ,palavra);
printf("\n\n");
system("pause");

}

sexta-feira, 30 de novembro de 2012

Caixa eletrônico em C. As notas consideradas são de 100, 50, 20, 10, 5, 2 e 1.

Escrever um algoritmo que leia um valor em Reais. A seguir, calcule o menor número de notas possíveis no qual o valor pode ser decomposto. As notas consideradas são de 100, 50, 20, 10, 5, 2 e 1. A seguir mostre o valor lido e a relação de notas necessárias.

Se você já está estudando vetores abaixo um exemplo de código que fiz. Se você não está estudando vetores, tem outro exemplo no blog que usa apenas variaveis.

Evidente que você pode incrementar o código com um do{ }while(); Também você pode trocar os cout e o cin por printf() e scanf()

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <conio.c>
#include <iostream>
using namespace std;

main (){

int cedulas[] = {100, 50, 20, 10, 5, 2, 1};
int quantidadeTotal = 0;
int valorReais = 0,i=0;
int qtdCedulas[7];
cout << “Valor a sacar “;
cin >> valorReais;

for(i = 0; i < 7; i++)
{
qtdCedulas[i] = (valorReais/cedulas[i]);
valorReais = valorReais % cedulas[i];
quantidadeTotal += qtdCedulas[i];
cout << qtdCedulas[i] << ” Cedulas de.: ” <<cedulas[i] << endl;
}
cout << “Total de Cedulas: ” << quantidadeTotal;

getch();

}

Queria mais? Então! É só isto! Pode parecer simples, mas, eu levei umas horas quebrando a cabeça de como pegar os valores, dividir, tirar inteiro, guardar no segundo vetor. E, funcionou!

Comentando o laço for() onde tudo acontece.

for(i = 0; i < 7; i++)
{
          qtdCedulas[i] = (valorReais/cedulas[i]);

Esta linha acima, o vetor qtdCedulas[i] recebe o resultado da variavel valorReais e dividido pelo valor do vetor cedulas[i], ou seja,  pega o valor que o usuário digita e divide por 100, depois, por 50, 20,10,5,2,1. Assim, cada posição do vetor qtdCedulas[i] armazena a sua quantidade de notas.

valorReais = valorReais % cedulas[i];

Esta linha acima pode ser substituída por esta outra abaixo:

            valorReais %= cedulas[i];

Aqui a variavel valorReais é modificada e passa a conter a cada laço o resto da divisão do valor digitado pelo usuário pelo conteúdo do vetor cedulas[i], ou seja, se você digitar: 254 na posição de cedulas[0] guardará 54, pois, 254/100 (100 é o valor de cédulas[0]).

Na segunda passagem do laço, valorReais receberá o conteúdo de 54/50 (50 é o valor de cédulas[1]), ou seja, resto 4.

E assim por diante.

            quantidadeTotal += qtdCedulas[i];

Esta variável vai contando a quantidade de cédulas armazenado no vetor qtdCedulas[].

cout << “Cedulas de …: ” << cedulas[i] << “\t Qtd …: ” << qtdCedulas[i] << endl;

Esta linha exibe na tela o resultado. E você pode usar o printf();

Isto é tudo!