Ir para conteúdo
Fórum Script Brasil

bonoddr

Membros
  • Total de itens

    181
  • Registro em

  • Última visita

Tudo que bonoddr postou

  1. Cara eu nunca usei o gcc, talvez o Eddie666 possa te ajudar...
  2. Fazendo objetos diferentes comunicarem-se entre si Agora, continuando com os conceitos de orientação a objeto, vou criar duas classes: uma que instancia objetos do tipo contas de um banco e outra que instancia um terminal de caixa eletrônico (nesse caso, só precisaremos instanciar um objeto do tipo caixa eletrônico). Vamos definir o cabeçalho da classe account: /* ACCOUNT.H */ #ifndef ACCOUNTH #define ACCOUNTH const int MAXACCOUNTS=10; class account { private: float Balance; int AccountNumber; public: bool Withdraw(float Amount); bool Deposit(float Amount); float CheckBalance(); int CheckAccountNumber(); }; #endif O valor de MAXACCOUNTS será posteriormente usado para armazenar o número de elementos em uma array. Neste caso, todos os objetos de account estarão armazenados em uma array de objetos. Esta array será acessada pela classe atm, pensando na vida real, onde todas as contas poderão ser acessadas pelo caixa eletrônico. Agora vamos definir os métodos da classe account no arquivo account.cpp: #include "account.h" bool account::Withdraw(float Amount) { if (Balance >= Amount) { Balance -= Amount; return true; } else { return false; } } bool account::Deposit(float Amount) { Balance += Amount; return true; } float account::CheckBalance() { return Balance; } int account::CheckAccountNumber(){ return AccountNumber; } Pronto, agora vamos especificar o cabeçalho da classe atm (automatic transfer machine, ou caixa eletrônico): /* ATM.H */ #ifndef ATMH #define ATMH #include "account.h" class atm { private: int CardCode, EnteredCode; account Account[MAXACCOUNTS]; public: void DisplayWait(); void ReadCard(); BOOL CheckCode(); void ProcessChoice(); }; #endif aqui, usamos a variável global de account.h (MAXACCOUNTS) para definirmos o tamanho da array de objetos de account. Reparem que, para declarar uma array de int's, faz-se: int array[MAXACCOUNTS]; Aqui teremos uma array de número inteiros com 10 posições (índice 0 até 9). Para guardar objetos account em uma array, faz-se a mesma analogia: account array[MAXACCOUNTS]; Agora aqui está o código do atm.cpp: #include "atm.h" void atm::DisplayWait() { char card='\0'; while (card != 'c') { cout << "Please insert your card.\n"; cout << "Testing: enter 'c' and hit return "; cin >> card; } cout << "Please enter code on card: "; cin >> CardCode; } void atm::ReadCard() { cout << "Please enter your personal code: "; cin >> EnteredCode; } BOOL atm::CheckCode() { return EnteredCode == CardCode ? true : false;} void atm::ProcessChoice() { int choice; float amount; do { cout << "Select an option:\n"; cout << "Withdraw cash -- Press 1\n"; cout << "Deposit cash -- Press 2\n"; cout << "Check balance -- Press 3\n"; cout << "Quit -- Press 0\n"; cin >> choice; if (choice < 0 || choice > 3) cout << "Invalid choice. Try again.\n"; } while (choice < 0 || choice > 3); switch (choice) { case 0: return; case 1: cout << "Enter amount to withdraw: "; cin >> amount; if (Account[CardCode].Withdraw(amount)) cout << "Transaction successful.\n"; else cout << "Balance insufficient for withdrawal.\n"; break; case 2: ... /* Trata depósito */ case 3: cout << "Current balance of account is: "; cout << Account[CardCode].CheckBalance() << endl; break; } } Caso queiram, criem um arquivo cpp para chamar todo o programa. Neste arquivo, será especificado apenas a funcionalidade do programa. #include "atm.h" void main() { atm autobank; while(true) { autobank.DisplayWait(); autobank.ReadCard(); if (autobank.CheckCode()) autobank.ProcessChoice(); else cout << "Incorrect code.\n"; } } Pronto. Temos um programa que simula o funcionamento de um caixa eletrônico. Porém, dêem uma olhada e descubram o que ainda há de errado com o programa. Qualquer coisa, mandem-me email! Até já!
  3. E aí firmeza? Em primeiro lugar, o uso de classes simplifica e MUITO o código, pois na classe você define os atributos (que geralmente são privados) e os métodos (públicos). Imagina que você tem um problema na parte do código que exibe dados na tela. Ao invés de você ir procurar em todo o seu código estruturado, você vai simplesmente na codificação daquele método que exibe os dados e faz os "reparos" necessários. Na classe, você define todo o esqueleto de como será o seu objeto padrão a ser instanciado. Vantagens: - Reuso de código - Manutenção facilitada - Praticidade de visualizar como todos os objetos se comunicam entre si - Uso total de conceitos de Engenharia de Software (UML) ... Você deve usá-las sempre ou na maioria das vezes... Principalmente quando você vai construir sistemas mais complexos. Você não precisaria usar quando quiser testar um algoritmo, por exemplo. Use todas as definições de classe quando você for fazer um trabalho maior e mais detalhado.
  4. Arrays Estou abrindo este espaço para falar sobre arrays associando-as aos ponteiros. Isso porque, em C++, ponteiro é a mesma coisa que array. Para ilustrar isso, abaixo especificarei um código simples que ajuda a entender: #include <iostream> using namespace std; void main(){ int intvet[10]; int *p; p=&intvet[2]; *p = 2; cout<<*p<<", "<<intvet[2]<<endl; } pelo código, vamos simplesmente criar uma array de inteiros e um ponteiro para um valor inteiro. No caso do código acima, intvet é uma array de 10 posições e *p é um ponteiro. Primeiro, passamos a informação que p recebe o endereço de intvet. Poderíamos também especificar assim: p = &intvet[0]; Então, p vai receber o valor do primeiro elemento da array intvet. Podemos concluir que, quando usamos: p = intvet; estamos especificando que p está recebendo o endereço da primeira posição da array especificada. Vou explicar melhor: *(intvet + i) i neste caso é o índice da array vezes o número de bytes para tipo de valor armazenado. Por exemplo, vamos dizer que &intvet[0] tem o número de endereço 1000. Nesse caso, *(1000 + 0 * 4) = *(1000). Então, o ponteiro correspondente apontará a posição 1000 da array, ou seja, intvet ou &intvet[0]. Vamos então agora apontar para a posição 3 da array. p = &intvet[2]; *p = 11; Nesse caso, p vai apontar o valor 11 que está no endereço de memória de intvet[2]. Aplicando a fórmula especificada: *(1000 + 3 * 4) = *(1012) Este é o endereço de memória que a posição 3 da array intvet irá ocupar. Agora indo mais à frente: Se foi dito que ponteiro é o mesmo que array, então podemos especificar que *intvet equivale a intvet[0]. Da mesma maneira, *(intvet + i) equivale a intvet. #include <iostream> using namespace std; void main(){ int intvet[10]; int *p; p=&intvet[2]; *p = 2; cout<<*p<<", "<<*(intvet + 12)<<endl; p=intvet; *p = 3; cout<<*p<<", "<<*intvet<<endl; } Por enquanto é só. Acho que deveria ter falado antes de Classes e Objetos, mas tá lançado. Aguardem!
  5. bonoddr

    Operador

    Aqui está um exemplo de função de potência: #include <iostream.h> int enesima (int x, int n){ int inicial = x; if (n == 1){ return x; } else if (n==0){ return 1; } else if (n < 0){ cout<<"não é permitido calcular potencia de numero negativo"<<endl; cout<<"O resultado corrente representara nulo."<<endl; return '\0'; } else{ for (int i=2; i <= n; i++){ x = x * inicial; } return x; } } int main(){ int x,n; printf("Insira o valor: "); scanf("%d",&x); printf("Elevado a: "); scanf("%d",&n); printf("O resultado corrente é: %d\n",enesima(x,n)); system("pause"); system("cls"); return 0; } Nesse exemplo, misturei C com C++ cara, se não me engano, existe uma função C que já calcula a potência pra vc. pow (int,int); Dá uma testada aí...
  6. O seu compilador deve estar devidamente configurado para suportar caracteres acentuados (provavelmente está com layout united states)
  7. Estou tentando disponibilizar todos os dados de uma tabela de access em uma página asp (inseri o activeX pelo frontpage), mas atenção: é uma tabela DINÂMICA. Porém, recebo a seguinte mensagem de erro: 0X80004005: "As configurações de segurança deste computador proíbem o acesso a uma fonte de dados em outro domínio". Alguém sabe o que pode estar acontecendo? Agradeço qualquer ajuda! bonoddr
  8. bonoddr

    Zone Alarm

    De rede interna, eu consigo usar a mesma conexão de internet nos 2 computadores... Como tinha dito antes, o computador que atua como servidor (e tem o firewall) consegue enxergar as pastas do computador cliente, mas o cliente não enxerga as pastas do computador que possui o firewall. Quero saber em que parte das configurações do Zone Alarm eu permito que SOMENTE aquele computador de IP específico acesse as pastas do computador servidor.
  9. bonoddr

    Zone Alarm

    Galera, alguém?
  10. bonoddr

    Que Outras Linguagens?

    você vai achar PHP muito parecido com C...
  11. bonoddr

    Zone Alarm

    Olá pessoal. Eu tenho o firewall zone alarm instalado no meu PC servidor. Então, eu consigo enxergar numa boa o computador remoto, mas o remoto não consegue enxergar o servidor! Em resumo, o servidor acessa as pastas do remoto e o remoto não acessa as pastas do servidor. Alguém sabe como configuro no Zone Alarm para deixar o remoto acessar as pastas do pc servidor? Grato pela atenção, bonoddr
  12. bonoddr

    Ajuda Em Trabalho

    já que você tá querendo em C, então você não tem passagem por referência. Nesse caso, passa-se o endereço da variável e escreve-se o endereço apontado. #include <iostream.h> void calc_paralelepipedo(float a, float b, float c, float * area, float * volume){ float A,V; A = 2*(a*b + a*c + b*c); V = a*b*c; *area = A; *volume = V; } int main(){ float area1,volume1; calc_paralelepipedo(2,3,4,&area1,&volume1); printf("Area: %d\n",area1); printf("Volume: %d\n",volume1); system("pause"); return 0; } Espero ter ajudado. Aqui vai outro código pra quem quiser usar passagem por referência: #include <iostream> using std::cout; using std::endl; void calc_paralelepipedo(float a, float b, float c, float &area, float &volume){ float A,V; A = 2*(a*b + a*c + b*c); V = a*b*c; area = A; volume = V; } int main(){ float area1,volume1; calc_paralelepipedo(2,3,4,area1,volume1);// Aqui area1 e volume1 //são passados por referência, ou seja, podem ser modificados //pela função cout<<"Area: "<< area1 <<endl; // Note que calc_valores não //retorna nada, por isso sua chamada vem antes do cout cout<<"Volume: "<< volume1 <<endl; system("pause"); return 0; } //Usar passagem por referência do float de main para o float de //calc_valores Com base no exercício 1, tente fazer os outros dois (principalmente o 2º que é parecido) Até a próxima! bonoddr
  13. bonoddr

    Ajuda Em Trabalho

    Para quê você vai querer usar ponteiros para valores calculados na parte de parâmetros?
  14. Valeu pela ajuda franciscobiscaino, vou dar uma olhada quando chegar em casa.. Junior QDN, porque não é recomendável ligar na porta USB? Eu não sei como fazer para rotear o meu modem, então como me considero leigo, dou um "jeitinho" de fazer funcionar de qualquer jeito bonoddr
  15. Incrivelmente, não consigo mais compartilhar internet. Não sei o que houve. dark0, eu ligo o modem adsl ao meu pc (win xp pro) via USB e a placa de rede do meu micro eu ligo na do pc do meu pai (win 98 se). O firewall tem muito a ver sim, na época que não tava conseguindo, assim que eu o desativei, consegui compartilhar. Agora não sei porque não estou mais conseguindo.. O pc servidor tá rodando o proxy do analogX com firewall desabilitado. Acredito que tenha que configurar o Internet Explorer no pc do win 98. Os ip's são compatíveis (o meu tá como 192.168.0.1 e do meu pai com 192.168.0.2). Eles pingam numa boa. Aguardo respostas, valeu! obs.: os 2 pc's já estão se enxergando pela rede. bonoddr
  16. bonoddr

    Zone Alarm

    Alguém sabe como posso configurar meu PC pra isso? O firewall bloqueia o acesso por rede de outro micro, assim como o compartilhamento da banda larga. Quando vou compartilhar internet, desativo o firewall, mas sei que isso é perigoso contra ataques externos. bonoddr
  17. Se registra que assim você atrai mais pessoas para ajudá-lo...
  18. bonoddr

    Velox No Linux

    Olá pessoal, eu também sou novato em Linux e quero saber como fazer uma conexão Velox através do linux. Agradeço qualquer ajuda! Já vi, por exemplo, adsl-start e adsl-stop, mas não tem mais algo a ser configurado? Sabem como conectar pelo cabo usb como no windows? bonoddr
  19. bonoddr

    Livros...

    Cara ele é muito bom, mas para usuários intermediários pra cima. O livro em si tem muitas páginas e o nível de detalhamento é muito grande. Pra quem é iniciante, recomendo começar por um mais fácil e didático
  20. Já consegui pessoal! O meu firewall não deixava o outro computador conectar nem mesmo em rede, quanto mais compartilhar a conexão de internet. Agora vou dar uma olhada nas configurações para ver como habilito estas o~pções usando firewall. Valeu à todos pela atenção! bonoddr
  21. bonoddr

    Livros...

    Procura este: Treinamento em C++ da Makron Books, é muito bom porque trata os assuntos de uma forma bem didática. Tem uns dálmatas na capa do livro heheheee O livro é grande, mas não tem muitas páginas (comparando com um Deitel da vida) Boa sorte!
  22. Eu pedi uma ajuda parecida. O AnyForm.cgi faz exatamente isso, mas ninguém me respondeu até hj aqui em CGI/Perl, tive que pesquisar outra maneira de fazer, e fiz pelo ASP mesmo.
  23. Cara você tem ao menos um rascunho do grau de complexidade do sistema que você deseja implementar? Passe detalhadamente como funcionará o sistema que poderemos ajudá-lo melhor...
  24. bonoddr

    Enviar E-mail Pelo Asp

    Tá tranquilo brother...
  25. bonoddr

    Executar Comando

    Não seria o system("comando de dos")? Por exemplo: system("cls"), system("pause"), system("dir") ...
×
×
  • Criar Novo...