sábado, 19 de maio de 2012

Programando com python - parte 1

Olá pessoal, mais um post. Dessa vez vamos de python, uma linguagem simples, fácil e muito poderosa. Não é atoa que essa linguagem é a mais usada pela empresa Google.

Vamos lá então, o programa abaixo é apenas um simples exemplo de como trabalhar com o python. Esse programa pergunta a nota de 10 alunos e depois calcula a média aritmética.

Se você usa Windows e não tem o python instalado, veja o tutorial: imasters

Se você usa Linux, muito provavelmente o python já está instalado em sua máquina, apenas abra o terminal e digite: python.

Segue o código fonte do programa. pograma1.py
#programa calcula média da sala
b = int(0)
for i in range(0,10):
    a = input("Informe a nota do aluno: ")
    b += int(a)
print("A média da sala foi", b/10)
Bom pessoal, por hoje é só. Duvidas, sugestões e criticas fiquem a vontade para deixarem seus comentários. :)

Yucky Choccy


Fala pessoal, esse é o código que eu montei para o exercício 9 da lista de estrutura de dados compostas do IFSP.     :)

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

int main(void) {
    char c[3][3], player[2] = {'A','B'};
    int i, j, jogada, linhaboa, aux, cont, venceu, x;
    //preenchendo o tabuleiro do jogo com o caractere -
    for(i = 0; i < 3; i++) {
        for(j = 0; j < 3; j++)
            c[i][j] = '-';
        puts("");
    }
    aux = 1; //variável aux é responsável por controlar o inicio e o termino do jogo
    cont = 0; //variável cont, conta quantas jogadas foram realizadas. Com isso conseguimos determinar qual é a vez de cada jogador.

    srand(time(NULL));
    i = rand() % 3; //sorteando um número aleatório de 0..2
    j = rand() % 3; //sorteando um número aleatório de 0..2
    c[i][j] = 'X'; //na posição sorteada eu preencho o local com o sabão
    //enquanto aux tiver valor 1, então o código é executado
    while(aux) {
        //imprimindo o tabuleiro do jogo, isso permite que os jogadores vejam como o tabuleiro fica após cada jogada
        for(i = 0; i < 3; i++) {
            for(j = 0; j < 3; j++)
                printf("%c\t", c[i][j]);
            puts("");
        }
        printf("Sua vez de jogar JOGADOR %c\n\n", player[cont%2]);
        printf("\nInforme o que deseja fazer... \n1- Jogar em uma linha \n2- Jogar em uma coluna: ");
        scanf("%d", &jogada);
        if(jogada == 1) {
            printf("\nInforme o numero da linha: ");
            scanf("%d", &jogada);
            x = 0; //guarda o numero de vezes que alguma parte do tabuleiro foi eliminada
            while(jogada < 3) {
                linhaboa = 1; //informa se a linha está apta a ser removida do tabuleiro
                //o tabuleiro é varrido com o intuito de saber se naquela linha temos o sabão em alguma posição
                for(i = 0; i < 3; i++) {
                    if(c[jogada][i] == 'X') {
                        linhaboa = 0; //isso informará ao código que a linha escolhida do tabuleiro tem o sabão em alguma casa
                        jogada = 3; //isso fará com que o jogador passe a vez para o próximo
                    }
                }
                //se a linha estiver apta a ser removida, então isso será feito
                if(linhaboa && c[jogada][0] == '-') {
                    for(i = 0; i < 3; i++)
                        c[jogada][i] = ' ';
                    x = 1; //isso informa que não estamos mais na primeira jogada dessa iteração
                } else if(jogada == 3 && x == 0) {
                    puts("\nEssa jogada não pode ser realizada!");
                } else if(linhaboa && c[jogada][0] == ' ') {
                    jogada = 3;
                    puts("\nEssa coluna já fpoi eliminada!!!");
                }
                jogada++;
            }
            if(x)

                //incrementa a variável cont, indicando que algum jogador realizou uma jogada
                cont++;
        } else if(jogada == 2) {
            //esse trecho de código é semelhante ao código do primeiro if. A unica diferença é que este verifica as colunas ao invés das linhas
            printf("\nInforme o numero da coluna: ");
            scanf("%d", &jogada);
            x = 0;
            while(jogada < 3) {
                linhaboa = 1;
                for(i = 0; i < 3; i++) {
                    if(c[i][jogada] == 'X') {
                        linhaboa = 0;
                        jogada = 3;
                    }
                }
                if(linhaboa && c[0][jogada] == '-') {
                    for(i = 0; i < 3; i++)
                        c[i][jogada] = ' ';
                    x = 1;
                } else if(jogada == 3 && x == 0) {
                    puts("\nEssa jogada não pode ser realizada!");
                } else if(linhaboa && c[0][jogada] == ' ') {
                    jogada = 3;
                    puts("\nEssa coluna já foi eliminda!!!");
                }
                jogada++;
            }
            if(x)
                cont++;
        } else
            puts("\nNúmero de jogada é inválido!");
        venceu = 0; //variável é zerada toda vez, pois toda rodada há uma verificação para ver se algum jogador venceu
        for(i = 0; i < 3; i++) {
            for(j = 0; j < 3; j++)
                if(c[i][j] == '-') //isso pergunta se ainda existe alguma casa no tabuleiro que pode ser jogada
                    venceu++; //essa váriavel irá armazenar quantas casas ainda podem serem eliminadas
        }
        //caso não haja mais nenhuma casa, o jogo deve ser encerrado, pois já temos um ganhador
        if(venceu == 0) {
            printf("\nJOGADOR %c VENCEU\n\n", player[(cont+1)%2]);
            aux = 0;
        }
    }
    return 0;

}

Qualquer duvida só deixar um comentário... caso tenha alguma duvida ou sugestão deixe um comentário também :). Até a próxima galera!!!

terça-feira, 8 de maio de 2012

Simulador de aeronave - simples

Olá pessoal, abaixo postei o código do exercício 10 da lista de estruturas de dados compostas:

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

void _imprimeRota(char m[7][9]);

int main()
{
    int i, j, parar, linhaAtual, colunaAtual;

    parar = 1;
    linhaAtual = 5;
    colunaAtual = 1;

    char m[7][9] = {
        {'#','#','#','#','#','#','#','#','#'},
        {'#',' ',' ','#',' ',' ',' ','F','#'},
        {'#',' ',' ',' ',' ',' ','#',' ','#'},
        {'#','#',' ','#',' ',' ','#',' ','#'},
        {'#',' ',' ',' ',' ',' ',' ',' ','#'},
        {'#','I',' ',' ',' ','#',' ',' ','#'},
        {'#','#','#','#','#','#','#','#','#'},
    };

    _imprimeRota(m);

    do {
        printf("\nInforme as cordenadas que deseja sobrevoar [linha, coluna]:\n");
        scanf("%d%d", &i, &j);

        i--;
        j--;

        linhaAtual = linhaAtual - i;
        colunaAtual = j - colunaAtual;

        if((i > 7 || j > 9) || (i < 0 || j < 0))
            printf("\nEssa cordenada não é válida!\n");
        else if(linhaAtual > 1 || colunaAtual > 1)
            printf("\nEssa coordenada não segue uma rota!\n");
        else if(m[i][j] == '#') {
            system("clear");
            parar = 0;
            printf("\nO avião colidiu com um obstáculo!\n");
            m[i][j] = 'C';
        } else if(m[i][j] == 'F') {
            system("clear");
            parar = 0;
            printf("\nVocê chegou ao seu destino!\n");
        } else if(m[i][j] == 'I') {
            linhaAtual = i;
            colunaAtual = j;
            _imprimeRota(m);
            printf("\nVocê está no ponto de partida!\n");
        } else {
            m[i][j] = 'A';
            linhaAtual = i;
            colunaAtual = j;
            _imprimeRota(m);
        }

    }while(parar == 1);

    printf("\n\t\tEXIBINDO A ROTA FEITA PELA AERONAVE: \n\n");

    _imprimeRota(m);

    printf("\nLEGENDA:\n - A: [Por onde a aeronave passou]\n - C: [ponto de colisão]\n");

    return 0;
}

void _imprimeRota(char m[7][9]) {
    int i, j;

    for(i = 0; i < 7; i++) {
        for(j = 0; j < 9; j++) {
            printf("%c\t", m[i][j]);
        }
        printf("\n");
    }
}

Se você usa o sistema operacional Windows, substitua todos os system("clear") por system("cls").

Qualquer dúvida só postar um comentário... liberei os comentários anônimos :)

segunda-feira, 2 de abril de 2012

Iniciando em Java - Instalando a JDK

Olá pessoal, hoje vamos aprender a configurar nosso computador para trabalhar com Java.

Primeiramente temos que baixar a JDK (Java Development Kit). Abaixo segue o tutorial para instalação da JDK para dois sistemas operacionais (Windows/Linux).

Tutorial Windows 7

Primeiro vamos fazer o download. Você pode fazer o download utilizando o site da Oracle, ou usar o link que eu disponibilizei abaixo, que vai redirecioná-lo para o baixaki.com.

Jdk 7 - baixaki.com

Com o download concluído basta executar o arquivo .exe, esse iniciará o instalador.
  • Na primeira tela que aparecer ( a de boas vindas ), basta clicar em Next. 
  • A próxima tela é a de licença de uso. Clique em "Yes" para continuar.
  • Agora o instalador lhe dá a oportunidade de selecionar onde instalar o SDK. Por padrão fica em c:\\j2sdk (onde é o número de versão do Java) Clique em Next. Copie esse caminho em que o sdk está sento instalado, abra o bloco de notas e cole o caminho... Mais tarde vamos precisar disso para configurar a JVM.
  • Na próxima tela é possível selecionar os componentes a serem instalados. É recomendável deixar todos marcados. Clique em Next.
  • Na próxima tela, chamada "Select Browsers", o instalador lhe pergunta em quais navegadores é para ser habiltado o plugin Java. Como muito possivelmente o seu browser já tem tal plugin, e levando em consideração que usar o plugin da Sun pode acarretar em certas incompatibilidades, desmarque todas as opções. Clique em Next.
  • O SDK irá ser copiado para o sistema. Aguarde a finalização. Apos o término, clique em Finish. 
Após instalar o JDK ele ainda não está totalmente pronto para ser usado, para isso devemos setar as variáveis de ambiente do nosso sistema operacional Windows.

Vá no menu iniciar -> Computador -> clique com botão direito do mouse -> propriedades

Irá abrir uma janela, no canto esquerdo superior procure a opção -> configurações avançadas do sistema

Irá surgir uma nova janela, clique em variáveis de ambiente.

Agora em variáveis do sistema clique no botão novo -> Crie uma variável chamada JAVA_HOME e em valor da variável cole o caminho que você salvou no bloco de notas -> Clique em, Ok.

Ainda em variáveis do sistema, procure na lista de variáveis uma que se chama Path. Selecione ela -> editar -> vá no final da linha adicione um ponto e vírgula (;) e coloque o seguinte texto: %JAVA_HOME%\bin; -> clique em, Ok.

IMPORTANTE NÃO APAGUE NADA QUE ESTEJA ESCRITO NO PATH, POIS ISSO PODERÁ CAUSAR DANOS NA EXECUÇÃO DE ALGUNS APLICATIVOS. 

Agora reinicie seu PC.
Agora vá ao menu iniciar -> no campo executar digite cmd e pressione enter ou abra a prompt de comando do windows 7 (DOS) -> Digite javac e pressione ENTER -> Se aparecer várias coisas escritas... pronto já podemos começar a programar em Java. Senão repita os passos acima pois algum erro foi cometido.

Vídeo para ajudar na instalação: Instalando a JDK - Windows 7

Linux - Ubuntu

Em Linux geralmente a JDK já vem instalada assim como as bibliotecas do Python. Vamos conferir se já não há uma JDK instalada no sistema. Abra o terminal usando o assistente ou pressione as teclas Ctrl+T -> Digite java -version -> Observe a saída, se conter informações referentes a Java sua JDK já está integrada e pronta para ser usada. Senão siga os passos abaixo.

Pressione Ctrl+T, ou abra o terminal -> digite sudo apt-get install openjdk-6-jdk e pressione enter -> informe sua senha para o sistema -> uma confirmação de download de pacotes será solicitada, aperte a tecla S e pressione ENTER. Pronto espere a instalação ser concluída de pois reinicie o computador. JDK está pronta para ser utilizada.

Comunidade Linux para qualquer duvida que surja no ato da instalação:
Instalando JDK no linux - viva linux

Gostou? Dúvidas? Sugestões? Deixe um comentário ou envie um e-mail:
guilherme_1994_gui@hotmail.com

domingo, 1 de abril de 2012

Funções em C              ----------->                    Parte.3

Olá pessoal esse é o ultimo post da série Funções em C. Hoje aprenderemos como deixar nossos códigos mais organizados e mais limpos visualmente, se você não leu os outros post's da série de uma pausa e leia-os antes de prosseguir, já que eles são pré-requisitos para que haja um bom entendimento do assunto que serpa tratado aqui. Abaixo o link dos post's anteriores:

Funções em C - parte1
Funções em C - parte2

Até agora nossos programas tiveram um pequeno número de funções, por isso o código não ficou tão difícil de se entender ou menos legível. Mas o problema surge quando tivermos um código que tenha 30, 50, 100 funções e ai?

Em C temos um recurso chamado prototipagem. Com ele não precisamos mais escrever todo o código da função acima da função principal (int main()). Quando criamos um protótipo de uma função estamos na verdade declarando uma função, que depois será escrita em qualquer parte do nosso código.

Veja um exemplo:

#include <stdio.h>

//protótipo da função
void escreverNome(void);
//não ha mais código aqui, isso facilita saber quantas funções nosso programa tem!!!

int main() {
    escreverNome();
    return 0;
}

//podemos começar escrever a função em qualquer parte do código agora
void escreverNome(void) {
    printf("Programando em C");
}

Agora veja um exemplo contendo um programa extenso que tenha várias funções. Fica bem mais fácil saber quantas funções o programa tem, qual o nome das funções e até mesmo comentar essas funções:

#include <stdio.h>

void telaInicial(); //imprime a tela de boas vindas;
void telaFinal(); //imprime a tela de saída do programa
void menu(); //imprime o menu do escolha para o usuário

//Funções abaixo manipulam o arquivo bd.txt
//Caso retorno da função seja diferente de 0, algum erro aconteceu
int cadastrar(); //cadastra um novo usuário no arquivo
int buscar(); //busca um único registro
int excluir(); //exclui registro do banco
int listarTodos(); //lista todos os registros armazenados no arquivo

//Controles internos da empresa
//Caso retorno da função seja diferente de 0, algum erro aconteceu
int exibirFaturamento(int dataInicial, int dataFinal);

int main() {
    //todo o código aqui
}
//aqui posso escrever todo o código das minha funções que foram declaradas lá em cima em qualquer ordem

Perceba que agora não escrevemos mais nenhum código acima da função main, apenas declaramos nossas funções (protótipos). Como qualquer comando da linguagem C, ao final da linha temos que adicionar um (;) para dizermos ao compilador que ali se encerra a declaração do protótipo.

Sintaxe de declaração de protótipo:
tipo_de_retorno nome_da_função <argumentos/parametros> ;


Aplicação no código:
char inicialDoNome(char nome[40]);

Perceba que a diferença de se criar uma função ao invés de criar um protótipo de uma função é que ao invés de abrirmos um bloco de comandos ({}), terminamos a linha com um (;).

Bom pessoal, esse é o fim da série Funções em C. Vou voltar falar de funções em outros post's, mais antes disso teremos que aprender alguns conceitos um pouco mais complicados para prosseguirmos com funções.

Se você é programador de outra linguagem ou até mesmo quer aprender alguma mais não sabe por onde começar, utilize seu espaço e deixe um comentário, quem sabe eu não possa te ajudar.

E-mail: guilherme_1994_gui@hotmail.com

Quando usar as estruturas de repetição: Para, Enquanto e Repita?

Quando estamos iniciando em estruturas de repetição, geralmente aprendemos primeiro a estrutura para, depois a estrutura enquanto e por fim a estrutura repita.

O que essas estruturas tem em comum é que elas vão repetir determinadas instruções do seu código por uma certa quantidade de vezes.

Mas quando devemos usar o para, o enquanto ou o repita? Essa é uma pergunta muito frequente aos programadores iniciantes que não sabem definir uma aplicação exata para a solução do seu problema.

Podemos dizer que temos dois tipos de repetição dentro de um programa, o primeiro seria a repetição programada. A repetição programada seria quando o programador já sabe previamente quantas vezes o comando deve ser repetido, ou seja, você sabe quantas vezes o programa deve executar determinada tarefa.

O outro tipo de repetição seria a não programada, a repetição não programada se dá quando não sabemos o número de vezes que um determinado comando deve ser repetido, ou seja, ele não tem um número exato de interações (repetições).

Ao fazer essa repartição, fica mais claro quando usamos uma estrutura ou outra não é mesmo? Se analisarmos a sintaxe do comando Para, iremos observar que ele se parece muito o conceito de repetição programada, pois no Para indicamos um ponto inicial e um ponto final que resulta em um certo número de interações (repetições), veja o exemplo:

Sintaxe da estrutura Para:
Para variavel <--- (numero incial) até (numero que o valor incial vai alcançar) Faça
        //bloco de comandos
Fim_para 
Aplicação real para a estrutura Para:
Para i <--- 0 até 10 Faça
        Escreva "Meu nome é Guilherme"    
Fim_para 

No exemplo acima o comando Escreva vai ser executado 10 vezes, já que começamos do número 0 e mandamos repetir até que a variável i obtivesse valor igual a 10. O que isso quer dizer? Quer dizer que quando escrevemos o Para já sabemos o número de vezes que o comando deve ser repetido.

Mas é quando não sabemos quantas vezes um determinado comando deve ser repetido? Ou quando queremos que um comando seja repetido até que um determinado número seja digitado? Quando temos alguma dessas duas ocorrências devemos usar a estrutura de repetição Enquanto.

A estrutura Enquanto diz que, um bloco de comando deve ser repetido enquanto a expressão for verdadeira. Veja o exemplo:

Sintaxe da estrutura Enquanto:
Enquanto <expressão> Faça
        //bloco de comandos
Fim_enquanto
Aplicação real para a estrutura Enquanto:
Enquanto i <> 0 Faça
        Escreva "digite um numero"
        Leia i
Fim_enquanto

O código acima irá executar enquanto o usuário digitar um número diferente de 0, ou seja, se ele digitar 0 a estrutura de repetição Enquanto é encerrada.

Por fim temos a estrutura de repetição Repita. Essa estrutura segue a mesma lógica que a estrutura de repetição Enquanto. Só que o Repita primeiro executa o bloco de comandos para depois verificar a expressão. O Repita é executado enquanto a expressão for verdadeira. Veja o exemplo:

Sintaxe da estrutura Repita:
Repita
        //bloco de comandos
Enquanto <expressão> Fim_repita

Aplicação real para a estrutura Repita:
Repita
        Escreva "Digite um número"
        Leia i
Enquanto i <> 0 Fim_repita 

Pessoal abaixo temos exemplos de como usar as 3 estruturas de repetição em linguagens de programação:

Java:

Para:
for(int i = 0; i < 10; i++) {
    System.out.println("Estrutura de repetição Para em Java");
}

Enquato:
int i = 0;
while(i < 10) {
    Sytem.out.println("Estrutura de repetição Enquanto");
    i++;
}

Repita:
int i = 0;
do {
Sytem.out.println("Estrutura de repetição Enquanto");
i++;
}while(i < 10);

C++

Para:
for(int i = 0; i < 10; i++) {
    cout << "Estrutura de repetição Para" << "\n";
}

Enquanto:
int i = 0; 
while(i < 10) {
    cout << "Estrutura de repetição Enquanto" << "\n";
    i++;
}

Repita:
int i = 0; 
do {
    cout << "Estrutura de repetição Repita" << "\n";
    i++;
} while(i < 10);

C

Para:
int i = 0;
for(i = 0; i < 10; i++) {
    printf("Estrutura de repetição Para \n");
}

Enquanto:
int i = 0;
while(i < 10) {
    printf("Estrutura de repetição Enquanto");
    i++;
}

Repita:
int i = 0;
do {
    printf("Estrutura de repetição Repita");
    i++;
} while(i < 10);

Todos os códigos foram compilados e funcionam perfeitamente, se você quiser algum outro exemplo em uma outra linguagem de programação deixe um comentário ou envie um e-mail solicitando o exemplo. Lembrando que você pode deixar um comentário pedindo uma explicação sobre um outro assunto assim como pode enviar um e-mail com a mesma finalidade!

E-mail: guilherme_1994_gui@hotmail.com   

segunda-feira, 26 de março de 2012

Aplicação do MOD e DIV

Olá pessoal, vamos atualizar nosso blog? :-)

Depois de um longo período sem postagens novas resolvi liberar 2 novos assuntos para o pessoal que está quebrando a cabeça com os comandos MOD e  DIV.

Vamos tratar primeiramente do comando MOD. O que seria o comando MOD? Para que usamos? Onde usá-lo? Vamos descobrir aqui agora!

Quando fazemos uma divisão temos o quociente e o resto, o comando MOD realiza a divisão do numero e retorna o resto dessa divisão, abaixo temos as propriedades de uma conta de divisão:


No exemplo acima o MOD seria igual a 0 (zero). Mais como isso ficaria em um algoritmo?:
variavel <--- 20 MOD 2

OK entendi o que o MOD faz e como ele faz, mas quando devemos usá-lo?

O MOD pode ter aplicação nos seguintes problemas:
  • Saber se um número x é múltiplo de um número y
  • Quebrar um número por casas decimais
  • Saber se número x é par ou ímpar
Beleza pessoal, sabemos que o MOD retorna o resto da divisão inteira de um numero, mais e o DIV? O que o comando DIV faz? Para que serve? Onde usamos?
O comando DIV vai nos retornar o quociente da divisão, exemplo:
variavel <--- 20 DIV 2

O valor retornado pelo comando acima é 10, a aplicação do DIV é saber o valor da divisão entre dois números, nada muito além disso mesmo!

Bom pessoal, post encerrado e até a próxima. Podem deixar comentários como dúvidas, sugestões. Flw!!!

sexta-feira, 16 de março de 2012

Qual a diferença entre C e C++

Olá pessoal, hoje vamos entender de vez qual a diferença entre a linguagem C e a linguagem C++.

Muita gente acha que C e C++ são a mesma coisa, que se eu estou programando em C teoricamente eu estou programando em C++ e vice-versa. Pessoal isso não é verdade.

O que é de fato verdade é que o C++ é equivalente a linguagem C + o paradigma de orientação a objetos, ou seja, é um C turbinado. Isso não quer dizer que você vai pegar um código em C e ele vai conseguir rodar perfeitamente em um projeto C++ e pior ainda, é você pegar um código C++ e tentar executar em um projeto C.

Por isso quando criamos um novo projeto, temos que ficar atentos ao tipo de linguagem que definimos. Todo código em C++ tem a extensão (*.cpp), e todo código em C tem a extensão (*.c).

Abaixo alguns exemplos de possíveis erros que podem vir a acontecer, caso o código seja de uma linguagem e o tipo do projeto seja de outro:

CÓDIGO C - PROJETO C++
/*
 *não dá erro de compilação, mais não serve para nada porque o c++ não
 *reconhece essas bibliotecas 
 */
#include <stdio.h> 
#include <stdlib.h> 

int main()
{
    getche(); //erro, porque getche() não é um comando interno de C++
    getch(); //erro, porque getch() não é um comando interno de C++
} 

CÓDIGO C++ - PROJETO C
//erro c não contem a biblioteca <iostream>
#include <iostream>  

int main()
{
    cout << "Blog programando"; //C não reconhece o comando cout    
}

Bom pessoal, aqui termina mais um post. Espero que vocês tenham entendido qual a diferença entre C e C++, e que possam a partir de agora criar projetos de acordo com a linguagem.

Dúvidas, sugestões e informações lembre-se de deixar um comentário. :)

segunda-feira, 5 de março de 2012

Funções em C              ----------->                    Parte.2

Fala galera, na parte.1 do Post "Funções", vimos como é que fazemos para montar funções que não possuim retorno, ou as chamadas funções VOID. Agora vamos aprender como montar uma função que retorna algo para quem a chama. Por exemplo, poderiamos ter o seguinte código para calcular a média aritmética de um aluno da sala de ADS:
#include <stdio.h> 
int main() {
     
    float nota1, nota2, nota3, media;
    printf("Informe as notas do aluno Xis\n:");    
    scanf("%f%f%f", &nota1, &nota2, &nota3);
    media = (nota1 + nota2 + nota3) / 3;
    printf("\n\nMédia do aluno: %f", media);
        /*           * Acho que vc deve estar de perguntando, cade o system("PAUSE");?      * Eu estou programando no sistema Operacional Linux na ferramenta Geany          * A tela trava sozinha, mais vc que está com o Windows e usando o Dev C++          * Lembre-se do #include <stdlib.h> e system("pause"); =D      */          return 0; }

Mas e se eu quiser montar uma função para calcular essa média? Sabemos que com funções o código fica mais elegante e bem mais legível. Vamos ilustrar uma possível aplicação para essse problema:
#include <stdio.h> 

//tipo da função deve ser o mesmo que ela retorna por exemplo: 
//se a função retornar 1 então teremos: 
//int calculaMedia(float n1, float n2, float n3) 

float calculaMedia(float n1, float n2, float n3) {     
    float pokemon;     
    pokemon = (n1 + n2 + n3) / 3;        
    return pokemon; 

} 

int main() {  
   
    float nota1, nota2, nota3, media;     

    printf("Informe as notas do aluno Xis\n:");     
    scanf("%f%f%f", &nota1, &nota2, &nota3);     

    media = calculaMedia(nota1, nota2, nota3);

    //chamada da função, passando os valores solicitados por ela
    //variavel media armazena o resultado que a função retorna     
    
    printf("\n\nMédia do aluno: %f", media);     

    /*
     * Acho que vc deve estar de perguntando, cade o system("PAUSE");?      
     * Eu estou programando no sistema Operacional Linux na ferramenta Geany      
     * A tela trava sozinha, mais vc que está com o Windows e usando o Dev C++      
     * Lembre-se do #include <stdlib.h> e system("pause"); =D */   

     return 0; 
}  

No começo não faz muito sentindo o uso da função, já que o código pode ser todo escrito no corpo do MAIN e podemos escrever blocos de códigos utilizando a programação PORCEDURAL (goto e labels). Mais com o tempo você perceberá a vantagem de se dividir o código em pedaços distintos.  Bom pessoal, aula de funções parte.2 já era. Resta a parte.3 para fecharmos com chave de ouro. A parte três detalhará melhor a passagem de valores entre as funções (parâmetros / argumentos), vamos fazer também funções chamarem outras funções.
Até a próxima. Vlw =D

Funções em C              ----------->                    Parte.1

Funções são usadas para criar pequenos pedaços de códigos separados do programa principal. Em C/C++, tudo, na verdade, é uma função. INT MAIN (VOID) é uma função, por exemplo.
Exceto a função MAIN, todas as outras funções são secundárias, o que significa que elas podem existir ou não.
Então, qual a vantagem de fazermos uma função?
Funções são importantes porque elas retornam valores, ajudam a fragmentar o código em partes menores - mais fáceis de lidar - e ainda por cima podem ser utilizadas mais de uma vez no mesmo programa, poupando preciosos minutos de programação e inúmeras linhas de código.

Criando funções sem argumentos

Em C/C++ as funções podem ter ou não argumentos. Primeiramente, veremos as funções sem argumentos.
Funções são como variáveis que guardam inúmeras linhas de código. Se não prototipadas*, elas devem ser escritas antes da função MAIN, afim de serem compiladas primeiro para poderem ser utilizadas pela função main.

Post sobre prototipagem.

Como haviamos dito, funções são como variáveis. Então, criamos uma função indicando o tipo de retorno (saída) que será int, float, etc...Nomeamos a função (valem as mesma regras das variáveis, ex.: Não começa nomes de funções com número) e terminamos colocando entre parênteses os argumentos. Como nossas primeiras funções não terão argumentos entre parênteses usaremos VOID (do inglês VAZIO). Todo o código da função deve estar dentro de um bloco de instrução ( { } ), mesmo que haja apenas uma linha.
Obs.: Não se usa ponto-e-vírgula no final da criação da função.

Como a na função que usaremos não retornará nenhum valor porque a única coisa que ela faz é mostrar uma mensagem na tela. Ela terá o tipo de retorno vazio também - void.
Após a função ser criada, basta chamarmos a função dentro da função principal MAIN.
Para chamá-la, apenas digitamos o nome da função e entre parênteses colocamos seus argumentos. Como esta função não tem argumentos, simplesmente colocamos nada entre os parêntese.

#include <stdio.h>

void pokemon(void)
{
    printf("\n\nEu programo usando função, goto é para os fracos =D");
    return;
}

int main()
{
    printf("\nEu sou uma função primaria, portanto sou eu quem é executada primeiro");    
    pokemon(); //chamada da função
    printf("\n\nEu sou o main portanto eu encerro o programa");
    /*
     * Acho que vc deve estar se perguntando, cade o system("PAUSE");?
     * Eu estou programando no sistema Operacional Linux na ferramenta Geany
     * A tela trava sozinha, mais vc que está com o Windows e usando o Dev C++
     * Lembre-se do #include <stdlib.h> e system("pause"); =D
     */
    return 0;
}
Bom pessoal parte 1, encerrada aqui vimos como programar utilizando funções que não recebem argumento (parâmetros) e que não retornão nada para quem os chamou. No próximo Post vamos aprender a fazer funções que retornam valores para quem a chama e posteriormente, aprenderemos como trabalhar com passagem de parâmetros (argumentos) por funções.
Até mais pessoal...

Usando goto e labels em C

Os rótulos (labels) e saltos (goto) são lembranças da época em que a programação era totalmente procedural. Esta forma de programar não é mais praticada, mas ainda há como fazer.

Primeiramente marcamos uma linha do código com um rótulo (também conhecido como label) e toda vez que quisermos voltar ou seguir até tal linha apenas indicamos onde o programa deve seguir.

Em C / C++ para indicarmos um rótulo (label) escrevemos um nome no local que desejamos marcar. Para ir até este local usamos o comando GOTO.

O rótulo (label) é indicado pelo uso de dois pontos (:) no final da linha.

GOTO é um comando como qualquer outro. Portanto, deve-se terminar a linha com um ponto-e-vírgula (;).

Exemplo:

rotulo :

código

goto rotulo;

#include <stdio.h>

int main()
{
    int nro;
    
    inicio:
    printf("\nInforme um numero par: ");
    scanf("%d", &nro);
    
    if(nro % 2 == 1)
    {
        goto inicio;
    }
    else
    {
        goto final;
    }
    
    final:
    printf("\n\n Fim da execução do programa");
    return 0;
}

Como podemos ver, isso era utilizado antigamente na programação. Hoje em dia, utilizamos outras formas para programar como paradigmas conhecidos como Orientação a Objeto e Orientação a Eventos, ou ainda estrutural que se utiliza de funções para realizar as tarefas. Programação com funções é o assunto do nosso próximo Post.

Novidade!!! Agora vamos ter canal no Youtube =D

Fala pessoal tudo beleza, estou sumido a correria está forte por aqui. Estou querendo dar um start em um projeto antigo que vem desde o temp...