Dark Skyllen 7 #1 Postado 4 Abril, 2010 Aula 6 Struct e Enums Nessa aula iremos aprender a funcionalidade dos structs e dos enums. Vamos começar pelo enum que é prático, simples e mais fácil do que o struct. Enums: Também conhecida por constantes enumeradas, elas armazerão uma coleção de constantes que poderão depois ser chamada e passarem a ser um "tipo de variável". Como exemplo, podemos ver como usar o enum nos dias da semana: enum Dias da semana { Segunda, Terca, Quarta, Quinta, Sexta, Sabado, Domingo }; Ao criarmos esse enum, não definimos nenhum valor inicial, o que será jogado por default como: Segunda = 0 Terca = 1 Quarta = 2 Quinta = 3 Sexta = 4 Sabado = 5 Domingo = 6 Também podemos definir os valores das constantes: enum Dias da semana { Segunda = 4 Terca, Quarta, Quinta = 10 Sexta, Sabado, Domingo }; Os valores das constantes, nesse caso, seriam: Segunda = 4 Terca = 5 Quarta = 6 Quinta = 10 Sexta = 11 Sabado = 12 Domingo = 13 Agora que vimos como declará-las e sobre seu funcionamente, vamos colocar em prática: #include <iostream.h> using namespace std; enum diasDaSemana { Segunda, Terca, Quarta, Quinta, Sexta, Sabado, Domingo }; int main() { int numDigitado; diasDaSemana dia; // Declara uma variável do tipo dias da semana. char nomeDia; cout << "Digite um número de 0 à 6: " << endl; cin >> numDigitado; dia = diasDaSemana(numDigitado); cout << "Você escolheu: "; switch (dia) // Fizemos o case para ele mostrar o nome do dia e não o numero. { case Segunda: cout << "Segunda" << endl; break; case Terca: cout << "Terca" << endl; break; case Quarta: cout << "Quarta" << endl; break; case Quinta: cout << "Quinta" << endl; break; case Sexta: cout << "Sexta" << endl; break; case Sabado: cout << "Sabado" << endl; break; case Domingo: cout << "Domingo" << endl; break; default: cout << "Erro .. " << endl; break; } system("pause>null"); } No exemplo acima, pedimso para o usuário digitar um número e criamos uma variável do tipo enum diasDaSemana. Com o numero digitado em mãos, mostramos o dia da semana. Bom, enums é isso.. Não há muito o que falar. Então, vamos para struct! Struct: Structs são um pouquinho mais complicado pois irá englobar várias coisas que aprendemos até aqui. Principalmete o conceito de funções. Se você não leu a Aula 5 ainda, recomendo que leiam. O struct é um grupo de dados que diferentemente do array podem conter valores diferentes. Em um array, poderiamos receber apenas valores do tipo que declaramos o array, no struct não, podemos criar várias variáveis que receberão diversos valores e de uma maneira muito mais prática de se trabalhar. Declarando um struct (lembrando que a declaração é feita sempre antes da função main()): struct cliente //Declaração do struct { string nome; int codigo; float saldo; }; //Fim da declaração. Não há muito o que explicar, mas cliente engloba variáveis (nome, codigo e saldo) que são próprias de X cliente e que podem ser modificadas durante o uso do programa. Vamos por struct em prática: #include <iostream.h> using namespace std; struct cliente //Declaração do struct { string nome; int codigo; float saldo; }; //Fim da declaração. int main() { //Declara uma variável do tipo struct cliente: struct cliente Guilherme; //Atribui valores à essa variavel: Guilherme.nome = "Guilherme Santa Chiara"; Guilherme.codigo = 1; Guilherme.saldo = 178.9; // Termina atribuições: // Exibindo os dados do cliente: cout << "Nome: " << Guilherme.nome << endl << "Codigo: " << Guilherme.codigo << endl << "Saldo: " << Guilherme.saldo << endl; system("pause>null"); } Trabalhando Struct com Funções: #include <iostream.h> using namespace std; struct cliente //Declaração do struct { string nome; int codigo; float saldo; }; //Fim da declaração. // "Esboço" da função void exibirCliente(cliente _cliente); void alteraSaldo(cliente _cliente, float _newSaldo); int main() { //Declara uma variável do tipo struct cliente: struct cliente Guilherme; //Atribui valores à essa variavel: Guilherme.nome = "Guilherme Santa Chiara"; Guilherme.codigo = 1; Guilherme.saldo = 178.9; // Termina atribuições: // Exibindo os dados do cliente: cout << "Antes de alterar saldo: " << endl; exibirCliente(Guilherme); cout << "Depois de alterar saldo (?) : " << endl; alteraSaldo(Guilherme, 4000.); exibirCliente(Guilherme); system("pause>null"); } void exibirCliente(cliente _cliente) { cout << "Nome: " << _cliente.nome << endl << "Codigo: " << _cliente.codigo << endl << "Saldo: " << _cliente.saldo << endl; } void alteraSaldo(cliente cliente, float _newSaldo) { cliente.saldo = _newSaldo; return; } Compile e execute o programa acima e verá que conterá erros! Quando passamos um valor para uma função, essa cria uma cópia do argumento que só pode ser usada localmente e não altera a estrutura do struct. Para a próxima aula, fica como exercício pesquisarem como corrigir isso. Abraços, até a próxima aula! Compartilhar este post Link para o post Compartilhar em outros sites
Socket 0 #2 Postado 5 Abril, 2010 Mano, as aulas estão ficando muito boas. Continue assim creio que está ajudando muitas pessoas. @off Ai porque não gosto de c/c++ naquele primeiro exemplo seu é um peteco de linha pra fazer isso: local diasDaSemana = { [0] = 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo', } local n = 2 print('Você escolheu: '.. diasDaSemana[n]) Claro que em Lua tem que especificar antes e talz mas tá XD De qualquer geito sem C/C++ o mundo não existia. Como alguns dizem: O C foi feito em C. Compartilhar este post Link para o post Compartilhar em outros sites
Dark Skyllen 7 #3 Postado 5 Abril, 2010 @Socket Da pra fazer algo parecido sim, fiz desse jeito só pra explicar mais simplificadamente. Dei o conceito, a utilização vai depender do aluno Compartilhar este post Link para o post Compartilhar em outros sites
dragonlorde 0 #4 Postado 22 Abril, 2010 Disculpa pelo double post mas precisava muito postar isso! :coolface: [spoiler=Resolvido!] #include <iostream> using namespace std; struct cliente //Declaração do struct { string nome; int codigo; float saldo; }; //Fim da declaração. // "Esboço" da função void exibirCliente(cliente _cliente); void alteraSaldo(cliente*); int main() { //Declara uma variável do tipo struct cliente: struct cliente Guilherme; //Atribui valores à essa variavel: Guilherme.nome = "Guilherme Santa Chiara"; Guilherme.codigo = 1; Guilherme.saldo = 178.9; // Termina atribuições: // Exibindo os dados do cliente: cout << "Antes de alterar saldo: " << endl; exibirCliente(Guilherme); cout << "Depois de alterar saldo (?) : " << endl; alteraSaldo(&Guilherme); exibirCliente(Guilherme); system("pause>null"); } void exibirCliente(cliente _cliente) { cout << "Nome: " << _cliente.nome << endl << "Codigo: " << _cliente.codigo << endl << "Saldo: " << _cliente.saldo << endl; } void alteraSaldo(cliente* Cliente) { Cliente->saldo = 400.0; return; } Resolvi com ponteiros o problema do script acima Obs: Se quiser pode deletar o post de cima XD Compartilhar este post Link para o post Compartilhar em outros sites