Ir para conteúdo
Entre para seguir isso  
tesla

C, Aprendendo a Programar

Recommended Posts

tesla    0
tesla

Motivo:

Bom pessoal, primeiramente olá, eu sou novo no Networks, jogo somente tibia global, não me interesso por OT, mas vamos lá: Sempre gostei de computador sou muito familiarizado com ele, e agora to aprendendo por conta própria a linguagem C. To com uma apostila muito boa. E já faz um tempo eu estou ficando de "tocaia" na área de programação do Networks, e para falar a verdade, eu não vi, pelo menos na minha opinião, algum tutorial, que fosse do Básico (Básico mesmo) ao Pelo menos intermediário, e como vocês já devem de ter percebedio a maioria dos tutoriais são de C++. Então decidi criar este tutorial como um definitivo, ao longo do meu aprendizado, vou editando o post, e incrementando aulas.

 

Por que aprender o C?

Como a maioria já deve saber o C++ é o incremento do C (daí o "++"), e na minha opinião, para você aprender o incremento, primeiro deve-se aprender a base.

Requerimentos:

Bom para se aprender a linguagem de programção não precisa ter conhecimento sobre outras linguagens, apenas ser familiarizado com o PC.

Vamos precisar ao longo do tutorial do Dev-C++ disponível para download no seguinte link: Dev-C++

Peço à vocês que:

Comentem as minhas aulas, provas e deêm sujestões.

 

Breve resumo:

O C foi criado por Dennis Ritchie derivado do B, criado por Ken Thompson que por sua vez é derivado do BCPL criado por Martin Richards.

 

Aula 1 - Introdução, Um Primeiro Programa

 

 

A primeira vez que você for abrir o Dev-C++ ele vai pedir uma configuração de linguagem e skin, coloque em Português (Brasil) e com o skin que você mais gostar. Após isto vá em Arquivo -> Novo -> Arquivo Fonte (Ou Ctrl + N).

Agora observe que um arquivo é aberto, esse é o código fonte do seu programa.

 

OBS: É aconselhado que o aluno Digite os códigos contidos nessas aulas, para ir se acostumando.

 

#include <stdio.h>
int main ()
{
printf ("Eu Existo\n"); /* oO um programa criado por mim */
return(0);
}

Digite o código no Dev compile e execute (F9).

 

Agora Vamos desmembrar este programa, e explicar parte por parte:

#include <stdio.h>

O comando #include <stdio.h> diz ao programa que ele deve incluir o arquivo-cabeçalho stdio.h . Este arquivo possui todas a funções para entrada e saída de dados. O C possui diversos cabeçalhos.

int main ()

{

}

A linha int main () define a função de nome main. Todo programa C deve ter esta função pois esta será chamada quando o programa for executado. Todo o código desta função é delimitado por {} (chaves), e será executado seqüencialmente. O int diz que o programa retorna um inteiro.

 

printf ("Eu Existo\n"); /* oO um programa criado por mim */

A Função printf () imprime uma string na tela (string é uma seqüencia de caracteres, vamos apronfundar mais para frente), o "Eu Existo" é um argumento, este é o texto ser impresso na tela. \n é uma constante recebe o nome de constante barra invertida. Ele indica que após o Eu Existo devemos mudar de linha, então ser tivermos um printf igual ao que vimos aqui ele será impresso debaixo do primeiro. É como se fosse para entender melhor o <br> do html. Quando fazemos um programa é um bom hábito colocarmos comentários isto torna seu programa mais fácil de se entender, estes são delimitados por /* */ e não são compilados pelo programa. Toda linha de função deve terminar com ;.

 

return (0);

Observe que quando executamos o programa ele fecha tão rápido que não dá tempo de se ver o Eu Existo na tela. Calma, o seu programa não está com defeito, pelo contrário, ele funciona corretamente, o que acontece é como eu disse, ele executa o código seqüencialmente, então logo após imprimir o Eu Existo na tela, ele não perde tempo e já determina o printf () como uma função já executada e executa a próxima linha, no nosso caso o return (0);. O return (0); determinou que ele devia retorna á um inteiro no caso o 0, mais para frente vamos aprofundar no return.

 

 

:yes: Prova :yes:

Então, preparado(a) para sua primeira prova? Se não, leia novamente a Aula 1. Se sim, prossiga: Bom, como primeira prova eu não vou passar algo muito difícil, até mesmo porque sabemos somente o basicão, vamos lá, Digite um programa que imprima "eu" pule 5 linhas, imprima "sou" pule 5 linhas novamente e digite alguma qualidade sua :w00t: e comente esta sua qualidade, de forma que o programa não execute o comentário.
Aula 2 - Matemática e o C

 

 

 

Galera, antes desta aula devemos compreender que quase tudo (pra não dizer tudo) no C é matemática, então se você não é bom em matemática pode prosseguir, mas tome muito cuidado e tenha atenção ao ler as aulas. Caso você seja :smile_positivo: em matemática, digamos que não irá quase que encontrar dificuldade nas aulas.

 

#include <stdio.h>
#include <stdlib.h>
int main ()
{
   float pi, x, re; /* define os pontos flutuantes */
   printf ("Ente com o valor a ser multiplicado (aproximadamente) por Pi\n(numeros com virgula, deve ser usado ponto ao inves de virgula ex: 1.0): ");
   scanf ("%f", &x);/* obtem valor de x */
   pi = 3.1415; /* define o valor aproximado de Pi */
   re = x*pi; /* atribui o resultado se x vezes Pi ao ponto flutuante res */
   printf ("\n\aO Produto foi aproximadamente: %f\n", re);
   system ("pause");
}

Digite, Compile e Execute.

 

Vamos agora analizar cada estrutura:

 

stdlib.h

Standart Library ou seja Biblioteca Padrão, para saber mais entre aqui Stdlib.h (Wikipédia)

 

float pi, x, re;

Float é um ponto flutuante, melhor explicando vou dar um exemplo: 7,555888 ou seja números com casas decimais, no C, o programa não usa "," (vírgula) para definir casas decimais, ele usa pontos exemplo: 7,555888 está errado, o correto no programa C seria: 7.555888. Podemos definir várias floats com nomes diferentes sempre separando por vírgula. Vou aproveitar e ensinar sobre os números inteiros: int pi, x, re; aqui pi, x e re são inteiros, ou seja, números que não tem casas decimais exemplo: 7555888. Lembrando que 7555888 é diferente de 7.555888.

 

scanf ("%f", &x);

O scanf () lê um dado fornecido pelo usuário, o parâmetro "%f" diz ao scanf () que iremos ler um float (para ler inteiro usamos "%d"), o &x atribui o valor do float fornecido pelo usuário á variável x (lembrando que definimos a variável no ínicio do programa como um float), é importante lembrar de colocar o & antes da variável no scanf (), vamos ver o porque disso mais tarde.

 

pi = 3.1415;

Aqui atribuimos o valor 3.1415 (casas decimais representadas por ponto) á variável "pi".

 

re = x*pi;

Agora é que vem a matemática, aqui nós atribuimos o valor do produto da equação "x*pi" a "re".

 

printf ("\n\aO Produto foi aproximadamente: %f\n", re);

Nós agora devemos imprimir na tela o resultado, primeiro vou explicar o \a. O \a emite um "beep". Agora depois a frase "O Produto foi aproximadamente:" queremos que o valor de "re" (produto de x*pi) apareça na tela, para isso colocamos o %f dizendo ao programa que um float irá aparecer (se fosse um int seria %d) e depois da frase, devemos definir qual o float irá aparecer, então separamos a frase com uma vírgula (depois de delimitar o que será impresso com aspas) e colocamos o parâmetro "re". "re" é a variável (float) que armazenou o produto, então o %f digitado no printf, irá imprimir o valor de "re". Se quisessemos imprimir o valor de "x" por exemplo, depois do valor de "re" era só colocar outro %f no printf e depois definir o parâmetro "x" ficando assim: printf ("\n\aO Produto foi aproximadamente: %f %f\n", re, x); Observe que a string "%f" corresponde a seqüencia dos parametros, ou seja o 1º "%f" corresponde á "re" o 2º "%f" corresponde á "x".

 

system ("pause");

Esta função só pode ser usada caso incluimos o cabeçalho stdlib.h como fizemos no início do programa. Ela é como se fosse um "Pause" mesmo no programa, ela só irá executar a próxima função caso o usuário precione qualquer tecla, como no nosso programa as funções se acabam depois dela, o programa fecha.

 

 

:yes: Prova :yes:

1º Faça um programa que some 3 inteiros fornecidos pelo usuário, imprima na tela o valor dos 3 inteiros e o total da soma dos 3

2º Faça outro programa que multiplique 2 floats fornecidos pelo usuário, e imprima somente o produto da multiplicação dos 2.

Aula 3 - Funções, Argumentos e Retornando Valores

 

 

 

Agora que já temos uma noção, vamos criar as nossas funções. As nossa funções seram sempre chamadas somente depoisda função main.

 

#include <stdio.h>
#include <stdlib.h>
int msg ()
{
   printf ("Se um knight bem doido quisesse chegar ao distance skill 100, ele usaria 745.807.745.800.000 bolts, que atirados sem parar, consumiriam: 413.437.636.585 Horas 17.226.268.190 Dias 574.218.940 Meses ou 47.851.578 Anos!"); /* coloque isto na mesma linha do printf de cima */
   return (0);
}
int main ()
{
   msg ();
   printf ("\n\nSabia?\n");
   system ("pause");
}

Digite, compile e execute.

 

Analizando...

 

msg ();

O msg (); chama a nossa função, e não define nenhum parâmetro, já que sabemos que main é a primeira função a ser chamada, se não chamarmos a nossa função ela vai ser "ignorada" pelo programa. Chamando a função dentro de main é como se colocassemos o código da função msg dentro de main. Esta técnica, torna o programa mais organizado, e mais fácil de se compreender.

 

Também podemos usar funções para retornar valores, resultados, ou o que for.

#include <stdio.h>
#include <stdlib.h>
int tot (int x) /* Calcula o quadrado de x */
{
printf ("O quadrado e %d\n",(x*x));
system ("pause");
}
int main ()
{
int y;
printf ("Entre com um numero: ");
scanf ("%d", &y);
printf ("\n");
tot(y);
return(0);
}

Digite Compile e Execute.

 

Antes de explicar o código fonte acima vou dar um resumo sobres os Argumentos.

Eles são as entradas que a função recebe. Com eles damos parâmetros as funções, um exemplo de argumento simples é o (x*x), que tem como produto um inteiro, que é impresso pelo "%d".

 

Observe que no início da função nós definimos um inteiro x, e observe também que em main quando vamos chamar a função tot definimos um argumento y. Isso faz com que o valor da variável y em main, seja copiado para variável x em tot.

 

Podemos também simplificar a função de tot colocando apenas para retornar o resultado de x*x.

#include <stdio.h>
#include <stdlib.h>
int tot (int x) /* Calcula o quadrado de x */
{
return (x*x);
}
int main ()
{
int y, res;
printf ("Entre com um numero: ");
scanf ("%d", &y);
printf ("\n");
res=tot(y);
printf ("O Quadrado e: %d\n", res);
system ("pause");
}

Digite Compile e Execute

 

Neste caso simplesmente atribuimos o valor de tot, a res, que é impresso na tela. tot neste caso tem a função de retornar do valor da multiplicação x*x.

 

#include <stdio.h>
#include <stdlib.h>
int conta (float a, float b, float c)
{
   return (a*b*c);
}
int main ()
{
   float x, y, z, res;
   printf ("Entre com um numero decimal (ponto ao inves de virgula): ");
   scanf ("%f", &x);
   printf ("\nEntre com outro numero decimal (ponto ao inves de virgula): ");
   scanf ("%f", &y);
   printf ("\nEntre com outro numero decimal (ponto ao inves de virgula): ");
   scanf ("%f", &z);
   res=conta(x, y, z);
   printf ("\a\nResultado da multiplicação: %f\n\n", res);
   system ("pause");
}

Digite, compile e execute

 

Observe que definimos mais de uma variável como parâmetro, se quisessemos poderiamos definir até um valor por exemplo, colocando o valor de pi ao invés de z ficando assim:

 

#include <stdio.h>
#include <stdlib.h>
int conta (float a, float b, float c)
{
   return (a*b*c);
}
int main ()
{
   float x, y, res;
   printf ("Entre com um numero decimal (ponto ao inves de virgula): ");
   scanf ("%f", &x);
   printf ("\nEntre com outro numero decimal (ponto ao inves de virgula): ");
   scanf ("%f", &y);
   res=conta(x, y, 3.1415);
   printf ("\a\nResultado da multiplicação: %f\n\n", res);
   system ("pause");
}

 

 

:yes: Prova :yes:

Escreva um programa que some dois inteiros fornecidos pelo usuário, e depois multiplique o valor da soma por um numero também fornecido pelo usuário, e retorne o valor da equação.

Aula 4 - Caracteres

 

O caractere é tratado no C, como um dado, esse dado tem o nome de char:

 

#include <stdio.h>
#include <stdlib.h>
int main ()
{
char letra;
letra='E';
printf ("%c\n",letra);
system ("pause");
}

Digite Compile e execute

 

char letra;

Como sabemos, devemos definir todas as variáveis no início do programa, assim fazemos com o caractere, que é definido pelo parâmetro "char". Um caractere pode ser uma letra ou um número, e é indicado por ' ' (apóstrofes). O código de controlhe dos caracteres é "%c".

O char também pode armazenar um valor inteiro, esse valo corresponde a um caractere. Esse código é conhecido como código ASCII, veja abaixo que o programa irá imprimir um número correspondente ao caractere pois dizemos ao printf para imprimir um inteiro mas estamos usando um char, isso acontece por que o printf usa o ASCII. Abaixo o programa irá imprimir o número 99 que corresponde ao caracter "c". Vale a pena lembra que a linguagem C é "Case Sensitive" ou seja A (maiúsculo) é diferente de a (minúsculo).

 

#include <stdio.h>
#include <stdlib.h>
int main ()
{
char letra;
letra='c';
printf ("%d\n",letra);
system ("pause");
}

Aqui 2 listas (a segunda é continuação da primeira :withstupidsmiley: ) dos caracteres ASCII

 

ascii001and7.gif

ascii001bon4.gif

 

A maioria das vezes queremos ler um caractere fornecido pelo usuário, para isso usamos getch () e getche (). Geralmente estas funções não estão disponíveis em Unix, pois não fazem parte do Padrão ANSI. Apesar disso podemos substituir estas funções pelo scanf ().

 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{
char letra;
letra = getch();
printf ("Voce pressionou a tecla %c", letra);
system ("pause");
}

#include <conio.h>

É por esse cabeçalho que não funciona em Unix, a não ser que você o possua, sem ele não se pode usar getch () ou getche ().

 

letra = getch();

Aqui o char "letra" não é um caractere, aqui ele define que o caractere será fornecido pelo usuário.

 

Agora vamos ver em como fazer isso com um scanf ():

#include <stdio.h>
#include <stdlib.h>
int main ()
{
char letra;
scanf("%c", &letra);
printf ("Voce pressionou a tecla: %c\n", letra);
system ("pause");
}

Aqui o scanf () ao invés de armazenar um número irá armazenar um caractere no char "letra". A Principal diferença é que no primeiro caso com o getch () o usuário simplesmente precisa apertar a tecla com o caractere, já com o scanf () o usuário precisa apertar <ENTER> depois de digitar o caractere. A Diferença entre getch () e getche () é que o primeiro apenas armazena o caractere, já o segundo imprime antes de armazenar.

 

 

:yes: Prova :yes:

Escreva um programa que leia 3 caracteres digitados pelo usuário, imprima os 3 juntos, e depois imprima o código ASCII dos 3, sendo cada código em uma linha.

Aula 5 - Strings

 

 

 

String é um vetor de caracteres, vamos estudar o vetor mais a frente, a string sempre acaba com um caractere nulo. Este caractere nulo pode ser representado pela barra invertida da seguinte forma '\0'. Vamos ver agora os fundamentos básicos para se usar uma string.

#include <stdio.h>
#include <stdlib.h>
int main ()
{
char frase[100];
printf ("Digite uma frase: ");
gets (frase);
printf ("\a\nDigitou: %s\n", frase);
system ("pause");
}

Digite Compile e execute

 

char frase[100];

Bom, aqui definimos uma string chamada "frase". O "[100]" depois de "frase" define o tamanho máximo da string, se você entrar com uma string maior o programa pode aceitar, mais será uma catástrofe, veremos porque mais à frente. Bom então o tamanho máximo da string é 99. Sim, pois no C, a contagem começa do 0.

 

gets (frase);

Aqui nós pegamos uma string digitada pelo usuário, e armazenamos na string "frase". Para fazer isso nós usamos o comando gets () já incluído em stdio.h.

 

Suponhamos agora que nós temos uma string com nome "str" e a string armazenada seja "tibia", e nós queremos acessar o segundo caractere (i) para isso basta indexarmos ou seja:

 

str[1] = 'i';

Mas porque estamos acessando 'i' e não 't' já que colocamos "1"? Lembre-se que o C começa a contar do 0 se quisermos acessar o caractere 't' devemos colocar [0]. Com isso podemos até mesmo alterar um caractere da string se fizessemos assim: str[1] = 't'; e imprimir na tela, teriamos uma string escrota :louco: : "ttbia".

 

printf ("\a\nDigitou: %s\n", frase);

Bom vocês já devem ter percebido que %s serve para imprimir uma string. Acho que agora é um bom momento para mostrar a tabela dos códigos de controle:

Vou improvisar Aqui:

 

  1. %d
  2. %f
  3. %c
  4. %s
  5. %%

Correspondem à:

 

  1. Inteiro
  2. Float
  3. Caractere
  4. String
  5. %

 

 

#include <stdio.h>
#include <stdlib.h>
int main ()
{
char frase[100];
printf ("Digite uma frase: ");
gets (frase);
printf ("\a\nDigitou: %s\n", frase);
printf ("O Segundo Caractere da Frase e: %c\n", frase[1]);
system ("pause");
}

Digite Compile e Execute

Bom observe que queremos imprimir o segundo caractere digitado pelo usuário, para isso acessamos com a string "frase" indexada do número do seu segundo caractere [1], e imprimimos usando um código de controlhe %c já que queremos imprimir somente um caractere.

 

 

 

:yes: Prova :yes:

Bom, vou passar duas provas:

1 Escreva um programa que leia uma string, imprima segundo e o quarto caractere da string juntos, e depois separados (cada um em uma linha), imprima a string, depois imprima o código ASCII dos dois caracteres juntos e depois separados. Difícil? Olha o debaixo ^^ :thumbsdown:

2 Agora essa é pros mais espertos :slap: : Crie um programa que leia uma string. Depois disso pessa o número do caractere da string que o usuário quer ver. Após isso, imprime o número digitado pelo usuário, imprima o caractere, imprima o código ASCII do caractere, e depois a string (todos separados).

:w00t: consgt9.jpgGalera to ocupado com o grupo de programação, mas em breve voltarei consgt9.jpg :w00t:

 

Tutorial 100% Criado por Tesla (Victor França Lopes)

Lembrando: Sou apenas um estudante e não um professor ^^

Qualquer dúvida: [email protected] (Online quase 24Hrs)

Editado por tesla

Compartilhar este post


Link para o post
Compartilhar em outros sites
Majesty    1755
Majesty

Tutorial Aprovado. Obrigado pela sua contribuição.

Movido para seção Programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pedro    1
Pedro
Por que aprender o C?

Como a maioria já deve saber o C++ é o incremento do C (daí o "++"), e na minha opinião, para você aprender o incremento, primeiro deve-se aprender a base.

Não fala o que você não sabe. o C++ trouxe ao C a orientação a objetos, mais a diferença de code pros dois é praticamente insignificante. Aprender C não é perda de tempo, mais dizer que você tem que aprender um, para aprender outro, isso é bobeira.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Frozen Hearth    0
Frozen Hearth

Gostei do Tuto

Sou novo aki na Networks tbm,

e agora esou kerendo aprender a programar

portanto to pegando de baixo mesmo

muito obrigado pelo tuto ai ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
kito171    0
kito171

No meu Tecnico Eu Aprendi C++ por 1º e axo o C++ mto mais facil que o C tanto que agora dps de ter aprendido o C++ to me aprofundando em C, na aula terminei POO e vo pra POO2.

voltando ao assunto eu curto muito mais o C++ :D

Vai ver e por que eu consigui enterder quase todos codigos ;D

Mto bom Tuto Aprovadissimo!

Compartilhar este post


Link para o post
Compartilhar em outros sites
fadeooo    0
fadeooo

Cara Muito bom(bom msm)

e pra mim q to entrando agr nessa area isso foi ótimo

Muito orbrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites
\o\ Wolf /o/    0
\o\ Wolf /o/

Oh my god! muito bom comecei a programar ontem, li todas as aulas e no começo tive algumas dificuldades mais ai fui conseguindo e foi ficando facil as provas, fiz todasa menos a prova 5 parte dois que n entendi O.o Mt bom tudo posta mais cara ! gostei mt mesmo! vles

Compartilhar este post


Link para o post
Compartilhar em outros sites
pirueletrico    0
pirueletrico

Muito bom cara! Parabéns aê! :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sethz    0
Sethz

Vlw!

Bom post vai ajudar muito :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fehh Kaupert    0
Fehh Kaupert

Opa belo topico, era o que estava procurando.

 

F.Kaupert!

Compartilhar este post


Link para o post
Compartilhar em outros sites
tesla    0
tesla

galera pra qm aprendeu C++ primeiro parabens, eu nao estou aqui obrigando ninguem a aprender o C primeiro, só estou dando a minha opinião, cada um com seu cada um :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites
BenGo    0
BenGo

Cara Muito bom

e pra mim que to entrando agora nessa area isso foi ótimo

Compartilhar este post


Link para o post
Compartilhar em outros sites
DungeonTales    0
DungeonTales

Muito legal, mas e as outras aulas?

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites
tesla    0
tesla

eh q eu to ultimamente sem tempo justamente preparando um negocio pra vcs, tem tudo a ver com aulas, vcs vaum adorar, mas por enqt tem q esperar ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
LordDarkk    0
LordDarkk

Uma vez consegui fazer uma calculadora de c++, mas ai depois parei de ler os tutoriais fiquei com mta preguiça

Compartilhar este post


Link para o post
Compartilhar em outros sites
hacker4ever.sath    0
hacker4ever.sath

cara vc é foda vlw mesmo,

Compartilhar este post


Link para o post
Compartilhar em outros sites
AdrianN56    0
AdrianN56

Vlw cara, Ajudo muito

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ben 10    0
Ben 10

muito loko lek

Compartilhar este post


Link para o post
Compartilhar em outros sites
FSF.FSF    0
FSF.FSF

Tutorial Aprovado

Compartilhar este post


Link para o post
Compartilhar em outros sites
RolissOO    0
RolissOO

Tutorial muito bom, fiz todos os testes menos o segundo do cinco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×