
bonoddr
Membros-
Total de itens
181 -
Registro em
-
Última visita
Tudo que bonoddr postou
-
Muito bonito você tentar se justificar... Em primeiro lugar, você não é o único do mundo que tá sem tempo. Eu estou em 2 empregos, acordo 5:30 e chego 22 hs em casa. Mas nunca precisei justificar pra ninguém isso. Em segundo lugar, você tá ENTUPINDO o fórum com um monte de tópicos. Se for uma dúvida que é rapidamente esclarecida, mande-nos PMs, email, mensagem pelo ICQ, o que fôr. Colabore com a organização do fórum, e garanto que tem muita gente apoiando o que estou falando. Frequente sim, mas deixe a casa arrumada, e será sempre bem-vindo. Não precisa chamar atenção com um tópico inútil desses. E outra: se você tem tempo de postar tantas dúvidas, use esse tempo estudando então. Se a dúvida persistir, aí sim procure-nos. Qualquer problema estamos aí, não crie caso com ninguém porque é só VOCÊ quem sai perdendo. Já reparou quantos tópicos você andou abrindo? Po, dá um tempo cara. Repara só nesse post: post correto O cara já fuçou em tudo quanto é lugar, aí recorreu ao fórum. É isso o que você tem que fazer. Sem mais, bonoddr
-
E aí pessoal, gostaria de saber a opinião de vocês se um debugger realmente faz falta na construção de um programa. O Crimson Editor não tem, então estou pensando em usar o dev mesmo. Postem aí! Eu já usei muito em VB por exemplo, lá pra mim faz diferença sim hehehe
-
Cara tu tá postando muita dúvida, você já deu uma estudada antes? Já pesquisou pela internet sobre as suas dúvidas? Não estou questionando, mas procura antes pra se aprofundar cara. Dá uma olhada no help do turbo C que já explica bastante coisa.
-
Entendendo ponteiros Resolvi tentar explicar o conceito e as aplicações deste assunto que tanto apavora muitos programadores. Uma variável de ponteiro é uma variável contendo um endereço, geralmente o endereço de outra variável. Sua declaração é feita como a de uma variável normal, exceto pela adição do caractere unário "*". Em uma expressão, o caractere "&" significa "o endereço de", e o unário "*" significa "apontado por". Abaixo, um exemplo simples para entendimento: void fn(){ int i; int *pI; pI = &i; *pI=10; } Na 1ª linha, apenas estamos declarando uma variável i do tipo número inteiro. Na 2ª linha, estamos declarando uma variável-ponteiro que aponta um valor inteiro. Na 3ª linha, podemos observar que o ponteiro pI está apontando o endereço da variável i, até então de valor desconhecido (variável i). Finalmente, a 4ª linha nos informa que o ponteiro aponta para o valor 10. Então, concluímos que *pI aponta para um endereço e pI aponta para um valor. Pode-se entender melhor por "armazene 10 na localização apontada por pI". Então, conclui-se ainda que o valor 10 está localizado no endereço de i. [ ]0X300 i [ ]0X302 pI [0X302]0X304 //Na 1ª atribuição, pI armazena o endereço de i [ ]0X306 [ ]0X300 i [ 10 ]0X302 //Na 2ª atribuição, diz-se que pI aponta para o valor 10 pI [0X302]0X304 [ ]0X306 Melhor ainda: 0X304 -> 0X302 e 0X302 contém o valor 10. Incrementando Ponteiros void fn(char *pI){ while (*pI != NULL){ // ou while (*pI != '0') cout<<*pI; pI++; } } int main(void){ fn("Testando o incremento de ponteiros"); return 0; } Neste exemplo, estou fazendo o uso de uma função dentro do main. O programa usa um ponteiro dentro da função fn() para exibir, um caractere de cada vez, o conteúdo da string de caracteres. A função fn() termina quando o ponteiro aponta para um endereço de memória que nada contém, ou seja, no caso de caracteres, o delimitador '\0'. Simplificando os comandos Como o caractere NULL ('\0') é o valor ASC II de 0 em C++ e retorna um valor para representar falso, seus programas podem escrever o laço: while(*pI != '0') como simplesmente: while(*pI) Também se aplica a: cout<<*pI; pI++; por simplesmente: cout<<*pI++; Então, finalmente, pode-se substituir: while (*pI != '0') cout<<*pI; pI++; por: while (*pI){ cout<<*pI++; } Mais simples, não? Agora lanço um desafio: quero ver quem descobre a funcionalidade deste programa abaixo. char *func(char *string){ char *ender_inicial = string; // endereço de string [0] while (*string){ if ((*string >= 'a') && (*string <= 'z')) *string = *string - 'a' + 'A'; string++; } return (ender_inicial); } int main(void){ cout<<func("Ola pessoal")<<endl; return 0; } Bom, acho que já posso encerrar por aqui. Espero que tenham entendido e, qualquer coisa, PM!
-
Pode-se dizer que seja, mas uma lista mais ineficiente, pois se estiver ordenada e você quiser colocar um elemento no array sem alterar a ordem crescente, por exemplo, você vai ter muito mais dificuldade na arrumação, pois vai ter que trocar de posição todos os elementos da array (em termos de desempenho, é a pior hipótese). Mas se você usar uma lista encadeada de objetos por exemplo, onde utiliza-se ponteiros, você tem muito mais flexibilidade.
-
O editor é bom você ter para ter uma visualização melhor do seu programa, o compilador se torna o responsável pela geração do executável para você e na verificação de erros, por exemplo.
-
Bom, lembrei de mais uma dúvida e resolvi criar outro post, pois o anterior foi mais por agradecimento. Eu fiz um macro que faz comparações entre campos de uma tabela excel. adotei a variável y para especificar o número da linha, dependendo da parte do código (por exemplo: Cells(y,2), que é a linha y da coluna . O y eu coloco dentro de um while e vou incrementando conforme o código. Porém, eu quero saber qual método devo usar quando esgotarem o número de linhas, já usei EOF mas para quando trabalhava com Recordset em bancos de dados. Como especifico que terminou o número de linhas sem ter que fazer por exemplo: If (y>5000) Then End End If nesse caso tenho 5000 linhas. E se forem inseridos mais registros? Não quero ter que editar o código sempre somente para isso. Queria algo do tipo: if (y=EOF) Valeu!
-
Valeu pela recepção William! Eu programei em VB há muito tempo atrás e agora estou tendo que mexer de novo (mais precisamente em VBA access e excel) e tenho estudado ASP também com o editor Dreamweaver. C++ eu estou estudando por fora quando dá tempo. Sempre gostei de mexer com VB, mas tem uma infinidade de bibliotecas e fico às vezes perdido hehehehee C++ despertou a minha curiosidade tem uns 6 meses, desde então tenho tido mais disposição para estudar também. É um prazer poder contar com o pessoal do fórum de VB, se quiserem participem também do de C/C++! Um abraço a todos
-
Muito obrigado cara, ajudou bastante! Ah aproveitando, eu não tenho o msdn aqui no VB, sabe onde eu posso consultar todos os métodos? por exemplo, descobri que End sai de qualquer loop e interrompe a execução do programa... E o Stop, para que serviria comparado com End?
-
já tentou usar system("cls")? É melhor ainda, não precisa incluir nenhuma biblioteca.
-
Salve na mesma pasta onde se encontra o executável do compilador, de preferência. Depois é só rodar o arquivo .exe que o compilador gerou para você.
-
por exemplo, supondo que a string var seja "ola" e eu vou inserir uma linha assim: se var é um valor inteiro, então faça isso ou aquilo... Não quero comparar com um valor específico, mas com um TIPO. Qualquer ajuda eu agradeço.
-
Conceitos iniciais Conceito de variável: é a composição de 3 conceitos: identificador, alocação e tipo. - O indentificador especifica o próprio nome que lhe foi atribuída. - A alocação determina onde a variável será armazenada ou, melhor dizendo, alocada. - Finalmente o tipo, como o nome já diz, determina o tipo de variável que será utilizada (inteiro, decimal, caractere etc.) Quando um programa é compilado, são 4 as "áreas" responsáveis para a execução completa do mesmo (sem a necessidade da utilização de todos, dependendo do caso): - Código: aqui é armazenado todo o código para a análise do programa - Dados: aqui todas as variáveis são armazenadas (desde que não foram alocadas dinamicamente) - Heap: aqui sim são armazenadas todas as variáveis que são alocadas dinamicamente (new em C++ e malloc em C) - Pilha: Implementa o controle da execução do programa. Mas... Como saber qual é o endereço para a próxima instrução em um código? A resposta é simples: existe um registrador que se encarrega de tal tarefa, conhecido como PC (Program Counter). Já pararam para pensar como o compilador sabe que a linha de baixo é a próxima a ser executada? Agora... Se vocês chamam algum procedimento no meio de duas instruções por exemplo? Como o registrador vai interpretar o desvio do endereço para a próxima instrução? Na verdade, quando isso ocorre por exemplo, a pilha se encarrega do controle através do registrador. Supondo: MAIN||||||||||||||||||||||P1 10 instrução 1||||||||||25 if i=1 then { 11 instrução 2||||||||||26 cout<<"valor1"} 12 CALL P1||||||||||||||27 else cout<<"outro valor" 13 instrução 3||||||||||28 return 0 a pilha então ficaria na ordem: 28 -> 13, onde a área de memória correspondente a 28 será avaliada anteriormente a área 13. Mais uma última abordagem: análise da complexidade pessimista. O critério de avaliação da complexidade do pior caso é o mais utilizado e, para essa avaliação, os critérios são dependentes somente da estrutura do algoritmo. Traduzindo , quer dizer que, sempre que se for tentado construir um algoritmo, deve-se levar em conta o pior caso possível de erro. Quer dizer que não podemos deixar escapar nenhuma exceção que torne o algoritmo, nesse caso específico, ineficaz. Bom gente, até a próxima. Postem se acharam o conteúdo útil ou um monte de blablabla inútil. Preciso da opinião de vocês quanto à qualidade do conteúdo. Já aviso de antemão que não vou ficar sempre na teoria, em breve começarei a abordar códigos.
-
É vero Eddie666... Já vi muita gente confundir orientado a objetos com a eventos, isso é normal de acontecer, mas NÃO SE ESQUEÇA!!! Brincadeira cara, é melhor tirar a dúvida do que ficar com vergonha de perguntar...
-
Olá pessoal. Resolvi abrir este tópico pelo motivo que vou passar a postar nele um estudo dirigido em Estruturas de Dados. Semanalmente atualizarei (terça ou quarta-feira), acho interessante abordar este assunto para aprendermos a gerenciar memória com muito mais eficiência através de ponteiros. O curso de C/C++ básico está sendo planejado que seja criado.
-
Pesquise as bibliotecas <ifsteam> e <ofstream>. Input File Stream e Output File Stream.
-
Se quiser saber mais detalhadamente, olha este link: http://www.cpp-home.com/forum/viewtopic.php?t=252 Mas imagina uma coisa: você quer usar o cout e o endl apenas uma vez no seu programa inteiro. Convém você usar: using std depois na parte específica, você coloca: std::cout<<"blablabla"<<std::endl; Se você usa direto no cabeçalho do programa (using std:: cout ou using namespace std), você está dizendo ao compilador para ler o método de cout ao iniciar o programa, e não quando chegar naquela linha específica. Dá pra entender como se o cout fosse um "ponteiro" para o método realmente especificado no cabeçalho do programa. Em termos de desempenho, cabe ao programador decidir qual seria o melhor caminho. Já imaginou se você importa todas as bobliotecas de C/C++ no cabeçalho do programa? Depende muito de onde se quer chegar. Agora se você utiliza muito o cout por exemplo, não é boa prática de programação você sempre escrever: std::cout<<"blablabla"; ... std::cout<"titititatata"<<; .... std::cout<<"seilaoqueseioquela"<<; Espero ter ajudado, até a próxima!
-
Como assim orientado a objetos? Ele suporta programar em C++, então ele suporta ser orientado a objetos também. Você deve ter vindo de VB ou de Deplhi pra fazer este comentário, certo? Bom, com a interface gráfica em C++ eu não posso te ajudar, mas acredito que o kartter possa Isso é, se você está se referindo a trabalhar com botões, listas e tal... O kartter já falou aqui sobre a biblioteca graphics.h, mas não serve para este tipo de funcionalidade. Ou estarei enganado?
-
Muito boa resposta kartter Só queria falar pro rafael, se quiser manter os padrões de programação (principalmente com esta nova geração do C#), para especificar as bibliotecas de C sem especificar o .h. por exemplo: #include <stdio> as de C++ você deve continuar importando contendo o .h em seu cabeçalho, mas só um alerta: se vc, por exemplo, colocar: #include <iostream>, deve especificar posteriormente todos os métodos que irá utilizar com esta biblioteca, como por exemplo: using std::cin, using std::cout etc. Mas se você quiser deixar especificado a biblioteca inteira, então use a linha: using namespace std. O método strcmp(string1, string2) se eu não me engano, é de C. Se você usar using std::string por exemplo, você pode compará-las sem precisar se lembrar do método que faz esta determinada função. Como por exemplo: if (string1==string2){...} Mais uma coisa válida de se comentar é que não se usa mais o tipo void para o retorno de uma função main. O melhor é especificar para retornar um int e no final do main, dar um: return 0. O porquê eu não recordo agora, mas vou dar uma checada e volto a postar aqui. Acho legal "esticar" os assuntos para que se adaptem aos padrões de programação atuais. Ah, se você quiser dar uma pausa de uma maneira mais simples, você pode simplesmente usar o comando: system("pause") sem precisar importar biblioteca alguma. Mas isto infelizmente não é reconhecido por alguns poucos compiladores, mas é uma ótima idéia utilizar este recurso, pois se, por exemplo, você quiser limpar a sua tela depois de algum primeiro loop, você pode usar por exemplo: system("cls"). Espero ter ajudado. Vamos ajudar o fórum a ser mais frequentado, vamos divulgar!
-
Eu acho uma boa idéia para atrair mais frequentadores que seja criado também um portal de C/C++/C#, o que você acha da idéia Eddie6? Eu já conversei com ele sobre construírmos um curso de C/C++, mais facilidades e maior propagando com certeza atraem o interesse de mais gente para o nosso fórum. kartter, o que você tb acha dessas idéias?
-
Olá pessoal, estou procurando material de VBA ligado ao excel na construção de macros. Alguém sabe onde tem um bom acervo?
-
Então como mudaria em cprintf("%s",variavel)? Se eu quiser mudar para 4 cadeias de caracteres eu usaria cprintf("%4",variavel)? E se eu especificar o uso de 4 mas o usuário utilizar apenas duas, tem algum problema? Seria desperdício de memória? (no caso de alocação dinâmica) Caraca quantas perguntas
-
Valeu mesmo cara, não precisa ter pressa não... Eu aguardo hehehehe
-
Concordo, mas C++ oferece todas as possibilidades e mais ainda, sem contar que é um reforço muito maior em Orientação a Objetos. Deve-se evitar o uso de bibliotecas de C em nome da funcionalidade do programa. E pra formatação de string você tem uma biblioteca inteira <string>, sem contar que existem métodos dentro de cin, cout, cerr e clog. Um que eu já vi foi cin.ignore(), que ignora tudo o que foi armazenado no buffer do último cin. Mais um: getline(cin,variavel) é mais apropriado que cin, pois armazena no buffer tudo o que foi digitado, INCLUSIVE os espaços. As funções internas de cout, cerr e clog eu nunca usei, então não sei citar algum exemplo. Qualquer dúvida postem ae! Postem se eu falei alguma besteira também
-
ou então o compilador free da Borland: http://www.uniriotec.br/~joao.filho/Compilador%20Borland E o editor: http://www.uniriotec.br/~joao.filho/Crimson