Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Programa: Criando um menu usando funções em C

Para ilustrar bem o uso das funções, vamos repetir um exercício que fizemos quando estudamos testes condicionais e laços.

Aqui, vamos criar um aplicativo em C que exibe algumas frases e invoca funções.

Clique aqui e saiba como obter seu certificado de programação C! Entre já no Mercado de Trabalho!

Exemplo de código em C

Crie um programa em C que exiba um menu e converse com o usuário.

Vamos exibir um menu, com algumas saudações, para o usuário escolher.
Essa opção ficará armazenada na variável inteira 'continuar', que também será usada como condição para que o laço DO WHILE ocorra.

Assim, caso o usuário digite 0, ele vai sair do programa.
Caso ele digite qualquer outro número, a opção é tratada pelo teste condicional SWITCH.

Bem, se você estudou todas as aulas de nosso curso, sobre testes e laços, você já é um mestre.
Então não precisamos entrar muito em detalhes, apenas olhando para o código você já nota o que está acontece.

Nosso foco aqui é nas funções.
Note o SWITCH e seus cases, como ficaram menor, mais organizados e bonitos.

#include<stdio.h>

void oi()
{
    printf("Oi!\n");
}

void tudo_bem()
{
    printf("Tudo otimo, e com voce?\n");
}

void familia()
{
    printf("Meus bits...digo, minha familia vai bem!\n");
}

void sair()
{
    printf("Ja vai??? Nao! Nao! Espere! Naa...\n");
}


int main()
{
    int continuar=1;

    do
    {
        printf("\n\tChat Foreve Alone\n\n");
        printf("1. Oi\n");
        printf("2. Tudo bem\n");
        printf("3. Como vai a familia\n");
        printf("0. Sair\n");

        scanf("%d", &continuar);
        system("cls || clear");

        switch(continuar)
        {
            case 1:
                oi();
                break;

            case 2:
                tudo_bem();
                break;

            case 3:
                familia();
                break;

            case 0:
                sair();
                break;

            default:
                printf("Digite uma opcao valida\n");
        }
    } while(continuar);
}

Bacana, essas funções, não?



33 comentários:

Anônimo disse...

Otima explicação, obrigado.

Anônimo disse...

Muito legal!!! Parabéns pelo Ótimo site!!! e Obrigado por disponibilizar esse ótimo curso!!! Obrigado!!!

Anônimo disse...

Excelente site! explicação muito clara e objetiva. Parabéns pelo trabalho e obrigado por disponibilizar para nós.

Murilo Almeida

Unknown disse...

Desculpe, mas porque você teve que declarar que a variável continuar fosse igual a 1?

Anônimo disse...

Sou meio leigo no assunto, mas por que voce declarou a variável continuar=1 ?

Anônimo disse...

Continuar está ali para criar um loop, caso vc queira continuar no programa, ele pede pra vc digitar um valor que será o continuar, se for igual a 1, ele continua.

Anônimo disse...

Muito bom o exemplo!

Anônimo disse...

Ali no if continua=1

não seria
if continua==1?








/

Apostila C Progressivo disse...

Olá Anônimo,

Na verdade ali não é um if e sim um int.

Fábio Pavan disse...

Eu adaptei o código da seguinte maneira:
[b]#include
#include

int main() {
int continuar;
printf("\n\tQual pessoa voce e, digite o numero\n\n");
printf("1. Fabio Pavan\n");
printf("2. Vinicius Melegari\n");
printf("3. Luiz Godinho\n");
printf("4. Alessandro Pavan\n");
scanf("%d", &continuar);

if (continuar == 1) {
printf("\nOla, voce e o N.E.R.D que me criou.\n");
}

if (continuar == 2) {
printf("\nERRO: TROLL DETECADO! SOBRECARGA NO SISTEMA!\n");
}

if (continuar == 3) {
printf("\nTa mais baixo que o Vinicius.\n");
}

if (continuar == 4) {
printf("\nUm retardado jogador de League of Legends (lol)\n");
}

system("pause");
}[b]

Anônimo disse...

Que legal, está sendo muito útil para mim. Sucesso aí pessoal! Obrigadoooo

Justiceitos Jurassicos disse...

Quando eu uso qualquer opção o programa para de funcionar.O que pode ser isso ?
Se tiver algum tópico no fórum, por favor, me passe o link.

monia tavares disse...

muito bom, o cod ficou bem organizado e bonito...fora a criatividade hehehehe,
da ate pra criar menus bem engraçados, e brincar com as funções.
muito legal

monia tavares disse...

o continuar =1 é pela questão lógica. como é um laço, se o usuario digitar 0 , ele entendera como 0 = false, e portanto encerrará o laço do while. se digitar 1, 2,3, a condição será true e o laço continuará. lembrando que qualquer numero sera considerado true ,menos o zero.

Vinicius Gajo disse...

O meu tambem programa esta dando erro na hora de compilar, qual o problema no codigo?

#include
#include

void Oi()
{
printf("Iaew fera\n");
}

void bem()
{
printf("Tudo bem, e com vc\n");
}

void sair()
{
printf("Entao ate mais tarde\n");
}

int main()
{
int continuar=1;

printf("\n\tChat\n");
printf("1- Ola\n");
printf("2- Tudo bem\n");
printf("3- Tenho que sair\n");

scanf("%d", continuar);
system("cls || clear");

switch(continuar)
{
case 1:

Oi();
break;

case 2:

bem();
break;

case 3:

sair();
break;

default:

printf("Codigo invalido.\n");
break;
}
}

Anônimo disse...

Gostaria de saber como criar um menu com matriz. (corretamente)
eu tentei criar e deu certo porem nao consigo acessa lo.


ao digitar a opção o programa fecha
isso começou a acontecer dps que adicionei a matriz na função.
existe alguma outra forma de fazer isso?
obrigado

ex: void adm(float x[][3])
{
MENU usando a matriz....
}
int main ()
{
int op;
do{
printf("1- modo adm");
printf("2-sair");
scanf("%d",&op);
switch(op)
{
case 1:
adm(x);
break;
case2:
printf("encerrando");
break
}while(op!=2);
getch();
}

Anônimo disse...

Por que ao digitar '0' o programa fecha?

OracleNews disse...

O #include não está completo

experimente colocar
#include
#include

e recompilar o programa.

Anônimo disse...

Faltou e '&' antes da variável continuar, no seu programa.

Unknown disse...

Vinicius Gaio, você esqueceu quem na função "scanf("%d",continuar)" você tem que colocar o sinal "&" antes da variavel "continuar".

Anônimo disse...

o laço de repetição...

Anônimo disse...

Vinicius Gaio, sei que é um pouco tarde pra resposta, mas eu to fazendo o curso agora, kkk, mas enfim. O erro no seu código é porque está faltando o "&" no scanf(). E também, apesar de não ser um erro, você poderia ter colocado tudo isso num laço while, pra o menu ser repetido até o usuário querer sair.

Anônimo disse...

se o programa estiver parando, experimenta colocar a valor na variável de entrada que seja diferente da opção de saída, isso na hora de indicar

Anônimo disse...

ele colocou o valor da variável de entrada para receber 1, para não acontecer dela ficar igual a opção de saída do case

Unknown disse...

Bela explicação.

Antonio disse...

Quando eu uso system("clear"), o programa roda, mas aparece a mensagem: TERM environment variable not set. O que seria?? 'cls' também não funciona. (To usando XCode OSX.)

Variedades Históricas disse...

Meio tarde mas , se alguém ainda precisar da resposta, tem que incluir a biblioteca #include dai o system ("cls||clear") funcionará.

Unknown disse...

boas pessoal, tenho aqui um codigo e preciso de fazer os menus, para a media, maior, menor, ordenar e depois sair, podem me ajudar, tou começando a programar e nao estou a perceber esta parte

#include
float media (int *vetor, int n) {
int i, soma=0;
for (i=0; imax)
max=vetor[i];
return max;
}
int menor (int *vetor, int n) {
int i, min=vetor[0];
for (i=1; ivetor[j]){
temp= vetor [i];
vetor[i]=vetor[j];
vetor[j]=temp;
}
}
int main (){
int i, num []={3,6,1,4,2};
printf ("media:%.1f\n", media(num, 5));
printf ("maior:%i\n", maior (num, 5));
printf ("menor:%i\n", menor (num, 5));
ordena (num, 5);
printf ("vetor ordenado:");
for (i=0; i<5; i++)
printf ("%i\t", num[i]);
return 0;
}

desde ja obrigado!!!

Anônimo disse...

fiz o meu código encima desse :
#include
#include

#include "programa1.cpp"
#include "programa2.cpp"
#include "programa3.cpp"
#include "programa4.cpp"
#include "programa5.cpp"
#include "programa6.cpp"
#include "programa7.cpp"
#include "programa8.cpp"
#include "programa9.cpp"
#include "programa10.cpp"

int sair();


void menu(void){

int MENU=1;

do
{
printf("\n\t\t-| Menu de Programas |-\n\n");
printf("\t1. Programa 1\n");
printf("\t2. Programa 2\n");
printf("\t3. Programa 3\n");
printf("\t4. Programa 4\n");
printf("\t5. Programa 5\n");
printf("\t6. Programa 6\n");
printf("\t7. Programa 7\n");
printf("\t8. Programa 8\n");
printf("\t9. Programa 9\n");
printf("\t10. Programa 10\n");
printf("\t0. Sair\n");
printf("\n\tQual Programa você quer ? \n");

scanf("%d", &MENU);
system("cls || clear");

switch(MENU)
{
case 1:
prog1();system("pause");
break;

case 2:
prog2();system("pause");
break;

case 3:
prog3();system("pause");
break;

case 4:
prog4();system("pause");
break;

case 5:
prog5();system("pause");
break;

case 6:
prog6();system("pause");
break;

case 7:
prog7();system("pause");
break;

case 8:
prog8();system("pause");
break;

case 9:
prog9();system("pause");
break;

case 10:
prog10();system("pause");
break;

case 0:
sair();
break;

default:
printf("Digite uma opcao valida\n");
}
}while(MENU!=0);

}
int sair(){

return 0;
}

Fabecas Cunha disse...

Ouve Vinicius Gajo, tu tens de indicar qual é a tua função, por isso é que te está a dar erro. No #include tens de colocar à frente o nome da tua função.

Fabecas Cunha disse...

Vinicius Gaio, isto era o que eu te estava a dizer mostrando no teu código.

#include
#include

void Oi()
{
printf("Iaew fera\n");
}

void bem()
{
printf("Tudo bem, e com vc\n");
}

void sair()
{
printf("Entao ate mais tarde\n");
}

int main()
{
int continuar=1;

printf("\n\tChat\n");
printf("1- Ola\n");
printf("2- Tudo bem\n");
printf("3- Tenho que sair\n");

scanf("%d", continuar);
system("cls || clear");

switch(continuar)
{
case 1:

Oi();
break;

case 2:

bem();
break;

case 3:

sair();
break;

default:

printf("Codigo invalido.\n");
break;
}
}

Anônimo disse...

Eu não sei como vou usar o mostrar o menu na nem o usuário.

Anônimo disse...

oi estou começando agora não acerteu fazer o menu de opçao