Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

quitZAUMMM

Programando...

Recommended Posts

Entaum galera to abrindo esse topico pra galera postar dicas de como programar, ow de como você msm programa, ql metodo usa, a logica inicial, se você pensa + estruturado ow Orientado a Objeto..

 

Bom para iniciar o topico entaum vo deixar umas dicas de como eu (quit) programo:

 

Programando com quitZAUMMM

 

1 - Umas das principais coisas (entre aspas) [e a identacao do codigo, nossa gente vcs naum imaginam a facilidade de se ler um codigo identado, imaginem algo assim:

for (i = 0; i < n; i++) {
scanf("%d %d", &codigo, &media);
if (media > melhor_media){
melhor_media = media;
indice_melhor[0] = codigo;
for(int x=1;x<n;x++) indice_melhor[x] = 0;
}
else {
if (media == melhor_media) indice_melhor[j++] = codigo;
}
}
a 'e saco ler isso, agora se você se depara com um codigo + claro assim:

for (i = 0; i < n; i++) {
			scanf("%d %d", &codigo, &media);
			if (media > melhor_media){
				melhor_media = media;
				indice_melhor[0] = codigo;
				for(int x=1;x<n;x++) indice_melhor[x] = 0;
			}
			else {
				if (media == melhor_media) indice_melhor[j++] = codigo;
			}
		}
você perdera menos tempo tentando entendeR ;D

 

2 - Se você naum tiver uma boa IDE use o padrao hungaro nas variaveis, assim você naum c perdera no seu codigo e naum precisara ficar subindo td hora na declaracao das variaveis para saber seu tipo..

+ COMO DISSE C você TEM UMA BOA IDE DESCARTE OQ EU DISSE, veja abaixo suas diferencas:

//sem o padrao hungaro
int var1, var2, var3;
char var4, var5, var6, var7;
float var8, var9;
bool var10;
-

//com padrao hungaro
int iVar1, iVar2, iVar3;
char cVar4, cVar5, cVar6, cVar7; //caso seja vetor, coloque sVar (você entedera como string)
float fVar8, fVar9;
bool bVar10;

3 - A modularizacao do programa [e uma otima coisa para se pensar tbm.

isso ajuda a c você tiver um programa parecido, jah tera funcoes q tera apenas q copiar e colar.

primeiro pense, escreva, analize bem como funcionaram as coisas e depois codifique =]

podemos dar de exemplo o SelectionSort:

void selectionSort(int *vetor, int tamanho)
{
   int k;
   for( int i = 0; i < tamanho; i++ ){
	  k =i;
	  for( int j = tamanho - 1; j > i; j-- ){
		 if(vetor[j] < vetor[k]) 
			k = j;
	  }
	  swap( vetor[i], vetor[k] );
   }
}
vejam q nele tem uma chamada para a funcao swap(troca), agora jah penso se no programa principal cada vz q você fosse ordenar tivesse q escrever o codigo de ordenacao e troca td vz.. nossa seria um codigo bem extenso neh =p.

 

4 - Deixe seu programa elegante ;D.

Se você naum estiver usando uma linguagem case-sensitive, programe bonitinho ;D..

ao invez de :

if (balgumacoisa) set field_changed_value of arquivo_dd field arquivo.nome to snome
por isso:

If (bAlgumaCoisa) Set Field_Changed_Value Of Arquivo_Dd Field Arquivo.Nome To sNome

5 - Teste teste e teste muito seu programa para naum ser um POGer..

uma das principais coisas q eu vejo acontecer [e gente falar q fez tal programa e compilo e deu certo, e chega na hora de apresentar o programa surge uns bugzinhos xD.. soh q antes de entregar teste bastante, tds os casos possiveis..

LEMBREM-SE USUARIO [E F****, E TD Q ACONTECE DE ERRADO PARA O USARIO A CULPA [E DO SISTEMA.

A INTERNET CAIW, [E O SISTEMA... [e gente essa parte [e realmente complicada, qnd você vai em algum cliente e ouve mal do seu sistema =[.

 

6 - Nunca Desista...

Outro ponto importante, [e qnd a gente num sabe oq fazer, ow como fazer..

pra isso existe uma otima ferramente disponivel na internet, naum sei c deveria falar, pois eu acho ela maravilhosa, + vo compartilhar com vcs: o o o o http://forum.imasters.com.br/public/style_emoticons/default/searchbeforeposting.gif!!! naum tem desculpa q naum sabe, ow algo parecido.. basta c empenhar na coisa q ela saira..

Sempre qnd naum souber onde esta o erro, encha o programa de printfs de box, de td q puder..

ate saber onde o erro acontece..

 

7 - Pense bem c o programa sera estruturado ow Orientado a Objeto.

Bom nesse ponto naum posso opinar muito xD, pois como estudei bastante linguagem C, tenho muitos vicios de programacao estruturada, quem migrar para o C++, jah podera utilizar as tecnicas de orientacao a objeto q sao: encapsulamento, poliformismo e heranca..

 

 

Bom galera ta ai algumas coisas legais para c ler e discutir..

 

ESPERO Q VCS PARTICIPEM AKI, FALANDO DO SEU MODO DE PROGRAMACAO, OW AT[E MSM DISCUTINDO O METODOS DOS OUTROS,..

 

[E ISSO AI PESSOAL VAMOS MOVIMENTAR IDEIAS ;D

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
Se você naum tiver uma boa IDE use o padrao hungaro nas variaveis, assim você naum c perdera no seu codigo e naum precisara ficar subindo td hora na declaracao das variaveis para saber seu tipo..

 

Existe uma coisa chamada "domínio".

Se você espera que o usuário forneça uma resposta, primeiro você tem que determinar o tipo de resposta (é um caractere? é um inteiro?)

Se você vai realizar uma leitura de um valor em moeda, a opção lógica é ponto flutuante.

 

Existe outra coisa chamada C99, que permite a declaração de variáveis em qualquer parte do código. Se eu ainda lembro da matéria, é bom ler algo sobre localidade espacial e cache/TLB hit/miss.

 

 

Se você naum estiver usando uma linguagem case-sensitive, programe bonitinho ;D..

ao invez de :

 

if (balgumacoisa) set field_changed_value of arquivo_dd field arquivo.nome to snome

 

por isso:

 

If (bAlgumaCoisa) Set Field_Changed_Value Of Arquivo_Dd Field Arquivo.Nome To sNome

 

Geralmente linguagens possuem alguma convenção p/ dar nome a variáveis e métodos. Em Java opta-se por iniciar os métodos com um verbo com letra minúscula e o restante do nome utiliza Camel Case. Em Ruby os programadores preferem tudo minúsculo, separado por underscore. Em Java, escreve-se as constantes com todas as letras maiúsculas, mas em Ruby, se a variável tem a primeira letra maiúscula ela já é uma constante por definição da linguagem.

 

Se preocupar em usar ou não Camel Case é inútil se os nomes das variáveis e dos métodos não dizem nada sobre eles.

 

 

soh q antes de entregar teste bastante, tds os casos possiveis..

 

Isso é impossível.

A parte teórica de testes determina alguns modos de testar software e o quê testar.

Tem o teste baseado em classes de erros; os que exploram erros do programador (< no lugar de > , == no lugar de != ); baseados no "valor limite" (dada uma restrição testa-se entradas nos extremos dessa restrição); e uns que usam critérios mais complicados (du-caminhos, potenciais du-caminhos). Os mais simples são "todos os ramos" e "todos os nós" ( o programa é representado com um grafo).

 

Sempre qnd naum souber onde esta o erro, encha o programa de printfs de box, de td q puder..

ate saber onde o erro acontece..

 

Use um debugger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é essa dos printf's eu uso até pq naum soh muito amigo do debugger xD!

 

É e outra coisa tbm q achei legal você falar é da convenção da linguagem, isso realmente é legal dar uma lida qnd começar a programar em tal linguagem..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

return 0 ow return EXIT_SUCESS, serve para dizer para o sistema operacional q td ocorrew bem;

Compartilhar este post


Link para o post
Compartilhar em outros sites

brigadão ae, cara!

 

é que eu tô estudando um script aqui.. que no final tem um "return 3;"

dae, ao invés do programa falar o menor valor digitado, ele sempre diz "O menor valor digitado foi: 3"..nao importa se você digitou 2, 1, 0...sacou?

 

 

o "return 3;" tem a mesma funcionalidade do "return 0;" por exemplo?

 

 

outra coisa...

tem um "char nome[20];" aqui..

mas se eu alterar esse "20" para "0", ele vai funcionar do mesmo jeito...

 

dae eu pergunto..Para que serve declarar esse "20" entre colchetes?

 

desde já, agradecido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dinarth...

 

você declarar char[20] significa que você vai pedir espaço para 20 bytes de memória para guardar algum valor.

 

se você quiser colocar o mesmo valor (uma frase de 19 caracteres) em uma variável char[0] pode funcionar, mas corre o risco de um stack overflow, pois a stack não estava pronta para receber 20 valores...

 

 

Se o programa pede pra você digitar um número, e só mostra "3" é pq tem algum erro lá!!!

O return 3 por exemplo, é eficiente para debugar um código.

 

Se ele retornou 3 para o S.O. você ja sabe onde foi o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh soooh..

entao quando me retorna 3 é pq tá rolando erro?

 

 

pô..pior que eu já vasculhei, mas nao achei erro algum... =/

 

vou dar mais uma olhada aqui..

 

 

brigadão ae, rapá!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

calma ae calma ae..

esse return q você ta falando é o return da main ow de alguma função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entaum esquece td q eu escrevi para você de retornar para o sistema operacional..

 

o return faz um simples papel de retornar algo para quem o chamou, exemplo:

int soma(int a, int b){
	return a + b;
}

int main(){
	int c = soma(3,4);
	printf("%d", c);
	return 0;
}

o return de uma função faz isso devolve um valor do tipo esperado q você definiw..

outras duvidas poste no forum principal, esse tópico naum é pra esse tipo de perguntas ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente....Main é uma função. O fato dela ser obrigatória não a transforma em algo diferente. E o return faz a mesma coisa em qualquer função, independente se quem a chamou foi uma função dentro do programa ou o sistema operacional.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na real quando falaram que uma linguagem tem seu padrão de variavel, metodos e funções.

 

Digo que ate mesmo mesmas linguagens tem padrões diferentes.

 

se você for programar para Windows, você vai ver diversas funções ou classes começando com letra maiscula(se for classe primeira letra maiuscula C seguida da outra maiuscula), CMapStringToPtr, metodo GetStartPosition(), padrão utilizado na MFC (Microsoft Fundation Class).

 

já para Linux você vai ver altas coisas como shm_open(), pthread_create() as funções são documentadas na especificação POSIX (coisa velha isso), qualquer sistema operacional que segue o esquema do POSIX (geralmente Unix) tem essas funções. Ex: de SO que implementam essas funções, AIX, Solaris, Linux, HP_UX e vários outros Unix.

 

Logo tomar cuidado com a plataforma que esta programando que a mesma linguagem tem diferentes tipos de padrões.

 

E isso que muitos tentam documentar as linguagens e deixa-las "portaveis" o máximo possivel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

poxa gente, tem coisa ai q desvio o assunto do tópico =//

será q ninguem gostaria de se expressar no sentido de "como você programa?" "transmita algumas dicas"

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites
se você for programar para Windows, você vai ver diversas funções ou classes começando com letra maiscula(se for classe primeira letra maiuscula C seguida da outra maiuscula), CMapStringToPtr, metodo GetStartPosition(), padrão utilizado na MFC (Microsoft Fundation Class).

 

já para Linux você vai ver altas coisas como shm_open(), pthread_create() as funções são documentadas na especificação POSIX (coisa velha isso), qualquer sistema operacional que segue o esquema do POSIX (geralmente Unix) tem essas funções. Ex: de SO que implementam essas funções, AIX, Solaris, Linux, HP_UX e vários outros Unix.

Detalhe: eu não falei que todas as linguagens possuem um único padrão de escrita. Repetindo: Geralmente linguagens possuem alguma convenção p/ dar nome a variáveis e métodos.. Na maioria dos casos a Microsoft presta mais um desfavor aos desenvolvedores (ex: p/ quê vários tipos de ponteiros com nomes impossíveis?) do que o resto das empresas. Tirando a Borland... Mais duas dicas de programação:

1- Preste atenção enquanto programa.

2- Não compilou ou deu erro? Leia o programa e as mensagens do compilador e tente consertar antes de abrir um tópico pedindo implícita e, ao mesmo tempo, descaradamente que os outros compilem o código de 600 linhas bugado por você.

 

Essas duas coisas são básicas. Sinceramente, se você não está com vontade de fazer isso "pq é difícil e trabalhoso", largue a programação e vá estudar outra coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recebi da minha professora a dica "do estilo hungaro" acho bem proveitoso especialmente em codigos estensos.. mas seguindo o padrao do topico.. como eu programo.. ainda n faço nada mt avançado.. mas o q eu mais preso eh a organizaçao.. e acho mt importante em codigos extensos que futuramente vou usar.


#include<stdio.h>
#include<stdlib.h>


main()
//em cada funçao procuro manter as chaves juntas ao canto
{
//faço declaraçoes de variaveis coladas ao lado esquerdo
int a,b,c;
float d,e,f;
//o restante utilizo da tabulaçao (tab)para manter destacado do restante    
       printf("Ola mundo!");
//para atribuir ou alterar o valor de uma variavel volte ao canto esquerdo 
a=10;
b=20
//observe q assim o codigo segue mt bem organizado e de facil visualizaçao 
}

acredito eu q essa forma de estruturar o conteudo seja o mais organizado, pois as funcoes e as variaveis ficam no canto esquerdo destacadas, e o restante do codigo com a tabulaçao se diferencia.. e a leitura do codigo fika muito mais agradavel.... observe a posiçao das chaves.. deixam o conteudo bem definido ..

 

se tiverem um outro geito proprio postem aew.. opinioes tb sao bem vindas

 

obrigado

att Lucas Konrath

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra, sempre que mexer com ponteiros, teste para o caso null ( if ( p == null ) ) é sempre muito delicado mexer com ponteiros. Lidar com um ponteiro null pode ser um tiro no pé com espingarda.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é verdade, a indentação do código é bastante interessante, o código separado por funções e classes usando os conceitos de POO é obvio de se entender, a classe pode ser como for, sempre será muito fácil de entender e de poder contralar seus membros separadamente.

 

 

as definição de classe quem conhece C é igual ao Struct.

 


#include <string>
class myclass
{
   private:
         int variavel; //Variavel normal do tipo inteiro.
         std::string nome;
   public:
         ~myclass();//Construtor é sempre bom, pois a classe quando usado de forma correta com o uso de construtor e destrutores, ajudam a funcionalidade e desempenho do programa.
          myclasse();//Destrutor

         char getname();//Função do tipo char.
         void setname();//Função do tipo void-- Sem retorno. 

};

 

desculpem pelo post longo, quem se interessou no assunto muito recomendado por todos os programadores, desculpe não fazer uma implementação direta pois a falta de tempo as vezes mim ataca.

 

OBS:a classe facilita no desenvolvimento do código e do programa, o uso da biblioteca string é para padrões do C++, facilitará e muito a vida de qualquer um..

 

estou só postando idéias a partir delas que membros pelo menos como eu partiremos em busca de mais conhecimento, proximo post será algo com Winsock.

 

Atenciosamente Marquinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.