Olá começei o curso de TADS esse semestre e estou vendo programação estruturada I, o professor pediu pra gente treinar em casa pois sem treino aprender a linguagem C, é complicado, então instalei o code::blocks no meu pc mais uso o windows 8, então instalo faço todos os comandos das atividades mais quando vou compilar não acontece nada, ele da um erro essa mensagem por exemplo: "ss - Debug": configuração do compilador (GNU GCC Compiler) é inválida, então Code :: Blocks não consegue encontrar / executar o compilador. Provavelmente o caminho toolchain dentro das opções do compilador não está configurado corretamente! Ir à "Settings-> Compiler e debugger ... -> compilador global Configurações> GNU GCC Compiler-> executáveis Toolchain" e corrigir a instalação do compilador. Ignorando ... Nada a ser feito (todos os itens são up-to-date). me ajudem ai quero muito começar a usa-lo. obrigado.
...eu acabei trocando as bolas na representação por casas a direita, onde era pra ser '%.1f' eu digitei '%1.f' e me veio o valor arredondado para inteiro. Percebi que somente '%.f' já arredondava. + ou - dessa forma, com o valor armazenado de 2.89 imprimiu 3, com 2.5 também imprimiu 3, já 2.49 deu 2, fiquei meio sem entender o funcionamento desse %.f . Ele simplesmente não mostra os números a direita da vírgula, arredonda e transforma em inteiro é isso???? Desculpa minha confusão, abraçs.
Seja a seguinte forma geral de uma formatação de float: %x.yf
O que acontece aqui? X indica o número de casas totais, e Y o número de casas decimais a direita. O número 2.49 possui 3 casas decimais, 2 casas à direita da vírgula. Então para exibir ele corretamente, o ideal é: 3.2f Teste imprimir com 4.2f, ou seja, ele vai imprimir 4 casas decimais, mas só tem 3 ali, então ele bota um espaço no começo.
E se eu fizer 3.1f ? Você está mandando ele imprimir uma casa decimal somente depois da vírgula, mas seu número tem duas. O que ele faz? Arredonda e exibe o número 2.5
Se colocar somente ".xf", ele vai imprimir 'x' casas decimais depois da vírgula, e não vai limitar o número total de casas decimais.
Por exemplo, o número 32.49, tem 4 casas decimais. Se você exibir com "3.2f", estará obrigando ele a imprimir somente 3 casas no total e duas decimais. Ai não dá pra fazer as duas coisas ao mesmo tempo. Então ele exibe as duas primeiras casas (32), e como você quer 3 casas no total, ele arredonda os valores decimais e exibe o resultado final: 32.5
Então o ideal é fazer: ".2f" para exibir, pois ele vai mostrar duas casas decimais, não importando o total de casas. Se fizer ".1f" ele vai exibir uma casa decimal (se tiver mais que isso, ele arredonda).
Então quando você faz %1.f, você está obrigando o C a exibir 1 casa no total. Colocou o número 2.49 ? Ele vai exibir só uma casa, então arredonda pro mais próximo, que é 2. Colocou o número 3.511? Ele vai exibir só uma casa, então arredonda pro mais próximo, que é o número 3.
É como se eu te dissesse "me dê o número, só de uma casa, mais próximo de 2.49" Números com uma casa: 1, 2, 3, 4, 5, ...qual deles é o mais próximo de 2.49 ? É 2. E de 3.51? É 3. Não é muito preciso, mas você me obrigou a responder somente com uma casa decimal, então é o mais próximo.
4 de setembro de 2013 às 02:20
Rafael Rodrigues disse...
Boa noite,
No exercicio N°2 (nome,end,telef.) qual função devo utilizar para armazenar os char's?
No exercício final do modulo 7 do básico o programa funciona perfeito usando float mas para ao troca para double os valores ficam zerados. Os exercicios anteriores funcionaram, mas agora não. Acho que é o scanf. O que pode estar errado? Algum parametro do Code:blocks? Segue a codificação: double numero1; double numero2; double numero3; printf("Digite o primeiro numero: \n"); scanf("%f",&numero1); printf("O numero digitado foi: %.3f \n", numero1); printf("Digite o segundo numero: \n"); scanf("%f",&numero2); printf("O numero digitado foi: %.3f \n", numero2); numero3 = numero1 / numero2; printf("A divisão entre os numeros digitados e: %.3f \n", numero3);
3 de janeiro de 2014 às 14:02
Marcelo Vieira disse...
Guilherme Lessa tente colocar um l antes do f, assim "%lf" !!!!
6 de fevereiro de 2014 às 08:02
arilson dos santos disse...
me ajudem com esse exercicio.3) Faça um programa que receba a matrícula e as notas de 10 alunos, são duas provas. Calcule e mostre a média da turma para cada prova, a média de cada aluno (soma de suas notas e divide por dois) e a média geral da turma (divisão por 2 da soma das notas da primeira prova dividido por 10 com a soma das notas da segunda prova, também dividido por 10).
Olá Professor. Tenho vários livros de C aqui, mas nenhum deles tem uma explicação tão boa sobre limpar o buffer do teclado como a sua apostila. Por isso comprei a versão kindle para contribuir com o projeto. A sua explicação nos comentários sobre arredondamento de números reais merece um tópico na apostila. Desejo sucesso na sua caminhada. Atenciosamente, Alexandre.
6 de março de 2020 às 03:35
Francisco Ceccon disse...
Boa noite, adquiri a apostila C Progressivo, qual o prazo de entrega. Pagamento através PIX. Enviei comprovante por e-mail.
18 de maio de 2021 às 18:03
C Progressivo disse...
Olá Francisco, ja enviamos para seu e-mail
18 de maio de 2021 às 18:25
Bem vindo aos tutoriais básicos, de nosso Curso de C.
Nesta seção colocaremos o básico, totalmente voltado para quem está começando a estudar a linguagem de programação C.
Os tópicos cobrem todo o básico da linguagem C.
Ou seja, você só pode prosseguir no curso se tiver aprendido isso.
Esses artigos são voltados para iniciantes em programação, visto que a maior parte desse conteúdo é comum para a maioria das linguagens de programação, com pequenas diferenças.
Aprendendo bem essa seção, portanto, você terá uma boa base na maioria das linguagens de computação.
Tutorial Básico de C
postado por Programação Progressiva às 19:58 em 20 de nov. de 2016
14 Comentários
Fechar esta janela Ir para formulário de comentárioOlá começei o curso de TADS esse semestre e estou vendo programação estruturada I, o professor pediu pra gente treinar em casa pois sem treino aprender a linguagem C, é complicado, então instalei o code::blocks no meu pc mais uso o windows 8, então instalo faço todos os comandos das atividades mais quando vou compilar não acontece nada, ele da um erro essa mensagem por exemplo: "ss - Debug": configuração do compilador (GNU GCC Compiler) é inválida, então Code :: Blocks não consegue encontrar / executar o compilador.
Provavelmente o caminho toolchain dentro das opções do compilador não está configurado corretamente!
Ir à "Settings-> Compiler e debugger ... -> compilador global Configurações> GNU GCC Compiler-> executáveis Toolchain" e corrigir a instalação do compilador.
Ignorando ...
Nada a ser feito (todos os itens são up-to-date). me ajudem ai quero muito começar a usa-lo. obrigado.
15 de agosto de 2013 às 18:14
Olá Aeldo,
Que arquivo, no site do Code::Blocks, você baixou e instalou?
15 de agosto de 2013 às 18:31
Poxa muitíssimo obriga professores, vcs são nota 10.
Fiquei curioso na multiplicação dos floats decimais, comecei a escrever o código e nesta linha..
printf("%.1f + %.1f = %.2f", num1,num2,resultado);
...eu acabei trocando as bolas na representação por casas a direita, onde era pra ser '%.1f' eu digitei '%1.f' e me veio o valor arredondado para inteiro.
Percebi que somente '%.f' já arredondava. + ou - dessa forma, com o valor armazenado de 2.89 imprimiu 3, com 2.5 também imprimiu 3, já 2.49 deu 2, fiquei meio sem entender o funcionamento desse %.f .
Ele simplesmente não mostra os números a direita da vírgula, arredonda e transforma em inteiro é isso???? Desculpa minha confusão, abraçs.
31 de agosto de 2013 às 12:31
Olá Anônimo,
Seja a seguinte forma geral de uma formatação de float: %x.yf
O que acontece aqui?
X indica o número de casas totais, e Y o número de casas decimais a direita.
O número 2.49 possui 3 casas decimais, 2 casas à direita da vírgula. Então para exibir ele corretamente, o ideal é: 3.2f
Teste imprimir com 4.2f, ou seja, ele vai imprimir 4 casas decimais, mas só tem 3 ali, então ele bota um espaço no começo.
E se eu fizer 3.1f ? Você está mandando ele imprimir uma casa decimal somente depois da vírgula, mas seu número tem duas.
O que ele faz? Arredonda e exibe o número 2.5
Se colocar somente ".xf", ele vai imprimir 'x' casas decimais depois da vírgula, e não vai limitar o número total de casas decimais.
Por exemplo, o número 32.49, tem 4 casas decimais. Se você exibir com "3.2f", estará obrigando ele a imprimir somente 3 casas no total e duas decimais.
Ai não dá pra fazer as duas coisas ao mesmo tempo. Então ele exibe as duas primeiras casas (32), e como você quer 3 casas no total, ele arredonda os valores decimais e exibe o resultado final: 32.5
Então o ideal é fazer: ".2f" para exibir, pois ele vai mostrar duas casas decimais, não importando o total de casas.
Se fizer ".1f" ele vai exibir uma casa decimal (se tiver mais que isso, ele arredonda).
Então quando você faz %1.f, você está obrigando o C a exibir 1 casa no total.
Colocou o número 2.49 ? Ele vai exibir só uma casa, então arredonda pro mais próximo, que é 2.
Colocou o número 3.511? Ele vai exibir só uma casa, então arredonda pro mais próximo, que é o número 3.
É como se eu te dissesse "me dê o número, só de uma casa, mais próximo de 2.49"
Números com uma casa: 1, 2, 3, 4, 5, ...qual deles é o mais próximo de 2.49 ? É 2.
E de 3.51? É 3. Não é muito preciso, mas você me obrigou a responder somente com uma casa decimal, então é o mais próximo.
4 de setembro de 2013 às 02:20
Boa noite,
No exercicio N°2 (nome,end,telef.) qual função devo utilizar para armazenar os char's?
6 de setembro de 2013 às 17:47
Olá Rafael,
Se estiver na seção básica, tente fazer usando as variáveis do tipo char.
Mais a frente você aprenderá a fazer usando strings:
Lendo e Escrevendo em C usando strings
6 de setembro de 2013 às 17:53
Impressionada com a qualidade do curso...Amei, amei.
26 de novembro de 2013 às 15:57
No exercício final do modulo 7 do básico o programa funciona perfeito usando float mas para ao troca para double os valores ficam zerados. Os exercicios anteriores funcionaram, mas agora não. Acho que é o scanf. O que pode estar errado? Algum parametro do Code:blocks?
Segue a codificação:
double numero1;
double numero2;
double numero3;
printf("Digite o primeiro numero: \n");
scanf("%f",&numero1);
printf("O numero digitado foi: %.3f \n", numero1);
printf("Digite o segundo numero: \n");
scanf("%f",&numero2);
printf("O numero digitado foi: %.3f \n", numero2);
numero3 = numero1 / numero2;
printf("A divisão entre os numeros digitados e: %.3f \n", numero3);
3 de janeiro de 2014 às 14:02
Guilherme Lessa tente colocar um l antes do f, assim "%lf" !!!!
6 de fevereiro de 2014 às 08:02
me ajudem com esse exercicio.3)
Faça um programa que receba a matrícula e as notas de 10
alunos, são duas provas. Calcule e mostre a média da turma para
cada prova, a média de cada aluno (soma de suas notas e divide por
dois) e a média geral da turma (divisão por 2 da soma das notas da
primeira prova dividido por 10 com a soma das notas da segunda
prova, também dividido por 10).
7 de outubro de 2015 às 10:55
Muito bom sanou bem minha duvida!!! abraços.
22 de julho de 2018 às 15:55
Olá Professor. Tenho vários livros de C aqui, mas nenhum deles tem uma explicação tão boa sobre limpar o buffer do teclado como a sua apostila. Por isso comprei a versão kindle para contribuir com o projeto. A sua explicação nos comentários sobre arredondamento de números reais merece um tópico na apostila. Desejo sucesso na sua caminhada. Atenciosamente, Alexandre.
6 de março de 2020 às 03:35
Boa noite, adquiri a apostila C Progressivo, qual o prazo de entrega. Pagamento através PIX. Enviei comprovante por e-mail.
18 de maio de 2021 às 18:03
Olá Francisco, ja enviamos para seu e-mail
18 de maio de 2021 às 18:25