Tem interesse em fazer o curso do pré-básico ao pós-avançado? Lançamos o curso definitivo de Linguagem C, que abrange toda a linguagem e muito mais, com acesso vitalício, mais de 46 horas de conteúdo e certificado de conclusão! Confira: go.hotmart.com/N48026554Y Venha se tornar um programar profissional!
assistindo em maio de 2021... professor nota 1000, recomendo a todos que querem aprender de forma profissional... estou embalando na linguagem se Deus quiser, chego la. minha implementação foi incluir funcao rand(), para gerar os numeros da chave, manter o laco for apenas para ir gerando as somatorias, deixei por conta do usuario informar as variacoes da chaves, pq ja vai servir pro meu filho aprender a somar, usando programa desenvolvido por nos aqui... top valeu Wagner
Obrigado Jairo! Não deixe de acompanhar o lançamento do nosso curso de Linguagem C em julho desse ano. É um curso que irá até o pós avançado, vamos formar programadores profissionais do zero.
Maneiro, seri bem legal, pegar algumas questões matemáticas ex: Equações, funções para exercitar mais if, else ou outras unções um pouquinho mais avançadas... Tipo pegar um problema real em que a matemática ajude e passar isso par algoritmo.
Rafael Mascarenhas Costa , pode utilizar sim. Aí nesse caso o laço for é desnecessário. O jogo fica mais interessante, só não implementei assim porque ainda não ensinei a função neste curso. Mas é uma ótima ideia!
Prof° Rambo, Ao usar a função toupper(getche()); no DEV não foi possivel compilar. Pode ser alguma atualização do programa ou coisa do gênero? E para que não ficasse sem projeto da aula utilizei apenas o scanf e foi feito os testes no switch. Aguardo sua resposta
Olá Halysson! Você utiliza o Windows 10? Acredito que o DEVC++ não seja totalmente compatível com esta versão de Windows. Sugiro que instale o Code Blocks para acompanhar as aulas.
+Mikhael de Paula OLiveira , na linguagem C é menos usual mesmo, porque há outras formas de efetuar desvio incondicional. Mas o goto pode ser usado sem problema. Alguns programadores acham ruim o uso demasiado até mesmo no Assembly e nunca sabem dizer a razão exata.
esse "go to" é um correspondente ao 'jump' do assembly mips. Não entendi o motivo de condenarem seu uso: é realmente muito útil. Eu, por estar usando assembly MIPS na faculdade, não vejo (ainda) problemas em usar o "go to". Abrç Wagner.
vou deixar o codigo #include #include #include /* palavra comando; comando; comando; goto comeco; */ int main(int argc, char *argv[]) { int i = 2, j = 1, resposta; char opcao; char ultimato; int erros = 0, acertos = 0; inicio: for(j = 1; j < 11; j++) { printf("Qual a resposta de %d x %d? ", i, j); scanf("%d", &resposta); if(resposta != (i * j)) { printf(" Resposta errada! "); erros++; } else if(resposta == (i * j)) { acertos++; printf("Resposta certa! ");
}
} //end for printf("Acertos: %d Erros: %d ", acertos, erros); meio: printf("Continuar respondendo? S- sim, N - nao: "); opcao = toupper(getche()); getchar(); printf(" "); switch(opcao) { case 'S': i++; goto inicio; break; case 'N': goto fim; break; default: printf("Opcao invalida "); goto meio; } //end switch fim: printf("Poxa, entao isso eh um adeus, nao salvo memoria, essa sera a ultima vez que vai me ver :( ") ; printf(" Tem certeza: "); duvida: ultimato = toupper(getche()); getchar; switch(ultimato) { case 'S': printf(" Ta bom entao, vou achar alguem que me valorize ;( "); break; case 'N': printf(" Sabia que me amava "); goto inicio; break; default: printf(" Nao entendi, repita e seja sincero(a)! "); goto duvida;
meu compilador fala q esta errado mas n to vendo nenhum erro. #include #include #include int main(int argc, char** argv) { int a=1, b=0, resposta; int erros=0, acertos=0; inicio:
+Gosmazul play , o que observei foi a falta de ponto-e-vírgula depois de "erros++" e "acertos++". E também em "scanf("%d", %resposta);" o correto é "scanf("%d", &resposta);" Procure sempre tentar ler e interpretar os erros que o compilador demonstra na saída.
Bom dia Wagner, como sempre aulas excelentes! Parabéns! Não estou conseguindo compilar o código. Olhei para vários pontos mas não consigo encontrar o erro Poderia me ajudar? #include #include #include /* Declaração GOTO Estrutura básica comeco: comando; comando1; comando2; goto comeco; */ // Jogo da Soma int main(int argc, char *argv[]) { // Declaração de variáveis int i,j,resposta,acertos,erros; i = 0; j = 1; erros = 0; acertos = 0; char opcao;
printf("JOGO DA SOMA!! "); // Cabeçalho inicio: // Rótulo para o comando GOTO dar um salto e o programa ficar nesse loop sempre que o usuário quiser for (j = 1; j < 10; j++) // Será executado esse laço 9 vezes e cada vez incrementando a variável J em 1. { printf("A soma de %d + %d eh? ", i, j); scanf("%d",&resposta); getchar(); if (resposta != (i+j)) // Condição a ser testada, DIFERENTE de i+j { printf("Resposta errada! "); erros++; } else { printf("Resposta correta! "); acertos++; } } printf("Acertos = %d ",acertos); printf("Erros = %d ",erros);
meio: // rótulo para o comando GOTO printf("Continuar respondendo? s-sim ou n-nao: "); /* faz a leitura do teclado atribuindo a variável opcao e os caracteres digitados são convertidos em maiúsculo pelo comando TOUPPER da biblioteca CTYPE.H. */ opcao = toupper(getche());
getchar(); printf(" "); switch (opcao) // Verificando a opção do usuário se continua ou não { case 'S': i++; goto inicio; // vai para o início e fica no loop break; case 'N': goto fim; // salta para o fim do programa break; default: // se o usuário digitar algo que não seja S ou N printf("Opcao invalida "); goto meio; // retorna a pedir ao usuário uma opção válida } fim: system("PAUSE"); return 0; }
Consegui descobrir o erro. Estava no arquivo Makefile e estava conflitando com o arquivo "main.o". Tive que apagar o arquivo e compilar de novo e deu certo.
Salve wagner, gostei mt, ta me ajudando bastante as aulass! valeuu, mas estou com um erro que nao encontrei no meu codigo, na verdade até roda o programa, mas quando vou colocar a reposta, ele nao responde, se puder me ajudar! se tiver tbm alguma video aula de ponteiros, agradeço! #include #include #include /* fazer um programa e depois retornar para o comeco; comeco: comando: comando 2 comando 3 e depois retorna para o comeco" usando o comando" goto comeco */ main() { int i=0, j=1 , resposta; int erros = 0, acertos = 0; char opcao; inicio: for(j =1; j < 10; j++) { printf("Qual a resposta %d + %d ? ",i,j); scanf("%d",resposta); getchar(); if(resposta != (i + j) ) { erros++; printf("Resposta errada! "); } else { acertos++; printf("Resposta correta! "); }//end if }//end for printf("Acertos = %d ",acertos); printf("Erros = %d ",erros); meio: printf("Continuar respondendo? s - sim, n - nao:"); opcao = toupper (getche()); getchar(); printf(" "); switch(opcao) { case 'S': i++; goto inicio; break; case 'N': goto fim; break ; default: printf("opcao invalida, Digite 'S' para sim ou 'N' para nao ! "); goto meio; }//end switch fim: return 0; }
Tem interesse em fazer o curso do pré-básico ao pós-avançado? Lançamos o curso definitivo de Linguagem C, que abrange toda a linguagem e muito mais, com acesso vitalício, mais de 46 horas de conteúdo e certificado de conclusão! Confira: go.hotmart.com/N48026554Y
Venha se tornar um programar profissional!
Aprendi mais C nesse canal do que no meu técnico no Senai
assistindo em maio de 2021...
professor nota 1000, recomendo a todos que querem aprender de forma profissional...
estou embalando na linguagem se Deus quiser, chego la.
minha implementação foi incluir funcao rand(), para gerar os numeros da chave, manter o laco for apenas para ir gerando as somatorias, deixei por conta do usuario informar as variacoes da chaves, pq ja vai servir pro meu filho aprender a somar, usando programa desenvolvido por nos aqui...
top valeu Wagner
Obrigado Jairo! Não deixe de acompanhar o lançamento do nosso curso de Linguagem C em julho desse ano. É um curso que irá até o pós avançado, vamos formar programadores profissionais do zero.
Estou aprendendo muito!!! Comecei hoje: 17/03/2021
Melhor professor que já vi
Muito TOP!!!! Estou aprendendo tudo em cada aula que assisto e pratico!!!! Vlw professor!!!
super curti!! vo tentar fazer um parecido aqui em casa
Valeu Rafael!
vc é louco esse WR Kits é sensacional!!!!!!!!!!!!!!!
nota 10 essa aula perfeita
suatland , valeu muito obrigado!!
TOP !!! ESTUDANDO EM 09/10/20.
show de bola
+rodrigocunha1980 , obrigado!
show de bola jato compartilhando o canal
+Fernando hanson , muito obrigado!
Usei esse método para fazer com outras operações, a aula ajudou muito.
+Naruto Uzumaki , que ótimo, nos acompanhe sempre!
Maneiro, seri bem legal, pegar algumas questões matemáticas ex: Equações, funções para exercitar mais if, else ou outras unções um pouquinho mais avançadas... Tipo pegar um problema real em que a matemática ajude e passar isso par algoritmo.
+Rafael Santana , obrigado pela audiência e sugestões, nos acompanhe sempre!
Daria pra colocar a função rondom pra definir os valores de i e j?
Rafael Mascarenhas Costa , pode utilizar sim. Aí nesse caso o laço for é desnecessário. O jogo fica mais interessante, só não implementei assim porque ainda não ensinei a função neste curso. Mas é uma ótima ideia!
Ah é, vc implementou no curso de PIC, né? Muito bom seus vídeos!
Parabéns
Rafael Mascarenhas Costa , isso mesmo, já utilizamos no curso de PIC. Obrigado pelos elogios! Continue nos acompanhando e compartilhando o conteúdo!
Prof° Rambo,
Ao usar a função toupper(getche()); no DEV não foi possivel compilar. Pode ser alguma atualização do programa ou coisa do gênero? E para que não ficasse sem projeto da aula utilizei apenas o scanf e foi feito os testes no switch.
Aguardo sua resposta
Olá Halysson! Você utiliza o Windows 10? Acredito que o DEVC++ não seja totalmente compatível com esta versão de Windows. Sugiro que instale o Code Blocks para acompanhar as aulas.
Utilize o Falcon C++ é ótimo!
bom dia, o meu código, esta dando apenas respostas erradas, não consigo encontrar o erro?
#include
#include
/*
comeco:
comando;
comando2;
comando3;
goto comeco;
*/
int main (int argc, char *argv[])
{
int i = 0, j = 1, resposta;
int erros = 0, acertos = 0;
char opcao;
inicio:
for(j = 1; j < 10; j++)
{
printf ("Qual a resposta %d + %d?", i, j);
scanf ("%d, &resposta");
getchar();
if(resposta != (i + j))
{
erros++;
printf ("Resposta errada!
");
}
else
{
acertos++;
printf ("Resposta coreta!
");
}//end if
}//end for
printf ("Acertos = %d
", acertos);
printf ("Erros = %d
", erros);
meio:
printf ("Continuar respondendo? s - sim, n - não: ");
opcao = toupper(getche()); // colocar tudo em maioculas e o getcher asemelha ao scanf
getchar(); // limpar o bufeer
printf ("
");
switch (opcao)
{
case 'S':
i++;
goto inicio;
break;
case 'N':
goto fim;
break;
default: // barreira contra idiotas!
printf("Opcao invalida
");
goto meio;
}//end switch
fim:
system("pause");
return 0;
}//end programa
Welington Ribeiro , stdlib e stdio estão inclusas no projeto?
porque alguns programadores nao gosta do goto ?
+Mikhael de Paula OLiveira , na linguagem C é menos usual mesmo, porque há outras formas de efetuar desvio incondicional. Mas o goto pode ser usado sem problema. Alguns programadores acham ruim o uso demasiado até mesmo no Assembly e nunca sabem dizer a razão exata.
esse "go to" é um correspondente ao 'jump' do assembly mips. Não entendi o motivo de condenarem seu uso: é realmente muito útil. Eu, por estar usando assembly MIPS na faculdade, não vejo (ainda) problemas em usar o "go to".
Abrç Wagner.
Valeu! Lógico que é útil. É coisa de programadoras de linguagens fofinhas.
Eu fiz um de multiplicação e tem um pequeno dialogo ;)
vou deixar o codigo
#include
#include
#include
/*
palavra
comando;
comando;
comando;
goto comeco;
*/
int main(int argc, char *argv[])
{
int i = 2, j = 1, resposta;
char opcao;
char ultimato;
int erros = 0, acertos = 0;
inicio:
for(j = 1; j < 11; j++)
{
printf("Qual a resposta de %d x %d? ", i, j);
scanf("%d", &resposta);
if(resposta != (i * j))
{
printf(" Resposta errada!
");
erros++;
}
else if(resposta == (i * j))
{
acertos++;
printf("Resposta certa!
");
}
} //end for
printf("Acertos: %d Erros: %d ", acertos, erros);
meio:
printf("Continuar respondendo? S- sim, N - nao: ");
opcao = toupper(getche());
getchar();
printf("
");
switch(opcao)
{
case 'S':
i++;
goto inicio;
break;
case 'N':
goto fim;
break;
default:
printf("Opcao invalida
");
goto meio;
} //end switch
fim:
printf("Poxa, entao isso eh um adeus, nao salvo memoria, essa sera a ultima vez que vai me ver :(
") ;
printf(" Tem certeza: ");
duvida:
ultimato = toupper(getche());
getchar;
switch(ultimato)
{
case 'S':
printf("
Ta bom entao, vou achar alguem que me valorize ;(
");
break;
case 'N':
printf("
Sabia que me amava
");
goto inicio;
break;
default:
printf("
Nao entendi, repita e seja sincero(a)!
");
goto duvida;
}
system("PAUSE");
return 0;
}// fim
tava na pior quando vc fez este programa. kkkkkk
meu compilador fala q esta errado mas n to vendo nenhum erro.
#include
#include
#include
int main(int argc, char** argv) {
int a=1, b=0, resposta;
int erros=0, acertos=0;
inicio:
for(a=1;a
+Gosmazul play , o que observei foi a falta de ponto-e-vírgula depois de "erros++" e "acertos++". E também em "scanf("%d", %resposta);" o correto é "scanf("%d", &resposta);"
Procure sempre tentar ler e interpretar os erros que o compilador demonstra na saída.
WR Kits vlw, agora deu certo.
Bom dia Wagner, como sempre aulas excelentes! Parabéns! Não estou conseguindo compilar o código. Olhei para vários pontos mas não consigo encontrar o erro Poderia me ajudar?
#include
#include
#include
/* Declaração GOTO
Estrutura básica
comeco:
comando;
comando1;
comando2;
goto comeco;
*/
// Jogo da Soma
int main(int argc, char *argv[])
{
// Declaração de variáveis
int i,j,resposta,acertos,erros;
i = 0; j = 1; erros = 0; acertos = 0;
char opcao;
printf("JOGO DA SOMA!!
"); // Cabeçalho
inicio: // Rótulo para o comando GOTO dar um salto e o programa ficar nesse loop sempre que o usuário quiser
for (j = 1; j < 10; j++) // Será executado esse laço 9 vezes e cada vez incrementando a variável J em 1.
{
printf("A soma de %d + %d eh? ", i, j);
scanf("%d",&resposta);
getchar();
if (resposta != (i+j)) // Condição a ser testada, DIFERENTE de i+j
{
printf("Resposta errada!
");
erros++;
}
else
{
printf("Resposta correta!
");
acertos++;
}
}
printf("Acertos = %d
",acertos);
printf("Erros = %d
",erros);
meio: // rótulo para o comando GOTO
printf("Continuar respondendo? s-sim ou n-nao: ");
/* faz a leitura do teclado atribuindo a variável opcao e os caracteres digitados
são convertidos em maiúsculo pelo comando TOUPPER da biblioteca CTYPE.H.
*/
opcao = toupper(getche());
getchar();
printf("
");
switch (opcao) // Verificando a opção do usuário se continua ou não
{
case 'S':
i++;
goto inicio; // vai para o início e fica no loop
break;
case 'N':
goto fim; // salta para o fim do programa
break;
default: // se o usuário digitar algo que não seja S ou N
printf("Opcao invalida
");
goto meio; // retorna a pedir ao usuário uma opção válida
}
fim:
system("PAUSE");
return 0;
}
Consegui descobrir o erro. Estava no arquivo Makefile e estava conflitando com o arquivo "main.o". Tive que apagar o arquivo e compilar de novo e deu certo.
Eu ia sugerir pra adicionar a biblioteca conio.h nos includes
Salve wagner, gostei mt, ta me ajudando bastante as aulass! valeuu,
mas estou com um erro que nao encontrei no meu codigo, na verdade até roda o programa, mas quando vou colocar a reposta, ele nao responde, se puder me ajudar!
se tiver tbm alguma video aula de ponteiros, agradeço!
#include
#include
#include
/*
fazer um programa e depois retornar para o comeco;
comeco:
comando:
comando 2
comando 3
e depois retorna para o comeco" usando o comando"
goto comeco
*/
main()
{
int i=0, j=1 , resposta;
int erros = 0, acertos = 0;
char opcao;
inicio:
for(j =1; j < 10; j++)
{
printf("Qual a resposta %d + %d ? ",i,j);
scanf("%d",resposta);
getchar();
if(resposta != (i + j) )
{
erros++;
printf("Resposta errada!
");
}
else
{
acertos++;
printf("Resposta correta!
");
}//end if
}//end for
printf("Acertos = %d
",acertos);
printf("Erros = %d
",erros);
meio:
printf("Continuar respondendo? s - sim, n - nao:");
opcao = toupper (getche());
getchar();
printf("
");
switch(opcao)
{
case 'S':
i++;
goto inicio;
break;
case 'N':
goto fim;
break ;
default:
printf("opcao invalida, Digite 'S' para sim ou 'N' para nao !
");
goto meio;
}//end switch
fim:
return 0;
}
O erro é que vc se esqueceu de colocar o &resposta no scanf.
scanf("%d",resposta);
Também queria entender a bronca que o pessoal tem com o GOTO! :)
Edson Staack , não vejo problema em utilizar, com certas reservas, heheh
Lembra muito Basic kkkkkk
like