terça-feira, 24 de abril de 2012

    Programas básicos em C - Parte 1

    Este post foi originalmente redigido para o #tocadoelfo!

    Como já disse, estou cursando Tecnologia em Análise e Desenvolvimento de Sistemas há quase dois meses e a primeira linguagem de programação que a turma está aprendendo é C. Não é a linguagem mais simples, mas o professor disse que é bom começar por ela, porque as coisas ficam mais fáceis (vai saber) ao mudar pra outra linguagem depois...

    Sem mais delongas, o objetivo deste post é mostrar exemplos simples de programas em C, explicando algumas funções básicas da linguagem. Isso não é uma aula de C e você não vai aprender a programar ao ler. Então, recomendo que já tenha uma pequena noção sobre a estrutura da linguagem. Estão prontos? Ready... GO!

    Recomendo que, antes de tentar entender os códigos, copie ele para um editor/compilador, de preferência com formatação, onde fica tudo colorido e fácil de compreender o que é cada elemento... Fiz vários comentários no decorrer de cada código. Alguns ficaram longos e extrapolaram os limites do layout do blog (coisa de principiante), dando mais um motivo para você copiar o código para um programa específico, antes de estudá-lo. Espero que entenda, mesmo eu não explicando o que é cada detalhezinho dele... ;)

    Função printf

    Essa é função mais simples de todas. Acho que cometários aqui são desnecessários, não?... Ela "imprime" valores na tela do seu computador. O exemplo abaixo é bem conhecido:

    #include<stdio.h>

    main()
    {
       printf("Hello, World!");
    }


    Função scanf

    Ela lê o que o usuário do programa digita no teclado. Essa é a forma de entrada de dados mais básica. Você pode salvar os valores digitados nas variáveis para serem usados posteriormente. Abaixo temos um programa que executa contas de adição:

    #include<stdio.h> //inclui a biblioteca

    main() //inicia o programa
    {
       int a, b, soma; //cria as variáveis

       printf("Digite o primeiro numero: ");
       scanf("%i", &a); //quando esse comando é executado, o programa eh "pausado" ateh que o usuario digite alguma coisa e confirme, pressionando Enter. No caso, o valor digitado serah atribuido a variavel inteira 'a'

       printf("Digite o segundo numero: ");
    scanf("%i", &b); //como já visto acima, faz com que a variável 'b' adquira o valor digitado pelo usuario

       soma=a+b; //agora que jah temos um valor para 'a' e outro para 'b', declaramos que o valor da variável 'soma' é a soma dos valores de 'a' e 'b'

       printf("O resultado da soma eh: %i\n\n", soma); //aqui, pedimos para ser mostrado na tela o valor da variavel inteira 'soma'
    }


    Podemos usar esses dois comandos para criar vários outros algoritmos simples que realizassem cálculos matemáticos. No próximo exemplo podemos encontrar o valor da área de um triângulo, a partir dos valores de sua base e altura:

    #include<stdio.h>

    main()
    {
       int a, b; //primeiro, criamos variaveis inteiras para guardar os valores da base ('a') e da altura ('b')
    float area; //agora, criamos uma variavel float para receber posteriormente o valor da area. Ainda explicarei o porque de nao ser inteira, como as outras

       printf("Digite o valor da base do triangulo: ");
    scanf("%i", &a); //o valor digitado pelo usuario serah guardado na variavel inteira 'a'

       printf("Digite o valor da altura do triangulo: ");
       scanf("%i", &b); //o valor digitado pelo usuario serah guardado na variavel inteira 'b'

       area = (a*b)/2.0; //aqui, declaramos o valor da area do triangulo, usando a formula (base*altura)/2. O motivo de 'area' ser do tipo float eh que o resultado pode ser um numero com virgula, dependendo dos valores de 'a' e 'b'

       printf("\nA area do triangulo eh: %.2f\n\n", area); //uma vez declarado o valor da area, podemos mostra-lo. Note que "%.2f" faz com que sejam impressos apenas duas casas decimais depois da virgula. Se colocassemos apenas "%f", seriam exibidas no resultado 6 casas decimais
    }


    Função if

    Vamos complicar um pouco agora, ok? Essa função funciona como uma bifurcação no seu programa. Ela diz que se determinada condição for verdadeira, uma série de comandos será executada. Mas no caso de ser falsa, executará uma série diferente de comandos. Por exemplo:

    #include<stdio.h>

    main()
    {
       int a; //criamos uma variavel inteira 'a'

       printf("Digite um numero inteiro: ");
       scanf("%i", &a); //atribuimos o valor digitado a 'a'

       if(a%2 == 0) //aqui, dizemos que "se o resto de 'a' dividido por 2 for 0", ou seja, se o numero for par...
          printf("\nO numero eh par!\n\n"); //...o programa vai dizer que ele eh par, executando os comandos que estiverem abaixo do "if"
       else
          printf("\nO numero eh impar!\n\n"); //caso a condiçao entre os parenteses nao for verdadeira, ou seja, se o numero digitado for impar, o programa vai executar os comandos que estiverem abaixo do "else"
    }


    O próximo código lê três números inteiros digitados pelo usuário e, através de if's, consegue "descobrir" qual é o menor deles e mostrar isso na tela:

    #include<stdio.h>

    main()
    {
       int a, b, c; //primeiro criamos as variaveis que guardarao os os valores dos tres numeros digitados

       //a seguir, atribuimos os valores, que serao digitando no teclado:
       printf("\nDigite um numero: ");
       scanf("%i", &a);
       printf("Digite um numero: ");
       scanf("%i", &b);
       printf("Digite um numero: ");
       scanf("%i", &c);

       if(a<b && a<c) //aqui, dizemos que "se 'a' for menor que 'b' e menor que 'c'"...
          printf("\n%i eh o menor numero!\n\n", a); //...entao 'a', obiviamente, serah o menor entre os tres
       else if(b<a && b<c) //se a condiçao acima nao for satisfeita, então o programa saltarah para a proxima, que diz que "se 'b' for menor que 'a' e menor que 'c'"...
          printf("\n%i eh o menor numero!\n\n", b); //...entao 'b' serah o menor entre os tres
       else //caso nenhuma das condiçoes acima sejam verdadeiras...
          printf("\n%i eh o menor numero!\n\n", c); //...soh resta dizer que 'c' eh o menor
    }


    if's aninhados

    Complicando um pouco mais, podemos ter uma função if dentro de outra função if, ou mesmo um if dentro de um else, criando assim várias caminhos diferentes para o programa seguir, de acordo com os valores e resultados que as variáveis vão atribuindo. Podemos escrever o mesmo programa acima usando if's aninhados:

    #include<stdio.h>

    main()
    {
       int a, b, c; //primeiro criamos as variaveis que guardarao os os valores dos tres numeros digitados

       //a seguir, atribuimos os valores, que serao digitando no teclado:
       printf("\nDigite um numero: ");
       scanf("%i", &a);
       printf("Digite um numero: ");
       scanf("%i", &b);
       printf("Digite um numero: ");
       scanf("%i", &c);

       if(a<b) //primeiro comparamos 'a' e 'b'. Caso a condiçao for verdadeira, os comandos abaixo do "if" serao executados
       {
          if(a<c) //note que temos esse "if" abaixo do anterior. Ele esta aninhado! Agora ele vai comparar 'a' com 'c'
             printf("\n%i eh o menor numero!\n\n", a); //se a condiçao for verdadeira, entao 'a' eh menor que 'c' tambem,
          else
             printf("\n%i eh o menor numero!\n\n", c); //mas se a condiçao for falsa, significa que 'c' eh o maior
       }
       else //se, de cara, 'a' nao for menor que 'b', entao podemos começar a comparar as proximas variaveis. no caso, o 'b':
       {
          if(b<c) //b jah foi comparado com 'a', entao precisamos apenas saber sua relaçao com 'c'.
             printf("\n%i eh o menor numero!\n\n", b); //se 'b' for menor que 'c', o programa mostrarah isso
          else
             printf("\n%i eh o menor numero!\n\n", c); //e se nao for, podemos afirmar que 'c' eh o menor entre os tres numeros
       }
       //note que precisamos utilizar chaves abaixo do if e do else quando, a partir deles, forem executados mais de um comando!
    }


    Lembro que o objetivo do post é apenas mostrar exemplos de aplicações de alguns comandos básicos. Copie os algoritmos, teste-os, faça alterações próprias, teste de novo e entenda como tudo funciona! ;) Então, acho que por hoje é só. Ainda tenho seis horas de aulas de programação em C essa semana e espero poder tentar explicar mais alguns comandos até a semana que vem, como o switch. Espero que tenham gostado.

    Obs.: Não usei fontes para elaborar esse post. A maioria dos algoritmos foram escritos por mim, ao resolver exercícios propostos em sala de aula.

    1 Comentários:

    Fábio Gabriel disse...

    dahora, eu estou aprendendo c++ e é bom ver que c é meio parecido, teu blog é muito bom