Isso, porém, tem um custo. Será necessário uma dedicação e estudo maior, principalmente se comparado com outras linguagens de programação. Mas vale a pena, sabendo C, você aprenderá as outras com uma incrível facilidade.
Bem, chegou a hora de realmente colocar a mão na massa e começar a programar, ok?
Antes, gostaríamos de sugerir o nosso texto 'Como ser um excelente programador', nele a gente vai te orientar sobre:
- O que estudar
- Como estudar programação da maneira correta
- O que é importante estudar
- Quais linguagens é bom saber
- Qual a melhor a melhor linguagem de programação
- Como entrar no mercado do trabalho
- Como se portar corretamente numa entrevista de emprego
- A característica mais importante que um programador deve ter
É simplesmente tudo que eu gostaria de saber antes de começar minha carreira de programador. Se eu tivesse lido o texto no início de meus estudos, teria aprendido programação bem mais rapidamente e mais corretamente. Sério, não deixem de ler, vai mudar sua vida.
Acesse nossa apostila para ler:
![]() |
Fazer download da minha apostila C Progressivo |
![]() |
Obter certificado do curso C Progressivo |
Para os iniciantes, a ordem sugerida do curso é essa:
Tutorial de Conceitos Básicos da Linguagem C
1.1 Código comentado do nosso primeiro programa em C
02. A função printf() e os caracteres especiais
02. A função printf() e os caracteres especiais
03. Como comentar seus códigos em C - Comentários e Delimitadores
04. Números inteiros - o tipo int
4.1 Modificadores do tipo inteiro (int) - short, long, signed e unsigned
05. Números decimais (ou reais) em C - os tipos float e double
06. Escrevendo em C - o tipo char
07. Recebendo números do usuário - A função scanf
08. Recebendo letras do usuário - As funções scanf, getchar, fgetc e getc
09. Buffer: o que é, como limpar e as funções fflush e __fpurge
10. Operações matemáticas - Soma, subtração, multiplicação, divisão e módulo (ou resto da divisão) e precedência dos operadores
11. Os atalhos dos símbolos matemáticos: +=, -= , *=, /= e %=
12. Sistema Binário e Valores lógicos 'true' ou 'false'
13. Operadores Lógicos E (&&), OU (||) e de Negação (!)
Exercícios: Questões sobre os conhecimentos básicos da linguagem C
04. Números inteiros - o tipo int
4.1 Modificadores do tipo inteiro (int) - short, long, signed e unsigned
05. Números decimais (ou reais) em C - os tipos float e double
06. Escrevendo em C - o tipo char
07. Recebendo números do usuário - A função scanf
08. Recebendo letras do usuário - As funções scanf, getchar, fgetc e getc
09. Buffer: o que é, como limpar e as funções fflush e __fpurge
10. Operações matemáticas - Soma, subtração, multiplicação, divisão e módulo (ou resto da divisão) e precedência dos operadores
11. Os atalhos dos símbolos matemáticos: +=, -= , *=, /= e %=
12. Sistema Binário e Valores lógicos 'true' ou 'false'
13. Operadores Lógicos E (&&), OU (||) e de Negação (!)
Exercícios: Questões sobre os conhecimentos básicos da linguagem C
Tutorial de Teste Condicional e Controle de Fluxo
00. O teste condicional IF ELSE
1.1 Questões sobre IF ELSE
1.1 Soluções das questões sobre IF ELSE
1.2 Programa em C: mostra as raízes de uma equação do 2o grau
1.3 Programa em C: diz se você passou, reprovou ou ficou de recuperação
02. Operadores de Incremento (++), Decremento (--) - Diferença entre a=b++ e a=++b
03. O laço WHILE: o que é, para que serve e como usar
3.1 Questões sobre o laço WHILE
3.2 Soluções das questões sobre o laço WHILE
04. O laço FOR: o que é, para que serve e como usar o FOR - Cast
4.1 Questões sobre o laço FOR
4.2 Soluções das questões sobre o laço FOR
05. Os comandos CONTINUE e BREAK em C: pausando e alterando o fluxo de laços
06. O teste condicional SWITCH: o que é, para que serve e como usar o switch
1.1 Questões sobre IF ELSE
1.1 Soluções das questões sobre IF ELSE
1.2 Programa em C: mostra as raízes de uma equação do 2o grau
1.3 Programa em C: diz se você passou, reprovou ou ficou de recuperação
02. Operadores de Incremento (++), Decremento (--) - Diferença entre a=b++ e a=++b
03. O laço WHILE: o que é, para que serve e como usar
3.1 Questões sobre o laço WHILE
3.2 Soluções das questões sobre o laço WHILE
04. O laço FOR: o que é, para que serve e como usar o FOR - Cast
4.1 Questões sobre o laço FOR
4.2 Soluções das questões sobre o laço FOR
05. Os comandos CONTINUE e BREAK em C: pausando e alterando o fluxo de laços
06. O teste condicional SWITCH: o que é, para que serve e como usar o switch
Tutorial de Funções em C
00. O que são funções, para que servem e como usá-las
0.1 Programa em C: Criando um chat com menu através de funções
Tutorial de Estrutura de dados I: Vetores/Arrays
00. O que são vetores, como declarar e quando usar
01. Inicializando vetores - Vetores de caracteres e Lixo
02. Não use números, use constantes: const e #define
03. Matrizes em C: Vetores multidimensionais (Vetor de vetores)
04. Como passar vetores e Matrizes para funções
05. Passagem por Referência - Como copiar Vetores e Matrizes
06. Exercícios sobre Vetores e Matrizes
Jogo: Como fazer o Jogo da Velha
Código comentado sobre como criar o Jogo da Velha em C
01. Inicializando vetores - Vetores de caracteres e Lixo
02. Não use números, use constantes: const e #define
03. Matrizes em C: Vetores multidimensionais (Vetor de vetores)
04. Como passar vetores e Matrizes para funções
05. Passagem por Referência - Como copiar Vetores e Matrizes
06. Exercícios sobre Vetores e Matrizes
Jogo: Como fazer o Jogo da Velha
Código comentado sobre como criar o Jogo da Velha em C
Tutorial de Ponteiros (apontadores)
00. Introdução ao uso dos ponteiros: Endereços de memória
01. A função sizeof() e os blocos vizinhos de memória
02. Como declarar, inicializar e usar ponteiros - A constante NULL
03. Variáveis apontadas - A Passagem por Referência
04. Operações matemáticas com Ponteiros
Exercícios com gabarito: Questões sobre Ponteiros da apostila da UFMG
01. A função sizeof() e os blocos vizinhos de memória
02. Como declarar, inicializar e usar ponteiros - A constante NULL
03. Variáveis apontadas - A Passagem por Referência
04. Operações matemáticas com Ponteiros
Exercícios com gabarito: Questões sobre Ponteiros da apostila da UFMG
Tutorial Strings e Caracteres - Escrevendo em C
00. Introdução ao uso das strings: O que são, como declarar, inicializar e o caractere \0
01. Lendo e Escrevendo Strings
02. Como criar uma biblioteca (ou header .h) em C
03. A biblioteca string.h e suas funções
3.1 Exercício: Implemente as funções da biblioteca string.h
04. Exercícios sobre Strings
01. Lendo e Escrevendo Strings
02. Como criar uma biblioteca (ou header .h) em C
03. A biblioteca string.h e suas funções
3.1 Exercício: Implemente as funções da biblioteca string.h
04. Exercícios sobre Strings
Tutorial de Estrutura de dados II: structs
00. Introdução as structs: O que são, para que servem e onde são usadas
01. Como declarar uma struct
02. Como acessar, ler e escrever em elementos de uma struct
03. typedef: Como criar seus próprios tipos
04. Como enviar structs para funções
05. Como passar uma struct para funções por referência - O operador ->
06. Exercícios sobre structs em C
01. Como declarar uma struct
02. Como acessar, ler e escrever em elementos de uma struct
03. typedef: Como criar seus próprios tipos
04. Como enviar structs para funções
05. Como passar uma struct para funções por referência - O operador ->
06. Exercícios sobre structs em C
Tutorial de Alocação Dinâmica de Memória
00. Introdução: o que é alocar memória dinamicamente e para quê isso serve
01. A função malloc(): como alocar memória em C
02. A função free(): Como liberar memória em C e evitar vazamento (Memory Leak)
03. A função realloc(): Realocando memória e a função calloc()
01. Listas (List): O que é e como funciona
1.1 Inserindo nós no início e final da lista
1.2 Retirando nós do início e final da lista
1.3 Implementação completa de uma lista - Inserindo e retirando de qualquer local
02. Pilhas em C - Como Programar
03. Filas em C - Como Programar
01. Abrindo arquivos (fopen), modos de abertura (read r, write r, append a) e fechamento (EOF, fclose e fcloseall)
02. Escrevendo em arquivos: As funções fputc, fprintf e fputs
03. Como ler arquivos em C: As funções fgetc, fscanf e fgets
01. A função malloc(): como alocar memória em C
02. A função free(): Como liberar memória em C e evitar vazamento (Memory Leak)
03. A função realloc(): Realocando memória e a função calloc()
Tutorial de Estrutura de dados III: Estruturas Dinâmicas
00. Estrutura dinâmica de dados em C: O que são Listas, Filas, Pilhas e Árvores01. Listas (List): O que é e como funciona
1.1 Inserindo nós no início e final da lista
1.2 Retirando nós do início e final da lista
1.3 Implementação completa de uma lista - Inserindo e retirando de qualquer local
02. Pilhas em C - Como Programar
03. Filas em C - Como Programar
Tutorial de Arquivos (FILES) em C
00. Introdução: o que são, como funciona e para que servem os arquivos (files)01. Abrindo arquivos (fopen), modos de abertura (read r, write r, append a) e fechamento (EOF, fclose e fcloseall)
02. Escrevendo em arquivos: As funções fputc, fprintf e fputs
03. Como ler arquivos em C: As funções fgetc, fscanf e fgets
Jogos em C
Batalha Naval: código completo e comentado do Jogo Batalha Naval em C
Código do Jogo da Velha
Código comentado sobre como criar o Jogo da Velha em C
Código do Jogo da Velha
Código comentado sobre como criar o Jogo da Velha em C
![]() |
3ª letra do alfabeto e nome da Linguagem |
![]() |
Dennis Ritchie, criador da Linguagem C |
![]() |
Típico programador C |
35 comentários:
Ótimos tutoriais de C! Perfeitos para iniciantes, bem fáceis de entender e em uma ordem ideal!
Parabéns ao curso C Progressivo!
Maravilhoso tutorial
O melhor q eu ja vi, o c eu estava tendo sérios problemas para aprender e agora esta muito fácil....
Obrigado!!!
ótimo tutoriais vocês do C Progressivo estão de parabéns.
muito bom,gostei
O site esta de parabéns. Ótima iniciativa.
Código para o jogo da cobrinha que fiz:
#include
#include
#include
#include
void gotoxy(int x,int y);
using namespace std;
int main(int argc,char *argv[])
{ char tecla;
int x,d=3,cx[1500],cy[1500],t=2,mx,my;
cx[0]=20;
cy[0]=20;
cx[1]=19;
cy[1]=20;
srand(time(NULL));
mx=(rand()%77)+1;
my=(rand()%23)+1;
for(x=0;x<24;x++)
{ gotoxy(0,x);
printf("%c",219);
}
for(x=0;x<78;x++)
{ gotoxy(x,0);
printf("%c",219);
}
for(x=0;x<78;x++)
{ gotoxy(x,24);
printf("%c",219);
}
for(x=0;x<25;x++)
{ gotoxy(78,x);
printf("%c",219);
}
do
{ while(tecla!='s'&&!(tecla=kbhit()))
{ for(x=t-1;x>0;x--)
{ cx[x]=cx[x-1];
cy[x]=cy[x-1];
}
if(d==2)cy[0]--;
if(d==4)cy[0]++;
if(d==1)cx[0]--;
if(d==3)cx[0]++;
gotoxy(mx,my);
printf("%c",1);
if(mx==cx[0]&&my==cy[0])
{ t++;
mx=(rand()%77)+1;
my=(rand()%23)+1;
}
gotoxy(cx[0],cy[0]);
printf("%c",219);
if(cx[t-1]!=0)
{ gotoxy(cx[t-1],cy[t-1]);
printf(" ");
}
if(d==2||d==4)Sleep(200);
else Sleep(100);
for(x=1;x<t;x++)
{ if(cx[0]==cx[x]&&cy[0]==cy[x])tecla='s';
}
if(cy[0]==0||cy[0]==24||cx[0]==0||cx[0]==78)tecla='s';
}
if(tecla!='s')tecla=getch();
if(tecla=='H')d=2;
if(tecla=='P')d=4;
if(tecla=='K')d=1;
if(tecla=='M')d=3;
if(cy[0]==0||cy[0]==24||cx[0]==0||cx[0]==78)tecla='s';
}while(tecla!='s');
return EXIT_SUCCESS;
}
void gotoxy(int x,int y)
{ HANDLE hConsoleOutput;
COORD dwCursorPosition;
dwCursorPosition.X=x;
dwCursorPosition.Y=y;
hConsoleOutput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
}
a função gotoxy já existem em algumas bibliotecas, mas como usei o dev c++ não achei nenhuma, então criei a minha.
Qualquer dúvida sobre eese código basta perguntar pra mim pelo meu email schio.rodrigo@gmail.com
Att
Rodrigo Schio
os includes que não aparecem são:
iostream
dos.h
windows.h
conio.h
Olá
Eu gostei muito do blog e da forma como vocês demonstram o que foi explicado.
Pretendo seguir carreira na área de jogos e, para isso, escolhi o C como linguagem inicial para meus projetos.
Gostaria de saber se vocês continuam com o blog, pois percebi que alguns tópicos citados não existem no blog, e eles seriam úteis no meu aprendizado.
Espero não estar enganado, fazendo com que percam tempo.
Desde já agradeço
Olá Anônimo,
Sim, vamos continuar a desenvolver o site sim, pode ter certeza.
Mas o conteúdo existente já é maior que a maioria dos livros e cursos pagos por aí, então já tem bastante material para estudar.
É importante também que você aprenda outras linguagens, atualmente temos projetos ensinando C, Java, HTML e Assembly, em breve teremos mais.
Bons estudos.
olá pessoal sou novo em programação C e gostaria de saber se é possivel criar um programa em C com interface gráfia, botões, label etc. em vez de ficar aquela tela preta.
Sim, Tiago.
Sistemas Operacionais, em sua maior parte, são feitos em C e tem muitas interfaces gráficas. Na verdade, é possível fazer praticamente tudo em C.
Se estiver no Windows, pode pesquisar sobre WinApi.
Cara muito BOM! Posso dizer realmente que quase tudo que aprendi de C foi aqui com o tutoriais de vocês! Muito bom mesmo,demais!Espero que o site continue por muito e muito tempo com a mesma qualidade de material que estão sempre disponíveis aqui!
Acabei de ler todo o tutorial e queria saber se o tutorial ainda vai ter mais expansões, e se sim qual os assuntos tratado nos novos tópicos,e
se o tutorial já esta completo qual é próximo passo como programador C.Desde já agradeço pelo ótimo tutorial, parabéns.
Olá, estou estudando pela apostila, porem não consigo chegar à solução do exercicio "etiqueta" propostos sobre 'conhecimentos basicos da linguagem em c'
(http://www.cprogressivo.net/2013/01/Exercicios-basicos-sobre-a-linguagem-C.html)
alguem poderia me ajudar?
Onde encontro as repostas para a lista de exercícios sobre conhecimentos básicos?
site muito bom vlw ai vcs que mantem ele a ativa esta ajudando bastante obrigado di mais
Estou sempre aqui no site estudando, e desta vez eu estou só passando, para dizer, que vocês estão de parabéns, pela simplicidade da estrutura do site, mas ao mesmo tempo, é um luxo no conteúdo, muito obrigado.
Olá a todos do Cprogressivo. Quero dar-lhes o parabéns pela iniciativa de ensinar programação de forma gratuita. A didática que vocês utilizam é excelente. Mais uma vez parabéns! Vocês estão dando realmente uma oportunidade para muitos entrarem nessa área e o mais importante: gostar de programar.
Ola, eu to com uma duvida quanto ao retorno da função.
Eu vi um if, para verificar se o endereço de memoria era null, com resultado return -1 na main.
Alguém pode me explicar pra que serve exatamente o return -1?
PARTE DO CODIGO
v = ( int *) malloc ( . . . );
if ( v == NULL ) return -1;
Ola queria saber se ainda vão continuar com o blog adcionando novos curso e atualizando os outros pq seria massa se tivesse outros cursos como c++ e php
att:Matheus (deu preguiça de logar numa conta)
olá pessoal! gosto de aprender coisas novas. e decidi que seria muito interessante aprender a programa. só que estou começando agora, e estudei apenas logica de programação. gostaria de saber se C seria a linguagem mais recomendada para iniciar.
a respeito de um codigo em c referente a o jogo da cobrinha,
tipo to com duvida sobre um codigo bem simples, mas eu iniciei agora o curso de ciencias da computacao
entao pra min é o meu primeiro contato com programacao,
tipo a questao que o professor passou é essa:
Escreva um programa completo em C que classifique e imprima o número de notas de uma
turma que são excelentes (9-10), suficientes (7-8), e insuficientes (0-6). O programa também
deve mostrar a média das provas ao final da corrida.
O programa pode ser desenvolvido individualmente ou em dupla. No programa escrevam
comentários para explicar o funcionamento do programa e devem utilizar indentação para
facilitar assim a visualização e o entendimento do programa.
O programa deve executar da seguinte forma:
Este programa classifica a notas de uma turma.
Digite -1 para finalizar de entrar as notas.
Digite nota: 6
Digite nota: 7
Digite nota: 7
Digite nota: 10
Digite nota: 8
Digite nota: 9
Digite nota: 8
Digite nota: 4
Digite nota: 5
Digite nota: -1
Número de notas excelentes = 2
Número de notas suficientes = 4
Número de notas insuficientes = 3
A média da turma é 7,1
tipo o meu codigo pra essa questao ainda ta incompleto e mesmo assim nao to conseguindo criar um contador
é esse:
#include
#include
int main()
{
int cont_suficientes=0,
cont_insuficientes=0,
cont_excelentes=0;
float notas,
soma,
media;
while(notas!=-1)
{
printf("Digite a nota:");
scanf("%f", ¬as);
if((notas>=0)&&(notas<=6))
{ cont_insuficientes++;
}
}
printf("notas insuficientes:%d\n\n",cont_insuficientes);
system("pause");
return 0;
}
tipo ate aqui o codigo conta as notas insuficientes, e lê ela para o usuario, mas desse ponto ae se eu colocar outras condições ele nao conta e bagunça tudo.
se puder me ajudar
Boa Tarde Pessoal, novamente Obrigado e parabens pelo curso, minha dúvida é sobre a linguagem C trabalhando com Banco de Dados como o SQL ou outro, é possivel e como funcionaria? Se diverem a indicação de algum material de pesquisa Obrigado.
Muito bom, gostaria de saber se com os conhecimentos adquiridos aqui eu consigo criar um sistema operacional, um drive, ou um software que roda direto sobre o hardware.
Bom dia pessoal. Eu estou bem no inicio. Fiz o exercicio de subtração e o resultado veio um valor maluco... Ou melhor os tres (m1, m2, resultado) veio totalmente doido. Pode me explicar porque?
Obrigado... Curso bom!
Valeu!!! muito bom o curso
sou iniciante em programacao e resolvi iniciar por c ,qt tempo mais ou menos para uma pessoa aprender C
Parabens pela aos criadores desse site, vocês têm ajudado bastante!
Curso muito bom! To conseguindo estudar sozinho sem muitos problemas :)
Olá!
Já estou fazendo o curso há algumas semanas.
Atualmente estou em "Estruturas Dinâmicas", quase concluindo o curso.
Quero lhes parabenizar pelo ótimo curso e agradecer pelo conhecimento que vocês do C Progressivo disponibilizaram para o público!
Ótimo trabalho e obrigado mais uma vez.
Abraços.
CProgressivo, cadê a explicação sobre variáveis globais?
Olá pessoal,
Estou estudando os tópicos e está cada vez mais divertido. Muito bom o material.
Gostaria de saber se alguém tem alguma orientação ou até um exemplo de como obter dados de uma porta serial.
Estou com uma aplicação de um microcontrolador que envia dados para a portal serial e consigo ler esses dados na serial por meio do putty, mas preciso salvar esses valores.
abraços
Muito bom pra mim que sou pobre. Não tenho cacife pra curso pago, mas mesmo assim teria todo prazer do mundo em colaborar com algo. GRATO!
muito bom!!
continuem assim
Muito bom!
Vocês planejam algum dia criar um curso assim como esse, só que com a linguagem C#?
Postar um comentário