1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Conversão de C para pseudocódigo

Discussão em 'Programação' iniciada por Jooo, 20 de Julho de 2012. (Respostas: 8; Visualizações: 1213)

  1. Queria converter uma codigo que fizemos na aula de tecnicas de programação , curso de informática
    Isto ta em C e queria passar para algoritmo .
    é assim:
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    int num = 133;
    do{
    if(num < 300)
    printf("%d " ,num+=6);
    if( num >= 300 && num <= 400)
    printf("%d " ,num+=3);
    if( num > 400)
    printf("%d " ,num+=6);
    }while(num < 556);
    getch();
    return 0;
    }
     
  2. fatm

    fatm Power Member

    tas a espera que alguém te faça isso? aqui tira-se duvidas e ajuda-se agora fazer tpc nao
     
  3. printf("%d " ,num+=6);
    O que é isto???? O compilador até pode gostar e comer disso, mas ninguem está à espera que o código dentro de um printf() altere as variáveis que estás a usar. O printf serve apena s para imprimir coisas, logo é apenas isso que deve fazer e quem está a ler código pode simplesmente ignorar a linha. Estares a colocar num+=6 dentro do printf é má prática, porqe confunde quem for ler o código.

    Corrigindo esse erro:

    Código:
    #include <stdio.h>#include <stdlib.h>
    int main() {
        int num = 133;
        do{
            if(num < 300)
                num+=6;
            if( num >= 300 && num <= 400)
                num+=3;
            if( num > 400)
                num+=6;
            printf("%d",num);
        }while(num < 556);
        return 0;
    }

    E tirando coisas superfúlas
    Código:
    main() {
        int num = 133;
        do{
            if num < 300
                num+=6;
            if 300 <= num <= 400
                num+=3;
            if num > 400
                num+=6;
            print num ;
        } while num < 556 ;
    }
    }

    em todo o caso, qual é a razão de estares a usar o do...while() aqui?
     
  4. Sl0w

    Sl0w Power Member

    Não necessariamente. Primeiro, o código dentro do printf não vai mudar nada, o C não é uma linguagem lazy, os argumentos são avaliados antes de acontecer a aplicação da função. Segundo, é apenas o "exploit" do facto que segundo a semântica do C os assignments são expressões o que nos permite fazer coisas giras como:

    Código:
     int a, b, c; a = b = c = 3; 
    Claro que isso depende do ponto de vista, embora não considere que seja necessariamente má prática.
     
  5. Sim, não muda nada para a execução do programa. Mas eu considero má prática pelo facto de tornar o código mais ilegível porque quando eu leio um printf estou a espera de imprimir coisas para o stdout, não de estar a correr a lógica do programa.
     
  6. nym-ph

    nym-ph Power Member

    Essas coisas são boas para casos excepcionais com fors com 50 caracteres de comprimento.

    Passa isso para pseudo código, e rapidamente percebes porque é que é má prática.
     
  7. _coelhinha_

    _coelhinha_ Power Member

    Sorry mas isto também é considerado uma má prática de programação, tipicamente isto é uma forma de tornares o teu programa vulnerável ^^
     
  8. lol sim eu sei que deves separar a business logic da apresentação dos dados.
    E também que não se deve enviar directamente strings do código para o utilizador, e sim utilizar um ficheiro com todas as strings do programa, (e assim ser mais localizar o programa).
    Mas achas que num programa que só tem uma função, é possível fazer isso?
     
  9. _coelhinha_

    _coelhinha_ Power Member

    Neste caso não, mas como fizeram referência a boas/má práticas de programação só mencionei que aquele printf também não é o mais correcto.

    Como o Jooo está no inicio também é importante salientar esses aspectos, afinal de contas é qd começamos que ganhamos os maus vicios =P
     

Partilhar esta Página