Ir para conteúdo
Fórum Script Brasil

Maligno

Membros
  • Total de itens

    214
  • Registro em

  • Última visita

Posts postados por Maligno

  1. ah! voce faz falta no dicasBCB, afinal, acho que voce respondeu 70% das minhas duvidas.

    Não lembro de você (seu nick não ajuda muito). Mas o site ainda está temporariamente fora do ar. Temos que esperar o Ivan conseguir retomar o site. Mas quando voltar ao normal, voltaremos à carga total. :)

    Dica adicional: se puder, use o FR a partir da versão 4.72, que já é pro RAD2009. Link.

    e se um dia pensar em tirar ferias, passa aqui no Ceará :)

    Opa! Convite devidamente anotado. Obrigado. :)

  2. Dois detalhes: o texto do primeiro link sequer diz quem é o autor. Texto apócrifo pra mim não tem valor algum. Ademais, há até autores consagrados da área que de vez em quando falam alguma bobagem. Segundo: os dois links seguintes estão quebrados.

    Em suma: continuo discordando diametralmente daquilo que pra mim é apenas sua opinião pessoal, baseada num conceito errôneo e não num conceito consagrado. :)

    EOT

  3. o paradigma estruturado siginifica o seguinte...

    Comeco->meio->fim

    Desculpe, mas discordo. Seu conceito está totalmente equivocado. A programação estruturada diz respeito às estruturas de programação: controle, decisão e contagem. Se você está numa malha, como exemplificou, e sai dela, não foi feita "quebra" nenhuma de paradigma. Isso é irreal.

    mesmo esses metodos serem programados, na maioria das vezes, estruturadamente....eles ainda continuam sendo TOTALMENTE orientados a objetos!!!

    Eu não disse que deixa de ser OOP. Apenas disse que os métodos são funções que ainda caem no conceito de programação estruturada, internamente. Note a diferença.

    Você está preso nesse conceito de "quebra" de paradigma. Não tem nada a ver. Aquele que te passou isso não tem a menor noção do que disse. O paradigma, seja ele qual for, é o que é. Não tem esse negócio de "quebra". Isso não existe. Quer tirar a dúvida: consulte a wikipedia.

  4. Programação não-estruturada, na acepção do termo, não existe como paradigma de programação. Na verdade, desde o tempo do guaraná com rolha, desenvolveu-se apenas três tipos de programação: linear (ou até pode-se chamar de não-estruturada, se quiser), a estruturada (também conhecida como modular, se incluirmos as definições de módulos funcionais) e a orientada a objetos. Esta última, aliás, ao contrário da crença popular, não é totalmente orientada a classes e objetos, pois seus métodos e eventos são simples procedimentos estruturados, no mais velho estilo da programação estruturada.

    Lamento dizer ao colega que primeiro respondeu, mas esse negócio de "quebra" de estrutura não define o paradigma. É apenas uma mera característica de um recurso nativo. Ademais, a linguagem C (e qualquer linguagem já inventada) jamais poderia existir sem essa característica.

  5. Arquivos com extensão .H não são bibiliotecas, mas arquivos de cabeçalho onde, entre outras coisas, se encontram os protótipos das funções utilizadas.

    A mensagem de erro diz que esse cabeçalho (ou header) não foi encontrado. O GCC permite que você informe um ou vários diretórios onde ele deve pesquisar. É o switch -I. À frente dele informe o caminho onde o header pode ser encontrado. Não uso muito o GCC, mas até imagino que ele deve ter alguma variável de ambiente onde se pode informar isso e tornar a compilação mais fácil.

    Na mensagem de erro também consta um warning sobre o retorno de main(). Essa função nunca retorna void. O retorno é sempre um int. Mas não é nada grave. Por isso que é apenas um warning. :)

  6. Mas note que a vírgula não se descarta, pois as três partes do FOR (inicialização, teste e ajuste de iteração) podem conter listas, cujos ítens são separados justamente por vírgulas. Você poderia ter, por exemplo, 3 inicializações. O único porém é que na lista de expressões de teste, só vale o resultado da última expressão. E como adendo, note também que você pode deixar tudo vazio, inserindo apenas os dois ponto-e-vírgulas obrigatórios.

  7. Bem, então você aca que eu presciso gastar mais memoria para deixar meu programa mais rapido?

    Não. O que eu disse foi que consumo de memória e velocidade são preocupações válidas apenas em algumas ocasiões especiais. E que entrada de senha não é uma delas.

    vi um tipo de classe de armazenamento, o "register"
    A classe de armazenamento register nem é mais utilizada. Os compiladores atuais são otimizados suficientemente pra usarem os registradores quando for necessário e quando for possível, de forma automática.

    vi que isso pode deixar a execução da variavel/função mais rápida!!!

    Como eu disse, o próprio compilador já faz isso. Se experimentar, provavelmente não notará qualquer diferença com ou sem esse modificador.

  8. Pra um help simples, só com protótipo, descrição e um exemplo simples, eu prefiro usar o NG (Norton Guides). É bem prático, pra quem precisa disso o tempo todo de forma rápida. É só configurar um atalho. Pra quem quiser:

    O programa leitor (não precisa instalar - é só executar):

    http://pub.buzinello.com/tools/weg_expert_...ows_v1.0.15.zip

    Vários NG (o de C é o borland_turbo_c):

    http://pub.buzinello.com/index.php?d=./manuals/ng/

  9. Acho que uma de suas menores preocupações é quanto tempo de CPU esta ou aquela função irá consumir. No presente contexto, isso é um dado irrelevante. Tal preocupação é válida apenas em algumas ocasiões, onde o tempo de processamente é realmente crítico. E você está longe disso.

    Mas a resposta é: não sei. :)

  10. Se a intenção é apenas aprender, tanto faz. Uma das coisas mais chatas em senha, e agora olhando o lado prático, é quando se tira do usuário a liberdade de compor sua senha na caixa que quiser. Particularmente, eu sempre deixo isso livre e transformo tudo para caixa baixa. Daí, mais uma vez: tanto faz. Mas muita gente faz questão de manter esse padrão ridículo que diferencia maiúsculas de minúsculas. Aí sim, faz diferença e seria necessário usar strcmp().

  11. Você está fazendo a maior confusão. Parece que você quer definir uma função senha(). Não existe isso. E se fosse pra fazer isso seria FORA de main() e não dentro dela. Aí está a origem de todos os erros. Vou te dar uma forcinha:

    #include<stdio.h>
    #include<string.h>
    
    int main() {
        char a1[] = "senha";
        char s1[15];
    
        printf("Digite a senha: ");
        gets(s1);
        
        if (stricmp(a1,s1)==0)
            printf("Senha correta\n");
        else
            printf("Senha incorreta\n");
    }

    Isso deve funcionar. O #include <string.h> é necessário para informar o compilador sobre a função stricmp(). Detalhe, quando for definir uma string constante, não precisa alocar pra ela mais espaço do que ela ocupa. E como é uma string, não precisa nem informar o tamanho. O compilador saberá quanto deverá alocar de espaço. Por isso ai é definido como char a1[].

    Mas observe a seqüência do código que é executado. Compare com o que você fez e veja que ficou até bem mais fácil.

    bem, eu a defini como uma outra string, mas constante gasta menos memoria?(é... mão-de-vaca é uma caracteristica minha

    Espero que não seja mão-de-vaca na hora de pagar uma gelada pros amigos. :))))

    Não, constante é apenas um valor qualquer, supostamente "imexível". Ocupa o que tem de ocupar de memória, como se fosse uma variável. Aliás, mais correto seria se as constantes fossem definidas com a cláusula const. No seu caso seria const char a1[] = "senha";. Com essa cláusula, se no decorrer da compilação for encontrado código que tente alterar a1, o compilador já emitirá um erro.

  12. porque se eu criar outra string eu vou gastar 6 bytes a mais(se eu não me engano... 5 do valor "senha" e mais 1 da string)

    Mas que drama pra gastar memória. A memória que se exploda. Não é bom desperdiçar, claro. Mas se precisa usar, simplesmente use. É assim que funciona. Mão-de-vaca!!! :)))

    Compensa?

    Não é nem questão de compensar ou não. Isso não é opcional. É mandatório. E é do jeitinho que eu disse. Você precisa, primeiro, definir essa tal "senha", provavelmente como uma constante. Depois use no teste uma função de comparação dessa tal "senha" e o valor que usuário digitar.

    Detalhe: regra para string ASCIIZ: o tamanho total é igual o tamanho do texto mais 1 byte pro terminador nulo. Como C é uma linguagem de nível médio, não é feita qualquer checagem de tamanho. Se você errar nisso, seu programa vai dar pau sem aviso prévio. E às vezes será muito difícil encontrar a origem do erro.

  13. o que está dizeno é que o comando IF-Else não pode ser usado para verificar o valor de uma string?

    Não da forma direta como você pretende. É preciso usar uma função apropriada para comparar as duas strings. Você pode testar apenas o resultado dessa comparação.

  14. Você não pode fazer comparações desse tipo em C. Aí você está comparando o valor de um ponteiro com alguma coisa qualquer chamada "senha", que nem foi definida. Para comparar duas strings, utilize uma função da biblioteca padrão chamada stricmp(), que especial compara sem levar em conta se é caixa alta ou baixa. Ou, se quiser diferenciar, use strcmp().

×
×
  • Criar Novo...