Jump to content
Notícia
  • Adquira já o seu VIP!

#include <Aprendiz.h>

Membro
  • Content Count

    44
  • Joined

  • Last visited

  • WCoins

    0 [ Donate ]

Community Reputation

1

About #include <Aprendiz.h>

  • Rank
    WebCheats
  1. Cara, ficou um pouco confuso o tuto. Pode arrumar essas cores? aqui não ficou muito bem e ficou aparecendo o html.
  2. Também não tenho entendido muito bem a proposta desses posto que se tem denominado classe se referindo a address, poderia explicar um pouco melhor o code? Realmente esses caracteres não são aceitos no c++.
  3. 1- Necessário conhecimento básico da linguagem c++, paciência e bom ânimo. 2- Tópico criado no intuito de passar as definições mais básicas sobre o assunto, para ajudar quem está nesta etapa e assim como foi cmg, sofre para compreender alguns principios. 3 - Não registrado coisas sobre polimorfismo, herança e etc. 4 - Pouco uso de termos técnicos. 5 - Se achar algum erro, fique a vontade para corrigir! POO - Programação Orientada a Objetos Mas o que diabos é isso? Ouvimos/lemos por aí, c++ é orientado a objetos. Mas no começo, c e c++ parecem exatamente a mesma coisa quando não se entende o que são objetos. O que diferencia c de c++ é isso, objetos. Qual o primeiro passo para ter um objeto? R: Classes. Classes são estruturas de dados, semelhantes à struct do c, porém com mais recursos e possibilidades. Como criar uma classe em c++ Class classe_de_alunos { int idade; string nome; } Isso é uma classe. Uma classe bem simples, que poderia ser substituída por struct. Até aí, quase não há diferença. Você pode, assim como nas structs, declarar se um membro da classe é privado ou publico. Por bom costume, em programas grandes se usa as variaveis em modo privado. Somente as funções-membros da classe a que pertencem poderão "vê-las", não todas. Ex: Class classe_de_alunos { private: int idade; string nome; public: void receber_aluno(); } void alunos_bons(); ... } a função receber_aluno() poderia manipular os endereços privados da classe, já alunos_bons() não poderiam, pois não foi feita/implementada como membro da classe a que pertencem as variáveis. Dito isso, podemos agora praticar o que aprendemos até aqui: Class classe_de_alunos { private: int idade; string nome; public: void receber_alunos(string nome, int idade) { this->nome = nome; this->idade = idade; } Usamos parametros para alocar algum valor nas variaveis-membro da classe, pois são privadas e não poderiam ser alteradas de fora da classe. Por isso, trazemos para dentro da classe o valor desejado, através dos parametros, para só então armazená-los nas variaveis-membro da classe. Usamos "this->" para literalmente "apontar" que estamos nos referindo a variavel de DENTRO da classe, e não aos parametros. Ex: o nome da variavel-membro é nome, mas o "nome" do parâmetro também é "nome", então se escrevermos nome=nome, o compilador não entende e não altera as variaveis-membro da classe. podemos, e devemos, fazer o que fizemos acima, da seguinte forma : Class classe_de_alunos { private: int idade; string nome; public: void receber_aluno(string nome, int idade); } void classe_de_alunos::receber_aluno(string nome, int idade) { this-> idade = idade; this->nome = nome; } Mas o que diabos foi isso? Void class_de_alunos::receber_aluno(string nome, int idade) : o que declaramos dentro da classe foi o "protótipo" da nossa função, por boa prática, implementamos ela fora da classe. Basta apenas colocar o tipo dela e o nome da classe a que ela pertence antes das instruções que o compilador entende que vc está falando dela. Void é o tipo da função que declaramos dentro da classe, classe_de_alunos classe de onde esto tirando a função, e receber_aluno(string nome, int idade) função que eu criei dentro da classe. Entendeu? Necessário o uso do :: entre o nome da classe e o da função. feito tudo isso, nos falta agora uma função que nos mostre o que tem dentro das variaveis-membro após a execução da função(método) "receber_alunos". vamos então criar algo que nos mostre o que tem nelas. void mostrar() { cout << nome <<endl; cout << idade; } }; Neste caso não há a necessidade de especificar com o uso do this-> qual é a variável membro, pois não há parâmetros. nossa classe ficou assim : class classe_de_alunos { private: int idade; string nome; public: void receber_alunos(string nome, int idade) { this->nome = nome; this->idade = idade; } void mostrar() { cout << nome <<endl; cout << idade; } }; ou, por questão de FACILIDADE de manutenção e até mesmo por estética, limpeza, podemos fazer da outra forma, com apenas os protótipos dentro e as instruções fora: #include <iostream> using namespace std; class classe_de_alunos { private: int idade; string nome; public: void receber_alunos(string nome, int idade); void mostrar(); }; void classe_de_alunos::receber_alunos(string nome, int idade) { this->nome = nome; this->idade = idade; } void classe_de_alunos::mostrar() { cout << nome <<endl; cout << idade; } int main() { } Nota: as classes e suas respectivas funções DEVEM ser definidas e implementadas ANTES do main, logo no incio do código. O objeto int main() { classe_de_alunos meusAlunos; // instanciação de objeto ( criação do objeto, instancia, instanciar, são termos técnicos que podemos simplificar como" criar " ) } aí está o nosso objeto: meusAlunos. Como vamos entender isso? Qual é a relação entre os dois? Pq uma classe não é um objeto propriamente dito? Para facilitar, você pode entender dessa forma: a classe é a PLANTA da casa, ou seja, todo o desenho dela, a maquete, as medidas, etc. E meusAlunos, é um casa construída a partir daquela maquete. Classe é uma planta, e o objeto é a casa que saiu dessa planta. Classe representa todos os tipos de carro, e o FIAT UNO é o objeto que saiu desse tipo. Todo carro tem rodas, farol, janelas, motor. Todo objeto que seja carro, terá esse padrão: rodas, farol, janelas, motor, etc. Classe é um TIPO de relógio, e o objeto criado a partir desse tipo é um ROLEX. Todo relógio tem ponteiros, e marca as horas. Todo objeto do tipo relógio tem ponteiros e marca as horas. ou seja, Classe_de_alunos é um TIPO, Uma Planta, um Molde, meusAlunos é um objeto que tem todos esses atributos e funções que especificamos em Classe_de_alunos. Usando nosso objeto. para usar nosso objeto, vamos usar o nome dele, no caso meusAlunos, seguido de . (ponto) e o nome da função dele que queremos usar. int main() { string nome; int idade; classe_de_alunos meusAlunos; /// Objeto do tipo classe_de_alunos. Objeto nos moldes de classe_de_alunos. Casa feita através da planta classe_de_alunos. cout <<"Digite o nome do aluno: "; getline(cin, nome); cout <<"Digite a idade do aluno: "; cin >> idade; meusAlunos.receber_alunos(nome, idade) usamos nossa função receber_alunos, especificada lá dentro da classe. Agora, essa função pertence ao nosso objeto meusAlunos e a qualquer outro que criemos a partir da classe classe_de_alunos. Passamos nossos valores por parametro, aí nossa função fez o que mandamos, guardou os valores dos parametros nas variaveis-membro da nossa classe. Agora vamos pedir para ver como ficaram lá dentro do nosso objeto: meusAlunos.mostrar(); lembra que especificamos dentro da nossa classe que quando um objeto quisesse chamar essa funçao, ela retornaria nossas variaveis? pois é isso que ela fará, irá retornar o que guardamos lá dentro. int main() { string nome; int idade; classe_de_alunos meusAlunos; cout <<"Digite o nome: "; getline(cin, nome); cout <<"Digite a idade: "; cin >> idade; meusAlunos.receber_alunos(nome, idade); meusAlunos.mostrar(); return 0; } Você pode criar várias casas a partir de uma única planta, correto? A mesma coisa com objetos. Você pode criar vários a partir de uma classe, e um existirá independente do outro. Os comodos da casa serão todos iguais, o que mudará é o que guardamos lá dentro dela. nossos objetos tbm serão todos iguais, o que mudará será os dados que guardaremos dentro deles. 2 - Construtores, o método set e o método get Já sabemos o que é uma classe e como usá-la, porém existem ainda muitas definições para explorar, tentarei expor aqui o mais primordial para se fazer uma classe digna e com respeito. Construtores: Construtor é o que vai construir a casa, é quem vai colocar os tijolos, as vigas e etc. Construtor no objeto, no entanto, é quem vai colocar DADOS dentro dele. um construtor, é basicamente o exemplo que utilizamos chamado receber_aluno, só que os construtores levam, obrigatoriamente, o mesmo nome da classe. E, obrigatoriamente, não retornam nenhum tipo de valor, são sempre VOID(vazios). Outra característica do construtor é que, ele sempre se auto-executará logo que o objeto for criado. vamos usar a nossa função receber_aluno e transformá-la num construtor. void receber_alunos(string nome, int idade); // Antiga função, não construtora classe_de_alunos(string nome, int idade); // Nova função, construtora, já podemos descartar a antiga, que apenas nos serviu de exemplo básico aí está o nosso construtor, em verde. o implementamos da mesma forma que a outra função, só alteramos o nome e deixamos o retorno vazio, não há necessidade nem de colocar o "void" antes. classe_de_alunos::classe_de_alunos(string nome, int idade) { this->nome = nome; this->idade = idade; } este é o nosso construtor. Como falamos, ele será sempre executado automaticamente logo que criamos o objeto, então, podemos criar nosso objeto só quando já tivermos nossos parametros prontos. nossa alteração ficou assim no final: #include <iostream> using namespace std; class classe_de_alunos { private: int idade; string nome; public: classe_de_alunos(string nome, int idade); void mostrar(); }; classe_de_alunos::classe_de_alunos(string nome, int idade) { this->nome = nome; this->idade = idade; } void classe_de_alunos::mostrar() { cout << nome <<endl; cout << idade; } int main() { string nome; int idade; cout <<"Digite o nome: "; getline(cin, nome); cout <<"Digite a idade: "; cin >> idade; classe_de_alunos alunos(nome, idade); // note que, por ser logo de cara executado o construtor, passamos logo de cara ao criarmos o objeto os nossos parametros, caso contrário não compila. alunos.mostrar(); return 0; } O get usamos isso quando queremos saber o que tem dentro do nosso objeto. Na nossa explicação usamos a função "mostrar()", que é exatamente o dever do get. Neste caso, vamos apenas alterar o nome e teremos o nosso get. void getAlunos(); entenda isso como, literalmente, Mostrar Alunos. os métodos da nossa classe devem ter retorno, pois o correto, é usarmos o retorno para dar saída aos dados, usarei cout mesmo para ganharmos tempo. void classe_de_alunos::getalunos() { cout << nome <<endl; cout << idade; } Aí está, nosso get prontinho. Por boa prática, usamos o retorno, e não o cout, no caso teríamos que criar um get para cado dado do objeto. getNome e getIdade, e colocar em seus respectivos retornos "return nome;" e "return idade;" O set o método set é usado para ALTERAR os nossos dados. Por exemplo, desejo alterar o nome, vou escrever uma função setNome(nome); Ou seja, literalmente: "MudarNome, nome receberá(nome passado por parametro)". int classe_de_alunos::setNome(string nome) { this->nome = nome; /// variavel-membro nome, recebe o conteudo passado pelo parametro nome. } isso alterará o nome, vejamos. int main() { string nome; int idade; cout <<"Digite o nome: "; getline(cin, nome); cout <<"Digite a idade: "; cin >> idade; classe_de_alunos meusAlunos(nome, idade); meusAlunos.getAlunos(); cin.ignore(); cout <<"Digite um novo nome para substituir: " <<endl; getline(cin, nome); meusAlunos.setNome(nome); // Altero o nome meusAlunos.getAlunos(); // retorno os dados novamente, para conferir se foi alterado. return 0; } então é isso, use set para alterar os dados e get para mostrar os dados. set sempre necessitará de referência, parâmetros para fazer alterações, get nunca precisará disso para retornar os dados. código completo dos exemplo : #include <iostream> using namespace std; ///////////////////////////////////////////////////////////////////Implementação da classe ////////////////////////////////////////////////////////////////////////////// class classe_de_alunos { private: int idade; string nome; public: classe_de_alunos(string nome, int idade); void getAlunos(); int setNome(string nome); }; classe_de_alunos::classe_de_alunos(string nome, int idade) { this->nome = nome; this->idade = idade; } int classe_de_alunos::setNome(string nome) { this->nome = nome; /// variavel-membro nome, recebe o conteudo passado pelo parametro nome. } void classe_de_alunos::getAlunos() { cout << nome <<endl; cout << idade; } /////////////////////////////////////////////////////////// Fim da implementação da classe ///////////////////////////////////////////////////////////////////////////////////////////////// int main() { string nome; int idade; cout <<"Digite o nome: "; getline(cin, nome); cout <<"Digite a idade: "; cin >> idade; classe_de_alunos meusAlunos(nome, idade); meusAlunos.getAlunos(); cin.ignore(); cout <<"Digite um novo nome para substituir: " <<endl; getline(cin, nome); meusAlunos.setNome(nome); meusAlunos.getAlunos(); return 0; } espero que ajude alguém, ficou uma bíblia, mas tentei expor o que eu extraí de muitas explicações chatas da internet de um modo simples, sem tanto uso de termos técnicos. Deixo também um cadastro de alunos que fiz usando objetos, como ficou bem grande, fiz usando arquivos separados, para ficar organizado. Usei headers, cabeçalhos. main.cpp classe.h classe.cpp
  4. Rapaz, pensei que só x*x num valeria ._. mas wlw \o
  5. #include<iostream> #include<math.h> main(){float x;std::cin>>x;std::cout<<sqrt(x)<<" "<<x+x<<" "<<x/2;} 106
  6. Quanto ao cod test, é necessário que o programa retorne alguma frase? Ex: "Insira um número" "raiz quadrada é:" "dobro é: " necessário tais coisas?
  7. Venha participar do novo evento de programação, será que você consegue? :) http://www.webcheats.com.br/forum/inscricoes/2502448-code-test-1-inscricoes.html
  8. Olá, você poderia detalhar o código? Isso é o uso do que se chama de API's?
  9. Mano, show o seu programa, super funciona. Mas tem limite de tempo pra não ser banido? Poderia em dar uma luz? o que eu devo estudar pra conseguir fazer cheats? eu to aprendendo c++ na faculdade mas ainda não entendi como ler a memoria de um programa. Valeu!
  10. Oi, O código que implementei é uma mini-registradora. - Primeira parte - segunda parte - cadastrando produtos -terceira parte - fazendo transação. obviamente não é útil, é apenas um exercício de fixação para o que aprendi até agora. Faremos uso das funções básicas: Laços(for, while) estruturas condicionais(if, else) Passagem de referencias para funções - uso de ponteiros. vetores estrutura de dados(struct) Funções Protótipos de funções #include <iostream> #include <cstdlib> #include <locale.h> #include <string> #include <iomanip> using namespace std; struct produtos_dados { string nome; int codigo; float preco; int qnt; }; int novo_produto(produtos_dados produtos[]); int consultar_produto(produtos_dados produtos[]); int mostrar_lista(produtos_dados produtos[]); int transacional(produtos_dados produtos[]); int main() { system("color 1f"); setlocale(LC_ALL, "Portuguese"); char operacao; produtos_dados produtos[100]; do { cout <<"\n\tCadastro de produtos 1.0\n" <<"\tEscolha sua operação\n" <<"\t1 - Cadastrar novo produto\n" <<"\t2 - Consultar codigo\n" <<"\t3 - mostrar lista\n" <<"\t4- Operacoes Transacionais\n" <<"\tS para sair.\n"; cin >> operacao; switch(operacao) { case '1': novo_produto(produtos); break; case '2': consultar_produto(produtos); break; case '3': mostrar_lista(produtos); break; case '4': transacional(produtos); break; default: cout <<"Operacao inválida"; } } while(operacao!='s'); } int novo_produto(produtos_dados produtos[]) { int quantidade; cout <<"Quantos produtos deseja cadastrar?"; cin >> quantidade; for(int i=0; i<quantidade; i++) { cout <<"\nDigite o nome do novo produto: "; cin >> produtos[i].nome; cout <<"\nDigite o valor do novo produto: "; cin >> produtos[i].preco; produtos[i].codigo = i + 20150000; cout <<"\nCodigo gerado: " << produtos[i].codigo <<endl; cout <<"__________________________________"; produtos[i+1].nome = "vazio"; } } int consultar_produto(produtos_dados produtos[]) { int codigo, i = 0; system("cls"); cout <<" Digite M para retornar ao Menu"; cout <<" Digite o código do produto: "; cin >> codigo; while(codigo!=produtos[i].codigo) // percorrendo vetor, procurando em qual lugar está nosso código. { i++; } if(codigo == produtos[i].codigo) // Quando encontrado, sai do laço e dá saída ao nome e ao preço do produto pertecendo ao código. { cout << produtos[i].nome <<endl; cout << produtos[i].preco <<endl; } else cout << "Código não registrado"; } int mostrar_lista(produtos_dados produtos[]) { system("cls"); if(produtos[0].codigo != '\0') // Fazer um check antes de puxar a lista, se não tiver nenhum código registrado ele não chama a lista, afim de evitar loop infinito/erro. { for(int i =0; produtos[i].nome != "vazio"; i++) { cout << produtos[i].nome <<endl; cout << produtos[i].preco <<endl; cout << produtos[i].codigo <<endl; } } } int transacional(produtos_dados produtos[]) { char operacao; int codigo, i = 0; float soma = 0, pagamento, troco; system("cls"); cout <<"\tSistema Transacional - Compras"; cout <<"\tM - Voltar ao menu.\n"; cout <<"\tC - Concluir transação\n"; while(operacao != 'c' || operacao != 'm' && operacao == '+') { cout << "\nEntre com o código: "; cin >> codigo; while(codigo!=produtos[i].codigo) // percorrendo vetor, procurando em qual lugar está nosso código. { i++; } if(codigo==produtos[i].codigo) { cout << produtos[i].nome <<endl; } cin >> operacao; soma = soma + produtos[i].preco; i = i -i; } if(operacao=='c') // Fechando a compra { cout <<"\nValor da compra: R$ " <<soma <<endl; cout <<"\nValor do pagamento: R$"; cin >> pagamento; troco = pagamento - soma; cout <<"\ntroco: R$" <<troco<<endl; } else if(operacao=='m') { } } Bom, talvez seja irrelevante e todos já saibam, mas caso algum inciante como eu não soube, também não saiba, se está conhecendo agora passagens de variaveis/valores por argumento/referencia, deve ter notado que mesmo não usando &(address-of) antes da variavel produto, podemos realizar alterações nas variaveis do main. O fato é que vetores são ponteiros, por isso não há a necessidade de dizer isso novamente ao compilador com o &, como fazemos para variáveis atômicas. Por se tratar de vetores [ponteiros], fica assim: int novo_produto(produtos_dados produtos[]); int consultar_produto(produtos_dados produtos[]); int mostrar_lista(produtos_dados produtos[]); int transacional(produtos_dados produtos[]); se fosse variavel comum, seria assim. int novo_produto(produtos_dados &produtos); int consultar_produto(produtos_dados &produtos); int mostrar_lista(produtos_dados &produtos); int transacional(produtos_dados &produtos); de resto, o programa é bem simples, mais para fixação dos conteúdos, está bastante bagunçado( por conta da hora, fiz meio que com pressa) e quem puder/quiser mostrar soluções melhores fique a vontade!!!!! Abraços!
  11. Caramba, isso é tipo grego p mim que sou iniciante kkk. Mas sempre quis saber como funciona, quais funções devo estudar pra compreender melhor o código?
  12. Gostei de como ficou prático sobrescrevendo a resposta anterior, e o fato de ter usado uma só função mesmo o jogo tendo mais de dois modos, optando pelo switch, super útil. Show.
  13. Até agora ponteiros foi o conteúdo mais tenso pra aprender, levei um cossa bonita. Mas isso é culpa de vícios, não sei pq mas desde o começo eu jurava que o ponteiro era isso -> &ptr. Não sabia distinguir isso como um endereço a ser apontado pelo ponteiro. Fica a dica, não se viciem com nada nesse mundo :lol:
  14. Olá. Veja, sua source é eficaz, traz os resultados desejados. Mas gostaria de deixar umas observações, coisas que me serviram bastante até hoje. Você está usando um laço, certo? Se você está usando um laço, não tenha medo de aproveitar ele. Você não precisa reescrever toda hora um printf solicitando os números, faça isso apenas uma vez e deixe o laço se encarregar de repeti-lo pra você. do{ x = 0; y = 0; res = 0; printf("Bem-vindo a calculadora 1.0.0.0.0.0.0"); printf("\n--------------------------------------"); printf("\nDigite 1 para soma;"); printf("\nDigite 2 para subtracao;"); printf("\nDigite 3 para divisao;"); printf("\nDigite 4 para multiplicacao;"); printf("\nDigite 5 para raiz quadrada;"); printf("\nSua escolha: "); op = getche(); printf("\nDigite um valor: "); scanf("%f",&x); printf("\nDigite outro valor: "); scanf("%f",&y); dessa forma você limpa o escopo, deixa o switch específico para as operações, facilitando a compreensão. switch(op){ case '1': res = x+y; printf("\nA soma eh: %0.3f",res); break; case '2': res = x-y; printf("\nA subtracao eh: %0.3f",res); break; case '3': res = x/y; printf("\nA divisao eh: %0.3f",res); break; case '4': res = x*y; printf("\nA multiplicacao eh: %0.3f",res); break; case '5': res = sqrt(x); printf("\nA raiz eh: %0.3f",res); break; default: printf("\nOpcao inexistente\n"); break; } Não se trata de estar ruim ou bom, mas vise sempre deixar o seu código o menor possível, assim você economiza espaço, tempo para escrevê-lo e a correção de possíveis problemas se tornam mais rápidos. Outra coisa que me acrescentou muito também foi diminuir ao máximo o uso de variáveis. Economiza espaço na escrita e descarta o uso desnecessário de memória. No caso, poderíamos remover a variavel res, pois a usamos apenas para guardar o resultado. A saída do c aceita que você saia resultados de operações, aproveite isso. Exemplo: switch(op){ case '1': printf("\nA soma eh: %0.3f",x+y); break; Abraços!
  15. Show seu algoritmo. tô tomando uma surrinha pra entender direito como faz pra passar usar variavel local em outra função passando por parâmetro usando ponteiros, igual vc fez aí. X.X
×
×
  • Create New...