Arquivo

Arquivos mensais: Maio 2010

Encontrei nesses últimos dias a necessidade que algumas pessoas tinham em fazer estrutura de dados em C, e buscando nas anotações que fazia acabei encontrando algumas estruturas que podem ser muito úteis para quem está aprendendo ou tem alguma dúvida em como implementar. A primeira é uma lista estática desordenada criada para armazenar informações de uma lista de casamento, e a segunda é uma lista estática ordenada, criada para armazenar o rankig de competidores de olimpíadas. O melhor compilador C que conheço e é bem simples de usar é o DEV C, que pode ser baixado em qualquer site desses pela internet. Espero ter ajudado… Valeu!
/*
==================
Lista Desordenada
@ESA
==================
Estrutura {
inteiro codigo;
char nome[30];
inteiro qtAcompanhantes;
}
Criar os métodos inserir, alterar, consultar por codigo, excluir e calcular quantidade
total de convidados;
*/
/* Estrutura */
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
typedef struct lista_casamento{
int      codigo_convidado;
char     nome_convidado[30]  ;
int      qt_convidados;
} Tipo_Lista_casamento;
const int maximo= 50; /* Limite máximo de convidados*/
int qtd_convidados;
int escolha;
Tipo_Lista_casamento lista[50]; /* Vetor da Lista de Casamentos*/
/* Preenche Linha */
void imprimirLinha() {
int i;
for (i=1;i<=50;i++)
printf(“_”);
printf(“\n”);
}
/* Cabeçalho */
void imprimeCabecalho() {
system(“cls”);
printf(“Implementando Lista de Casamento\n”);
imprimirLinha();
}
/* Método de procura */
int procuraPorCodigoConvidado(int Cdconvidado) {
int i; /* Variável contador*/
int posicao;
posicao = -1;
for(i = 0; i<qtd_convidados; i++) {
/* retornar a posição do código informado*/
if (Cdconvidado==lista[i].codigo_convidado){
posicao = i;
break;
}
}
return posicao; /* retorna o número da posição*/
}
void mostre(int posicao) {
printf(“\n\nCodigo    Nome                  Acompanhantes                ”);
printf(“\n————————————————————–”);
printf(“\n%9d         %-20s     %9d                ”,
lista[posicao].codigo_convidado,
lista[posicao].nome_convidado,
lista[posicao].qt_convidados);
printf(“\n—————————————————————”);
}
/* Método inserir */
void inserir(){
int op; /* Controla opção selecionada pelo usuário*/
do{
imprimeCabecalho();
printf(“\nInforme o Convidado\n\n”);
/* Máximo é a constante, limite de convidados*/
if (qtd_convidados<maximo){
printf(“\nCodigo do Convidado: “);
scanf(“%d”,&lista[qtd_convidados].codigo_convidado);
printf(“\nNome do Convidado: “);
fflush(stdin);   /* Limpa o buffer do teclado*/
gets(lista[qtd_convidados].nome_convidado);
printf(“\nInforma a quantidade de Convidados que ira levar: “);
scanf(“%d”,&lista[qtd_convidados].qt_convidados);
qtd_convidados++;
printf(“\n\nConvidado Inserido com Sucesso!!!\n\n”);
}else /* Lista de Convidados cheia */{
printf(“\n\n\aLista de Casamentos Lotada!!!\n\n”);
getche();
break;
}
printf(“\n\nInserir outro convidado(1-sim/2-nao)? “);
scanf(“%d”,&op);
}while (op == 1); /* Enquanto usuário escolher 1 ficar repetindo*/
}
/* Consultar convidado por código*/
void consultarConvidado()
{ int i, codigoConsultar, achou, cont;
do
{ imprimeCabecalho();
printf(“\nInforme o codigo do convidado\n\n”);
printf(“\nCodigo: “);
scanf(“%d”,&codigoConsultar);
achou = procuraPorCodigoConvidado(codigoConsultar); /* Utiliza a função de procura*/
if (achou != -1)
mostre(achou);  /* Código procurado, método declarado lá em cima*/
else // produto nao foi encontrado
printf(“\n\n\aTalvez o codigo esteja incorreto, informar novamente!!!!!!\n”);
printf(“\n\nConsultar outro convidado(1-sim/2-nao)? “);
scanf(“%d”,&cont);
} while (cont == 1);
}
// Remover Convidados
void remover()
{  int codigoRemover, i, cont, achou, confirmaRemocao;
do{
imprimeCabecalho();
printf(“\nRemover Convidado\n\n”);
printf(“\nCódigo do Convidado: “);
scanf(“%d”,&codigoRemover);
achou = procuraPorCodigoConvidado(codigoRemover);
if (achou != -1)
{
mostre(achou);
printf(“\nExcluir este convidado da Lista (1-sim/2-nao)? “);
scanf(“%d”,&confirmaRemocao);
if (confirmaRemocao==1) // verifica se quer remover
{
lista[achou] = lista[qtd_convidados];
qtd_convidados–;
printf(“\n\nConvidado banido da festa!!!\n”);
system(“pause”);
}else {
printf(“\n\n\aO convidado nao pode ser excluido!!!\n”);
system(“pause”);
break;
}
system(“pause”);
}
else  // Convidado nao foi encontrado
printf(“\n\naTalvez o codigo informado esteja incorreto, informar outro\n”);
printf(“\n\nRemover outro(1-sim/2-nao)? “);
scanf(“%d”,&cont);
}while (cont == 1);
}
/* Lista os convidados*/
void listagem()
{ int i;
imprimeCabecalho();
printf(“\nLista de Convidados\n”);
printf(“\n\nCodigo    Nome                      Acompanhantes                ”);
printf(“\n————————————————————–”);
for(i = 0; i < qtd_convidados ; i++)
printf(“\n%9d         %-20s     %9d                ”,
lista[i].codigo_convidado,
lista[i].nome_convidado,
lista[i].qt_convidados);
printf(“\n—————————————————————”);
printf(“\n\nDigite qualquer tecla para sair… “);
getche();
}
/* Dúvida*/
int main(int argc, char *argv[])
{
qtd_convidados =0;
do // tela com o menu do opcoes
{ imprimeCabecalho();
printf(“Opcoes:\n\n”);
printf(”      1- Inserir novo Convidado\n\n”);
printf(”      2- Listagem de Convidados\n\n”);
printf(”      3- Consulta convidado por codigo\n\n”);
printf(”      4- Remover convidado por codigo\n\n”);
printf(”      0- Sair do Programa\n”);
imprimirLinha();
printf(“\n      Informe a Opcao desejada: “);
scanf(“%d”,&escolha);  /* Declarado lá em cima*/
switch(escolha)
{ case 1: inserir(); break;
case 2: listagem(); break;
case 3: consultarConvidado(); break;
case 4: remover(); break;
case 0: break;
default : printf(“\n\a      Opcao Invalida! Tecle enter…”);
getche(); break;
}
} while (escolha != 0); /* opção de saída*/
return 0;
}
/*
==================
Lista Ordenada
@ESA
==================
*/
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
/* const maximo = 8; */
typedef struct lista_posicoes{
int      codigo_competidor;
char     nome_competidor[30]  ;
int      tempo_segundos;
} Tolimpiada;
/* Declaração de Variáveis*/
int qtd_competidores;
int escolha;
Tolimpiada competidor; /* Declarando tipo competidor*/
Tolimpiada lista[50]; /* Vetor da Lista de Posições no Campeonato*/
int maximo = 8;
/* Preenche Linha */
void imprimirLinha() {
int i;
for (i=1;i<=50;i++)
printf(“_”);
printf(“\n”);
}
/* Cabeçalho */
void imprimeCabecalho() {
system(“cls”);
printf(“Posicoes Olimpiadas – Lista Ordenada\n”);
imprimirLinha();
}
/* Método de procura */
int procuraPorCodigoCompetidor(int Cdcompetidor) {
int i; /* Variável contador*/
int posicao;
posicao = -1;
for(i = 0; i<qtd_competidores; i++) {
/* retornar a posição do código informado*/
if (Cdcompetidor==lista[i].codigo_competidor){
posicao = i;
break;
}
}
return posicao; /* retorna o número da posição*/
}
void mostre(int posicao) {
printf(“\n\nCodigo    Nome Competidor                  Posição no Ranking                ”);
printf(“\n————————————————————–”);
printf(“\n%9d         %-20s     %9d                ”,
lista[posicao].codigo_competidor,
lista[posicao].nome_competidor,
lista[posicao].tempo_segundos);
printf(“\n—————————————————————”);
}
/* Método para colocar em ordem */
void ColocarEmOrderm(){
int i, local;
local -1;
if (qtd_competidores==0)
lista[0]= competidor;
else
{ for (i=0;i<qtd_competidores;i++)
{ if (competidor.tempo_segundos < lista[i].tempo_segundos)
{ local = i;
break;
}
}
if (local==-1)
lista[qtd_competidores] = competidor;
else
{
for (i=qtd_competidores; i>local; i –)
lista[i]= lista[i -1];
lista[local]=competidor;
}
}
}
/* Método Inserir */
void Inserir()
{ int cont;
do { imprimeCabecalho();
printf(“\nInformar Competidor\n”);
if (qtd_competidores<maximo) //Verifica se a lista já está cheia
{ printf(“\nCodigo do Competidor: “);
scanf(“%d”,&competidor.codigo_competidor);
printf(“\nNome do Competidor: “);
fflush(stdin);
gets(competidor.nome_competidor);
printf(“\nTempo em Segundos: “);
scanf(“%f”,&competidor.tempo_segundos);
ColocarEmOrderm();
qtd_competidores++;
printf(“\n\nCompetidor cadastrado com Sucesso!!!\n”);
}
else // Vetor cheio
{
printf(“\n\nLimite máximo de competidores!\n”);
getche();
break;
}
printf(“\n\nContinuar Inserindo Competidores (1-sim/2-nao)?”);
scanf(“%d”,&cont);
}while(cont == 1);
}
/* Lista os convidados*/
void listagem()
{ int i;
imprimeCabecalho();
printf(“\nLista de Competidores\n”);
printf(“\n\nCodigo    Nome                      TempoSegundos                ”);
printf(“\n————————————————————–”);
for(i = 0; i < qtd_competidores ; i++)
printf(“\n%9d         %-20s     %9d                ”,
lista[i].codigo_competidor,
lista[i].nome_competidor,
lista[i].tempo_segundos);
printf(“\n—————————————————————”);
printf(“\n\nDigite qualquer tecla para sair… “);
getche();
}
/* Implementando método de remoção   */
/* competrem – atleta a ser removido */
void remover(){
int competrem, i, achou, continuar, conrem;
do{
imprimeCabecalho();
printf(“\nRemover Competidor do Campeonato\n\n”);
printf(“\nCódigo do Competidor:”);
scanf(“%d”,&competrem);
achou = procuraPorCodigoCompetidor(competrem);
if (achou!=-1)
{ mostre(achou);
printf(“\nDeseja remover o Competidor (1 – Sim/2 – Não)?”);
scanf(“%d”,&conrem);
if (conrem == 1)
{ for (i==achou;i<qtd_competidores;i++)
lista[i]=lista[i+1];
qtd_competidores–;
printf(“\n\nO competidor removido!!!\n”);
}
else
printf(“\n\n\aO competidor nao foi removido!!!\n”);
}
else
printf(“\n\n\aCodigo de competidor incorreto!\n”);
printf(“\n\n\aContinuar remover competidor (1-Sim/2-Não)?”);
scanf(“%d”,&continuar);
} while(continuar == 1);
}
/* Dúvida*/
int main(int argc, char *argv[])
{
qtd_competidores =0;
do // tela com o menu do opcoes
{ imprimeCabecalho();
printf(“Opcoes:\n\n”);
printf(”      1- Inserir novo Competidor\n\n”);
printf(”      2- Ranking dos Competidores\n\n”);
printf(”      3- Remover Competidores\n\n”);
printf(”      0- Sair do Programa\n”);
imprimirLinha();
printf(“\n      Informe a Opcao desejada: “);
scanf(“%d”,&escolha);  /* Declarado lá em cima*/
switch(escolha)
{ case 1: Inserir(); break;
case 2: listagem(); break;
case 0: break;
default : printf(“\n\a      Opcao Invalida! Tecle enter…”);
getche(); break;
}
} while (escolha != 0); /* opção de saída*/
return 0;
}

Estive esses dias pesquisando materiais relacionados à prova de certificação 11g para desenvolvedores. De fato até um tempo este material para estudo não era coisa fácil já que a prova de certificação 1z0-146 ser nova no caminho de certificações da Oracle. Nesses últimos dias consegui um bom material para certificação OCP, Advanced PL/SQL Developer.  Se alguém estiver interessado basta me enviar um email que disponibilizo este material, lembrando que existem bons livros no mercado que já abordam os assuntos das provas, em um próximo post estarei apresentando alguns bons livros. Para se tornar um profissional OCP, você precisará ter concluído os caminhos para conquista do certificado OCA, assim como os materiais para certificação OCP, também tenho alguns materiais e dicas para a prova Oracle Certified Associate.  Retirei da página da Oracle University os assuntos correspondentes à prova de PLSQL Avançado:

Vale lembrar que a Oracle é bem rígida em relação aos assuntos para certificação, tudo que tem relacionado é o que cai na prova, de fato como as questões são feitas de forma aleatória pelos servidores pode ser que algum dos assuntos não apareçam na prova que você está fazendo, mas por garantia é bom sempre estudar todos os assuntos, as apostilas oficiais da Oracle são muito boas já que as questões das provas são baseadas nos assuntos abordados por ela, abaixo vemos uma breve descrição das Certificações Oracle:

Oracle Certified Associate

The Oracle Certification Program begins with the Associate level, which recognizes achievement in mastering introductory Oracle skills.  The Oracle Certified Associate tier was designed to provide for an entry-level DBA certification designation for the Oracle platform. To receive this Certification you must pass two Introductory Exams.

Oracle Certified Professional

The Oracle Certified Professional candidates have proven skills for managing a large scale database or developing robust applications that are deployed enterprise-wide. To receive this Certification you must attend an on-line or in-class training course at the Oracle University and pass one Intermediate level Exam.

Oracle Certified Master

The Oracle Certified Master (OCM) credential is the most advanced Database Administrator certification. It requires that you attend an on-line or in-class training course at the Oracle University. To obtain the OCM you first need to acquire the Oracle Certified Associate (OCA) and Oracle Certified Professional (OCP) credentials.

Oracle Certified Expert

The Certified Expert credentials recognize competency in specific technologies, architectures or domains not currently covered in the path-based Certified Associate and Certified Professional certifications.

Na imagem abaixo estão os caminhos necessários para conquista das certificações para desenvolvedores PL/SQL.

Fontes.: http://en.wikipedia.org/wiki/Oracle_Certification_Program

http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=3

Seguir

Get every new post delivered to your Inbox.

Junte-se a 100 outros seguidores