Jump to content

Mini - Curso de C - Para iniciantes


Localhost

Recommended Posts

Olá pessoal, decidi fazer este mini curso de C porque me têm ajudado muito e achei que estava na hora de retribuir.

Ora bem, eu não vou fazer este curso de uma maneira muito exaustiva ou seja não vou andar a postar novas matérias todos os dias mas sempre que puder cá estarei para actualizar o curso.

Ora bem nesta primeira "aula" vamos conhecer alguns conceitos básicos que são importantes para se começar bem a programar.

Primeira Aula.

Conceitos Básicos

O que é um compilador?

- Um compilador é um programa que transforma o código fonte em código de máquina. Para quem estiver em Windows recomendo o Dev-C++, que além não ser um compilador mas sim um IDE tem integrado um compilador, digo isto por experiência própria. Para quem estiver em Linux o gcc que é apenas um compilador é muito bom (:

O que é uma biblioteca?

- Uma biblioteca é um ficheiro que contêm funções que ajudam o programador. Neste mini-curso vamos utilizar a biblioteca stdio.h (standard input and output library - Biblioteca de entrada e saída padrão), veremos isso mais à frente.

O que são comentários?

- Comentários são pequenas ajudas no código que não são interpretados pelo compilador e que servem para que se algum dia voltares ao código perceberes ou até se o deres a ler a alguém.

Pronto estes são os conceitos mais importantes que devem ter em mente.

Vamos então ao nosso primeiro código.

#include <stdio.h>

int main()
{
   printf("Hello world\n");
   return(0);
}

Vou passar então à explicação do código.

#include <stdio.h>


Esta linha inclui a biblioteca stdio.h que já foi referida antes. Todas as funções que estão nesse ficheiro são então importados para o teu código fonte. a sintaxe para incluir qualquer biblioteca é:
#include <nome_da_biblioteca.h>


    • int main()
      Esta linha inicia a função principal de todos os programas que vocês fizerem. Têm de saber duas coisas sobre a função main: É que é sempre a primeira a ser executada e que é como eu já disse a função principal. Têm de ter em atenção é que todas as funções são iniciadas por um { e terminadas com um }. Também existem outros tipos de declarar a função main, veremos mais à frente.
      printf("Hello world\n");
      Nesta linha chamamos a função printf, que é como devem calcular a função que mostra alguma coisa no vosso command prompt ou terminal ou shell ou console 😞. Aí então surgem três dúvidas.
      1- O que é aquele \n no final da frase?
      2- Então antes tinhas falado em funções e que começavam sempre por { e acabavam em } e agora é diferente.
      3- Porque estão ali os ( ) e o ; ?
      1- O \n é um escape character e significa new line ou seja o nosso programa vaí mostrar hello world e depois vai "saltar" uma linha. Existem alguns escape characters. Deixo aqui um link para alguns:
http://www.wilsonmar.com/1eschars.htm.
2- Ora bem, isto é simples, a diferença é que quando somos nós que criamos no nosso programa uma função (isto será discutido mais tarde) são utilizados os { } para iniciá-la e fechá-la, respectivamente mas quando chamamos uma função de fora não precisamos disto para nada. Se não perceberam não se preocupem pois não é o mais importante!
3- Os ( ) são o inicio e o fim, respectivamente, dos argumentos que a função necessita, neste caso os argumentos são "hello world\n". O ; é o final de cada statement em C, deve ser sempre incluído no final de cada linha de código.

return(0)


Esta linha termina a execução de main. O return significa que é retornado para nós algum valor em que o tipo do valor (os tipos de dados ou valor vão ser estudados mais à frente) é definido na função main. Daí na função main ter int (integer = inteiro). Neste caso este valor é só mesmo para o nosso SO "ficar contente" como eu costumo dizer mas mais para a frente veremos que é muito importante estes retornos.

Pronto esta foi a nossa primeira aula. Espero que venham sugestões para este tópico. Eu vou continuar e talvez já amanhã tenha aqui uma matéria nova. Por isso fiquem atentos. Para os mais experientes, se detectarem algum erro avisem (:


Segunda Aula

Ora bem gostava de começar esta segunda aula com uma espécie de segredo que penso que seja ele o responsável pela divisão entre bons programadores e maus programadores, isto é a minha opinião. O segredo da programação está na generalização ou seja nunca se deve terminar um programa a pensar que só é necessário que ele funcione só para um caso, por exemplo. Fazer um programa que faça a soma de dois números. Este programa se der só para somar dois números é inútil pois o estamos a limitar as suas capacidades a apenas um caso. Isto não quer dizer que não façam os vossos testes quando estão a meio de um projecto mas quando chegarem ao fim testem todos os casos para ver se ele está operacional em todos os casos, igualmente.

Isto tudo porquê? Porque hoje vou introduzir uma das matérias mais importantes da programação. As variáveis.  Para começar vamos tentar perceber de uma maneira simplificada o que são as variáveis.

Variáveis

- São "locais" na memória onde são guardados dados, estes dados são ou definidos pelo programador ou pelo usuário.

Existem vários tipos de variáveis, nesta introdução apenas falaremos no tipo inteiro (int) do qual já falámos. Ora bem, antes de mais nada vamos lá ver programaticamente como se declara uma variável no nosso programa. Segue-se a seguinte sintaxe:

tipo_de_variável nome_da_variável

Mas porque será necessário declarar o tipo da variável? E o nome? Bem o nome é um pouco obvio. Se não fosse o nome seria impossivel (ou talvez não e veremos mais para a frente) nos referirmos ao valores que definimos na variável. Quanto ao tipo é simples: o compilador precisa de saber quantos bytes vai ter de solicitar à memória para gravar a variável (cada tipo de variável tem diferentes tamanhos, falarei disso na próxima aula). Mas vamos lá então fazer dois programas para vocês finalmente perceberem do que estamos a falar até aqui.

#include <stdio.h> //Isto é um comentário, esta é a sintaxe para se fazer um comentário.

int main()
{
  printf("Você tem 100 anos\n");
  return(0);
}

Na verdade este código não tem nada de novo, incluimos a "biblioteca" stdio, iniciamos a função main, chamamos a função printf, com o new line character e terminamos a função main com o return(0), isto tudo a passar pelos { }. Mas e se agora quisessemos fazer isto com variáveis, como por exemplo armazenar o valor 100 dentro de uma variável chamada idade? Vamos lá então:

#include <stdio.h> /* Também se podem fazer comentários assim no entanto tem de se fechar */

int main()
{
  int idade = 100;
  printf("Você tem %d anos\n", idade);
  return(0);
}

Bem agora tudo ficou confuso não? Então vamos lá às perguntas que eu acho que vocês supostamente se devem estar a colocar.

1- O que é aquele = 100 a seguir à declaração da variável?

2- O que é aquele %d na função printf?

3- Porque é que a função printf tem uma virgula e depois o nome da variável?

1- Ora bem, aproveito a primeira suposta questão para iniciar uma nova coisa que são os operadores matemáticos e o operador de atribuição, ora bem, o operador de atribuição server para atribuir a alguma alguma coisa. Para fazer essa atribuição segue-se a seguinte sintaxe:

o_que_vai_receber = o_valor_que_vai_ser_atribuído

, então naquele caso atribuímos o valor 100 à variável idade. Quanto aos operadores aritméticos ou matemáticos são os seguintes: +, -, *, /, soma, subtracção, multiplicação e divisão, respectivamente.

2- Esta é a parte talvez mais confusa para vocês mas é simples. Este %d significa que no local onde ele está será imprimido um valor inteiro, ou seja, a variável idade de que tipo é? Do tipo inteiro, então o que vai ser imprimido vai ser Você tem 100 anos, mas então vocês perguntam-se, como é que a função sabe que deve relacionar o %d à variável idade? E é aqui que partimos para a 3ª pergunta.

3- O ,idade significa que o segundo argumento da função printf será a variável idade, e essa variável idade será imprimida na primeira vez que for mostrado o %d, então pode-se concluir uma coisa, é que cada vez que vocês tiverem mais variáveis para imprimir devem colocá-las por ordem consoante a ordem de aparecimentos dos %d ou outros tipos.

Vamos então a outro programa.

#include <stdio.h>

int main()
{
   int num1 = 5;
   int num2 = 5;
   int num3 = num1+num2;
   printf("A soma de num1 com num2 é: %d\n", num1+num2);
   printf("%d é a soma de num1 com num2\n", num1+num2);
   printf("Agora de outra maneira: %d\n", num3);
   return(0);
}

Como podem ver neste programa imprimimos 10 de várias maneiras e também podem ver que não é necessário o %d estar sempre no mesmo sitio, aliás ele pode estar em qualquer sitio da frase. Isto acontece também com os escape characters. Vamos ver agora para terminar um outro programa.

#include <stdio.h>

int main()
{
   int num1 = 10;
   int num2 = 50;
   printf("O valor de num1 é: %d e o valor de num2 é: %d\n", num1, num2);
   printf("O valor de num1 é: %d\nO valor de num2 é: %d\n", num1, num2);
   return(0);
}

Ora bem, neste programa passámos vários argumentos à função printf. Estudem e modifiquem cada um dos casos para perceberem!

Exercício desta aula. Façam uma calculadora com os operadores ensinados nesta aula que some, subtraia, divida e multiplique dois valores à vossa escolha.

Nesta aula, vimos muita coisa, no entanto ainda não chegamos à parte de pedir ao usuário os valores que ele quer que nós somemos ou façamos outras coisas. Prometo que será estudado na próxima aula.

Mais uma vez, peço aos mais experientes que se detectarem algum erro que me avisem, e tenham dó de mim 😉

here since 2009

Link to comment
Share on other sites

O que é um compilador?[/color]

- Um compilador é um programa que transforma o código fonte em código de máquina. Para quem estiver em Windows recomendo o Dev-C++, digo isto por experiência própria. Para quem estiver em Linux o gcc é muito bom (:[/color]

Como já explicaram, o Dev-C++ é um IDE e o GCC é um compilador. E tendo em conta que o desenvolvimento do Dev-C++ já parou em 2005, eu indicaria o CodeBlocks no seu lugar.

O que é uma biblioteca?

- Uma biblioteca é um ficheiro de extensão .h (de header) que contêm funções que ajudam o programador. Neste mini-curso vamos utilizar a biblioteca stdio.h (standard input and output library - Biblioteca de entrada e saída padrão), veremos isso mais à frente.

Uma biblioteca não é um ficheiro .h. Uma biblioteca é um ficheiro .so ou .a, dependendo se a linkagem é feita dinamicamente ou estaticamente. Os ficheiros .h apenas contêm os protótipos das funções que existem nessas bibliotecas. Como não definimos a implementação destas funções, o linker vai detectar que apenas se conhecem os seus protótipos e vai então pesquisar nas bibliotecas por funções que correspondam aos protótipos incluídos através do header file.

  • #include <stdio.h> -> Esta linha inclui a biblioteca stdio.h que já foi referida antes. Todas as funções que estão nesse ficheiro são então importados para o teu código fonte. a sintaxe para incluir qualquer biblioteca é:

#include <nome_da_biblioteca.h>
Já expliquei em cima o funcionamento disto.
  • int main()

-> Esta linha inicia a função principal de todos os programas que vocês fizeram. Têm de saber duas coisas sobre a função main: É que é sempre a primeira a ser executada e que é como eu já disse a função principal. Têm de ter em atenção é que todas as funções são iniciadas por um { e terminadas com um }.

Atenção que segundo o standard C99, existem apenas 2 tipos possíveis de cabeçalhos para a main:

int main(void): quando não recebe argumentos via linha de comandos

int main(int argc, char** argv): quando recebe argumentos via linha de comandos

Link to comment
Share on other sites

Sim, mas o facto de ele trazer um compilador integrado (MinGW), não faz dele um compilador. É um IDE. Não interessa se traz ou não um compilador. ;-)

Do mesmo modo, o MinGW, por trazer um compilador, não é um compilador 🙂 . O compilador presente no MinGW continua a ser o GCC.

Já que estamos numa de corrigir 😕

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.