Autor |
Mensagem |
GOREFESTA Veterano |
# set/10
· votar
Essa Coca é Fanta
Será que vale a pena investir tempo estudando C++, mesmo não tendo muito campo de trabalho para isso ?
Conhecimento sempre é valido, mas eu estudaria java msm...
|
Bog Veterano
|
# set/10 · Editado por: Bog
· votar
Essa Coca é Fanta O meu curso é Tecnologo em Desenvolvimento para Web, logo não tem linguagem C++.
Mas o que eu falei não é sobre C++. É sobre computação em geral. Qualquer programa que rode sobre uma plataforma de computação atual (bom, e normal) precisa alocar memória e usar ponteiros, mesmo que a linguagem esconda o trabalho sujo.
parece que a lógica desse negócio é cabuloso demais
É só a mecânica interna, como funciona um software. Depois que você pega o jeito, fica bem natural.
Será que vale a pena investir tempo estudando C++, mesmo não tendo muito campo de trabalho para isso ?
Os conceitos por trás de C++ aparecem em outras linguagens também. Se você quiser aprender bem esses conceitos...
|
Essa Coca é Fanta Veterano |
# set/10
· votar
GOREFESTA Conhecimento sempre é valido, mas eu estudaria java msm...
É uma boa. Mas Java vou deixar pra aprender na hora que o curso pedir mesmo.
Bog Os conceitos por trás de C++ aparecem em outras linguagens também. Se você quiser aprender bem esses conceitos...
Ué, e porue não aprender.. ? Vale a pena, claro. Mas tenho que começar por baixo e ir avançando. Você podes me passar código fonte de algum programa que tu fez em C++ ? Tipo, eu gosto de ver, e tal.
|
The Blue Special Guitar Veterano |
# set/10
· votar
Essa Coca é Fanta
Procura a implementação de estruturas de dados em C++, usando ponteiros e tudo.
Por exemplo, listas, deques, filas, árvores, métodos de ordenação. É uma ótima forma de pegar intimidade com a linguagem e também com os ponteiros, alocação dinâmica de memória, etc.
|
Essa Coca é Fanta Veterano |
# set/10
· votar
The Blue Special Guitar
É uma excelente dica. Mas eu acho que isso pra iniciar, é meio complicado, não ?
|
Bog Veterano
|
# set/10
· votar
Essa Coca é Fanta Você podes me passar código fonte de algum programa que tu fez em C++ ?
Ixi, aqui só tem trabalho. Tem coisa que eu não posso mandar. Mas posso te passar uma classezinha. Para onde eu mando?
Mas eu acho que isso pra iniciar, é meio complicado, não ?
Er... Você não conhece essas estruturas de dados? Digo, lista encadeada é lista encadeada, em C, C++, Java, ou o que for. A parte legal de aprender com essas coisas, imagino eu, é que ou você já conhece o conceito e só vê como ele é implementado com a tal linguagem, ou você aprende junto com a linguagem um conceito básico e bem útil que serve para um monte de outras linguagens.
|
Essa Coca é Fanta Veterano |
# set/10
· votar
Bog Ixi, aqui só tem trabalho. Tem coisa que eu não posso mandar. Mas posso te passar uma classezinha. Para onde eu mando?
Tipo, não precisa ser coisa do trabalho que seja "secreto" da empresa, manda algo de sua autoria (uma coisa básica apenas). Se puder.
Manda para gpn_90@hotmail.com.
Er... Você não conhece essas estruturas de dados? Digo, lista encadeada é lista encadeada, em C, C++, Java, ou o que for. A parte legal de aprender com essas coisas, imagino eu, é que ou você já conhece o conceito e só vê como ele é implementado com a tal linguagem, ou você aprende junto com a linguagem um conceito básico e bem útil que serve para um monte de outras linguagens.
Deixa eu ver se eu entendi. Por exemplo, estruturas de dados, usando Loops for, while, do while ?
|
Bog Veterano
|
# set/10
· votar
Essa Coca é Fanta
Pior que eu procurei, mas não achei nada "básico" aqui. Ô.o Mas isso faz todo o sentido. Eu só programo no trabalho. Logo, tudo o que eu tenho escrito é do trabalho. =P E mais, tudo aqui usa duas bibliotecas: OpenCV (funções básicas para processamento de imagens) e TBB (para processamento paralelo). Nada que rode independente...
Por exemplo, estruturas de dados, usando Loops for, while, do while ?
Er... mas qualquer programa usa esses comandos básicos. =P
Estruturas de dados são listas encadeadas, filas, pilhas, árvores binárias, árvores n-árias, grafos, etc. Normalmente, você associa a essas estruturas algoritmos simples, de ordenação, busca binária, aplicação de uma função em determinada ordem, etc. É o tipo de coisa que você deveria aprender em qualquer curso que envolva programação (em qualquer linguagem).
|
-Dan Veterano
|
# set/10
· votar
Essa Coca é Fanta
Ai, no google tem o basico dos basicos, ve se te atende.
#include <iostream> using namespace std; int main () { cout << "Olá mundo!"; return 0; }
|
Essa Coca é Fanta Veterano |
# set/10
· votar
-Dan
Claro que sim. O que eu to dizendo é que eu quero um programa "completo" com seu codigo fonte pra eu ver, analisar, entender, etc.
Eu diz uma calculadora, veja o código:
//Calculadora com 4 operadores #include <iostream> using namespace std; int main()
{ cout << "Calcudora com 4 operadores matematicos!" << endl << endl; cout << "Digite o primeiro numero: "; int num1; cin >> num1; cout << "Digite o segundo numero: "; int num2; cin >> num2; system ("cls"); //Limpa a tela cout << "\n\n"; //Inicia o grafico (linha de cima) cout << "\n\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC D\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\ xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC D\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB"; cout << "\n\xBA"; cout << endl; cout << "\nSeus valores foram armazenados e impressos com o resultado dos 4\n"; cout << "operadores matematicos!"; cout << endl << endl << endl; cout << num1 << " + " << num2 << " = " << num1 + num2 << endl << endl; cout << num1 << " - " << num2 << " = " << num1 - num2 << endl << endl; cout << num1 << " * " << num2 << " = " << num1 * num2 << endl << endl; cout << num1 << " / " << num2 << " = " << num1 / num2 << endl << endl; //Inicia o fechamento do Grafico (linha de baixo) cout << "\n\xBA"; cout << "\n\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC D\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\ xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xC D\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC"; cout << endl; system ("PAUSE"); return 0; }
|
Essa Coca é Fanta Veterano |
# set/10 · Editado por: Essa Coca é Fanta
· votar
Bog Pior que eu procurei, mas não achei nada "básico" aqui. Ô.o Mas isso faz todo o sentido. Eu só programo no trabalho. Logo, tudo o que eu tenho escrito é do trabalho. =P E mais, tudo aqui usa duas bibliotecas: OpenCV (funções básicas para processamento de imagens) e TBB (para processamento paralelo). Nada que rode independente...
Ah sem problemas. O que vale é a intenção..
Estruturas de dados são listas encadeadas, filas, pilhas, árvores binárias, árvores n-árias, grafos, etc. Normalmente, você associa a essas estruturas algoritmos simples, de ordenação, busca binária, aplicação de uma função em determinada ordem, etc. É o tipo de coisa que você deveria aprender em qualquer curso que envolva programação (em qualquer linguagem).
É, eu sabia que estava errado, mas.. Eu vou aprender isso no PHP. O foda é que agora eu não posso ficar estudando só C++, porque o foco agora é PHP, logo vou ter que "deixar de lado" o C++ pra focar em uma coisa só que é mais importante no momento. Mas sempre quando tenho um tempo (sabado e domingo por exemplo), eu sou dar ma olhada.
Se você ver meu código aí em cima, pode falar que está uma gambiarra, e que a lógica está ruim, mas coisas de iniciantes tu sabes como que é né.. kkkkkkkkkkkkkk
=)
|
Diego Vermelho Veterano |
# set/10
· votar
Essa Coca é Fanta
q compilador vc usa? pq geralmente os compiladores mais comuns vem com uma pasta de 'exemplos' dentro da pra pega uma noçao de varias estruturas por ai
|
Essa Coca é Fanta Veterano |
# set/10
· votar
Diego Vermelho
Uso o DevC++
|
Diego Vermelho Veterano |
# set/10
· votar
tenho o dev aqui tambem tem bastante exemplo nele
|
Essa Coca é Fanta Veterano |
# set/10
· votar
Diego Vermelho
O DevC++ é bem bom. Cheguei a usar o Visual C++, mas eu não curti.
|
Bog Veterano
|
# set/10
· votar
Essa Coca é Fanta Se você ver meu código aí em cima, pode falar que está uma gambiarra, e que a lógica está ruim, mas coisas de iniciantes tu sabes como que é né..
Hahah, mas nem tem muita lógica neste programa. =P
C++ começa a ficar interessante (e útil) quando você usa orientação a objeto. Sem isso, é apenas um C mais fresco, hahah.
|
Essa Coca é Fanta Veterano |
# set/10
· votar
Bog Hahah, mas nem tem muita lógica neste programa. =P
Digamos que sim, pra você é "mamão com açucar"..
C++ começa a ficar interessante (e útil) quando você usa orientação a objeto. Sem isso, é apenas um C mais fresco, hahah.
To longe nesse nível ainda. Meu negócio é aprender programação estruturada. A quanto tempo você mexe com C++ ?
Você deve tá de "saco cheio" de tantas perguntas, mas eu sou assim mesmo, curioso pra caralho (considero isso uma qualidade), mas enfim.
|
Bog Veterano
|
# set/10
· votar
Essa Coca é Fanta Digamos que sim, pra você é "mamão com açucar"..
Não foi bem isso que eu quis dizer. É só que o programa não tem if, for, while... Então não tem muita lógica MESMO. =P
A quanto tempo você mexe com C++ ?
Uns 10 anos. Mas já conhecia C razoavelmente bem, o que facilita muita coisa - na verdade, comecei a aprender com um micro tutorialzinho do tipo "C++ para quem programa em C".
Você deve tá de "saco cheio" de tantas perguntas, mas eu sou assim mesmo, curioso pra caralho (considero isso uma qualidade), mas enfim.
Nem se preocupe. Contanto que não me dê trabalho, tá beleza, hahaha.
|
Essa Coca é Fanta Veterano |
# set/10
· votar
Bog Não foi bem isso que eu quis dizer. É só que o programa não tem if, for, while... Então não tem muita lógica MESMO. =P
Exato. Se bem que o meu objetivo não precisava. O que EU acho MAIS DIFICIL é usar bem Loop..
Uns 10 anos. Mas já conhecia C razoavelmente bem, o que facilita muita coisa - na verdade, comecei a aprender com um micro tutorialzinho do tipo "C++ para quem programa em C".
Já é "macaco velho" então. haeUhaE
Nem se preocupe. Contanto que não me dê trabalho, tá beleza, hahaha.
Acho que te deu trabalho foi falar resumidamente sobre Locação de Memória. heau
|
Mr. Joe Veterano |
# set/10 · Editado por: Mr. Joe
· votar
Essa Coca é Fanta Exato. Se bem que o meu objetivo não precisava. O que EU acho MAIS DIFICIL é usar bem Loop..
Vou dar-te um exemplo em um simples algoritmo:
enquanto(verdadeiro) { fazer_a_funcao("retornar", int); /* Faz mais uma porrada de coisas */ dormir(1000); // 1 seg }
Então, o que é um loop? Um loop é uma seqüencia que o programa seguirá enquanto a condição for "true" (ou "false"). (( EDIT: Não necessariamente assim. Um loop poderá acontecer, por exemplo, criando uma função e colocando para retornar a mesma no final. Há vários modos de realizá-lo, mas basicamente, um loop é uma mesma seqüencia que é chamada seguidamente. ))
O "for" realiza uma mesma ação (pode ser um bilhão de vezes) até a variável ser alterada para o valor esperado, normalmente numa contagem. Assim, caso utilizar "for(;;)", você não dará o valor da variável (ou criar a mesma), não especificará o que fazer a cada vez que o método faz a ação ou o resultado final da variável. assim criando um loop infinito. Por exemplo:
for(int contagem = 1; contagem <= 10; contagem += 1) { printf("%d - ", contagem); }
Isto imprimirá na tela uma contagem de 1 até 10. Se tirássemos os seguintes itens: "contagem <= 10", "contagem += 1" e "int contagem =1", teríamos um loop infinito pelos motivos já explicados acima.
Já o "do while", fará primeiramente a seqüencia ("enquanto for true ou false, fará a seqüencia") e depois realizará uma "checagem", para ver se a condição continua verdadeira.
Então, como usar um loop de um modo correto? Você pode utilizar, por exemplo, checando se uma conexão está aberta.
fazer { // SEU PROGRAMA AQUI } enquanto { conexao = verdadeira; }
Vê no Viva o Linux que lá tem uns programinhas simples em C/C++. Aprende-se muita coisa boa lá. Mas é melhor começar com C, aprendendo a sintaxe do começo até o mais difícil, assim tu dominarás melhor qualquer linguagem.
Bah, eu gosto de explicar. hehe, não é a toa que quero ser professor. Se algo estiver errado, alertem-me, por favor. :)
|
-Dan Veterano
|
# set/10
· votar
Essa Coca é Fanta
Etnendi, pensei que vc tava no beabá total.
Eu achava que gostava de programação, antes de começar.
Depois vi que não era minha praia.
|
Essa Coca é Fanta Veterano |
# set/10 · Editado por: Essa Coca é Fanta
· votar
Mr. Joe
Pow, sua explicação bem massa e fácil aprendizado, é sério. Deu pra entender..
Vou entrar no Viva Linux e dar uma conferida mesmo. Tipo, eu cheguei a aprender um pouco de C, mas eu não gostei.
Eu só porque o Loop for, tem algum problema ? É importante usar o While ?
-Dan
Porque viu que não era sua praia ? Não curte ficar digitando codigos e mais codigos ? Pow, sem zueira, tu pode quebrar a cabeça com a parada, mais depois que ve o resultado da maior "tesão"..
Te digo que tem hora que dá vontade de largar tudo e dizer um "FODA-SE!" bem alto, de tanto que quebra a cabeça e não consegue fazer, nesse caso é melhor sair o PC e só tentar resolver a solução no dia seguinte (eu normalmente faço isso, se não eu quebro essa porra de tanta raiva..)
aeAHEuaEHauehaeu
|
Bog Veterano
|
# set/10
· votar
Essa Coca é Fanta Locação de Memória
Hahah, é ALOCAÇÃO, não locação! =P
Mr. Joe
Vou ser um pouco objetivo aqui:
Normalmente por erros de sintaxe
Ahn!?
Normalmente precisa-se de um "sleep", ou seja, fazer o processo dormir por alguns segundos para não travar a máquina. Pois pela lógica, um loop sem um "sleep" não teria descanso e ficaria, portanto, seguindo a mesma seqüencia "incansavelmente" na maior velocidade possível.
AAAHHHNNN?!?!?
Desculpa cara, mas isso aqui não tem qualquer fundamento. Primeiro porque mesmo um loop infinito que fique rodando para sempre sem fazer nada não trava por completo um computador com um SO multi-tarefa (como os quase onipresentes Windows e Linux) - o próprio SO escalona os processos. Mas fora isso, você muitas vezes (a maior parte delas) QUER que o loop termine logo, o mais rápido possível, exceto em alguns casos raros de sincronização de comunicação e quando você quer propositalmente fazer o programa rodar lentamente (por ex, para testar algo enquanto olha os resultados). Não sei de onde você tirou isso que você falou.
O "for" realiza uma mesma ação (pode ser um bilhão de vezes) até a variável ser alterada para o valor esperado
Depende da linguagem, mas normalmente, o for também realiza uma mesma ação enquanto uma determinada condição for verdadeira. Pode ser qualquer condição. Em C++, as duas construções abaixo são QUASE equivalentes (a diferença está no escopo de alguma variável que pode ou não ser declarada no "bla"):
for (bla; blabla; blablabla) { coisas; }
E
bla; while (blabla) { coisas; blablabla; }
caso utilizar "for(;;)", você não dará o valor da variável (ou criar a mesma), não especificará o que fazer a cada vez que o método faz a ação ou o resultado final da variável. assim criando um loop.
Qualquer for é um loop. O for(;;) cria um loop infinito (mais ou menos, porque ele ainda pode ser interrompido por outros meios, como um break).
Isto imprimirá na tela uma contagem de 1 até 10
1 a 9! =P
(10 < 10 é falso, o teu loop acaba antes de chegar no 10)
Se tirássemos os seguintes itens: "contagem < 10", "contagem += 1" e "int contagem =1", teríamos um loop pelos motivos já explicados acima.
Novamente, qualquer for é um loop. Do jeito que está é um loop. Você mesmo disse no começo: Um loop é uma seqüencia que o programa seguirá enquanto a condição for "true" (ou "false"). No caso, o teu for do jeito que está é uma sequência que o programa seguirá enquanto a contagem for menor que 10.
Bah, eu gosto de explicar. hehe, não é a toa que quero ser professor.
Hhehe, bem vindo ao time. Se prepare para adiar muitos planos e ver seus ex-colegas ficando ricos enquanto você é bolsista de doutorado, hohoho.
Se algo estiver errado, alertem-me, por favor. :)
Alertas feitos (esperando não ter falado alguma bobeira tb).
|
Mr. Joe Veterano |
# set/10 · Editado por: Mr. Joe
· votar
Bog AAAHHHNNN?!?!?
Desculpa cara, mas isso aqui não tem qualquer fundamento. Primeiro porque mesmo um loop infinito que fique rodando para sempre sem fazer nada não trava por completo um computador com um SO multi-tarefa (como os quase onipresentes Windows e Linux) - o próprio SO escalona os processos. Mas fora isso, você muitas vezes (a maior parte delas) QUER que o loop termine logo, o mais rápido possível, exceto em alguns casos raros de sincronização de comunicação e quando você quer propositalmente fazer o programa rodar lentamente (por ex, para testar algo enquanto olha os resultados). Não sei de onde você tirou isso que você falou.
Estranho. Sempre que coloco um loop infinito para rodar em programa de Terminal aqui no Ubuntu 10.04 sem que haja uma pausa, o PC trava.
Acredito eu que isto de escalonar processos para o PC não travar tenha de ser manual, do tipo: " int processo = fork();".
Mas às vezes trava por burrice mesmo, do tipo, colocar para alocar memória num loop infinito é de matar, né. hahahahaha!
Hehe, eu me contradisse um monte nesse texto anterior. Estou consertando-o.
EDIT: 1 a 9! =P
(10 < 10 é falso, o teu loop acaba antes de chegar no 10)
Esqueci disso. hehehe Então o correto é "10 <= 10", né?
EDIT: Novamente, qualquer for é um loop. Do jeito que está é um loop. Você mesmo disse no começo: Um loop é uma seqüencia que o programa seguirá enquanto a condição for "true" (ou "false"). No caso, o teu for do jeito que está é uma sequência que o programa seguirá enquanto a contagem for menor que 10.
Eu quis dizer "loop infinito", hehe. Vou lá corrigir.
EDIT: Este texto anterior me fez perceber que eu esqueci "praticamente tudo do básico" de programação em geral. Tenho que voltar a brincar de criar programinhas o mais rápido possível!
|
Bog Veterano
|
# set/10 · Editado por: Bog
· votar
Mr. Joe Sempre que coloco um loop infinito para rodar em programa de Terminal aqui no Ubuntu 10.04 sem que haja uma pausa, o PC trava.
Isso só vai acontecer se o processo estiver configurado para alta prioridade E se você fizer operações de processador sem qualquer I/O no meio - porque um processo normalmente é interrompido por outro de prioridade mais alta ou durante a espera de qualquer operação de I/O (e em processadores multicore, nem precisa ser interrompido).
Na prática, eu uso muito, muito raramente coisas como sleep.
EDIT: Mas note que eu falei que o computador não trava COMPLETAMENTE. Se você fizer um loop infinito onde só acontecem multiplicações, o computador fica (bem) mais lento. Se em vez de um loop infinito for só um loop com muitas repetições, o computador pode dar uma "engasgada". Mas eu não consigo imaginar por que alguém faria um loop infinito sem qualquer operação de I/O - se você não lê nada e nem escreve nada, o que tanto você faz nesse loop INFINITO!? O.o
Acredito eu que isto de escalonar processos para o PC não travar tenha de ser manual
Isso não é bem escalonar, é criar outra thread. =P
|
Essa Coca é Fanta Veterano |
# set/10
· votar
Caraio..kkkkkkkkkkkkkkkkkkkkkkkkkkkkk Bog escreveu um "livro" por causa de uma explicação de Loop errado. kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Xulispa, esse manja mesmo viu. Mas é legal, eu leio e aprendo.
|
Bog Veterano
|
# set/10
· votar
Essa Coca é Fanta
Ah, cara, menos, bem menos, vai...
|
Mr. Joe Veterano |
# set/10 · Editado por: Mr. Joe
· votar
aliás, Bog, por favor, ajude-me! hehe
O GCC tá "de mal comigo" e não quer compilar:
#include <iostream> #include <cstring> #include <stdio.h> using namespace std;
void desenha_linha() { for(int i = 0; i < 30; i++) { printf("-"); } }
int main(void) { desenha_linha(); cout << " Escreva seu primeiro nome: " << endl; string primeiro; cin >> primeiro; cout << " Agora escreva seu sobrenome: "; string sobre; cin >> sobre;
string primeiro_nome = strcat(primeiro, " "); string final = strcat(primeiro_nome, sobre);
cout << "\n Obrigado por visitar-me, senhor(a) " << final << "." << endl;
if(strcmp(primeiro, sobre) == 0) { cout << " Interessante você ter o primeiro nome igualzinho ao seu sobrenome!"; desenha_linha(); } else { cout << " Você sabia que existem pessoas que o primeiro nome é igual ao sobrenome?"; desenha_linha(); }
}
Ele acusa: teste.cpp: In function 'int main()': teste.cpp:24: error: cannot convert 'std::string' to 'char*' for argument '1' to 'char* strcat(char*, const char*)' teste.cpp:25: error: cannot convert 'std::string' to 'char*' for argument '1' to 'char* strcat(char*, const char*)' teste.cpp:29: error: cannot convert 'std::string' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'
Agradeço desde já.
|
Bog Veterano
|
# set/10 · Editado por: Bog
· votar
Mr. Joe
Ué cara, strcat é uma função de C. string é uma classe de C++. É só olhar o protótipo da strcat que fica claro o erro:
char * strcat ( char * destination, const char * source );
Agora olha os parâmetros e return values que você está usando. São da classe string. Fora que o return value da strcat é a mesma coisa que você passou como destination.
Você pode concatenar essas coisas simplesmente SOMANDO elas. Tipo:
string foo ("foo"); string bar ("bar"); string foobar = foo + bar; string barfoo = bar + foo; foo = foo + bar;
Dê uma olhada na referência da classe string aí, e quando trabalhar com ela, sempre dê preferência para as funções próprias da classe, e não para as oldschool de C.*
*Exceto em casos onde se preocupar com os mínimos detalhes é importante e você sabe exatamente o que essas funções estão fazendo por dentro.
|
Mr. Joe Veterano |
# set/10 · Editado por: Mr. Joe
· votar
Bog Bah, obrigadão!!
Eu nem sabia que era possível concatenar igual à linguagem Java, somando.
Para comparar std:string com strcmp era só colocar algo como: if(strcmp(primeiro.c_str(), sobre.c_str()) == 0).
|