Localhost Posted December 27, 2009 at 09:21 PM Report Share #302663 Posted December 27, 2009 at 09:21 PM 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 More sharing options...
Localhost Posted December 27, 2009 at 09:36 PM Author Report Share #302668 Posted December 27, 2009 at 09:36 PM Se algum moderador me quiser ajeitar isto para ficar mais legível que o faça visto que não sou muito bom em estética 😞 here since 2009 Link to comment Share on other sites More sharing options...
_deXter Posted December 27, 2009 at 09:49 PM Report Share #302672 Posted December 27, 2009 at 09:49 PM Não li... Mas chamou-me logo à atenção o facto de dizeres que o Dev-C++ é um compilador, o que não é verdade. O dev-C++ é um IDE, o gcc sim é um compilador. De qualquer forma, parabéns pela iniciativa. Link to comment Share on other sites More sharing options...
IRX773 Posted December 27, 2009 at 09:52 PM Report Share #302673 Posted December 27, 2009 at 09:52 PM Eu não sei mas ou inamovível ou para a parte dos tutoriais de C isto ia 😉 .... é util para os novatos em C. Não li... Mas chamou-me logo à atenção o facto de dizeres que o Dev-C++ é um compilador, o que não é verdade. O dev-C++ é um IDE, o gcc sim é um compilador. O DevC++ é um IDE com compilador 😞 Link to comment Share on other sites More sharing options...
_deXter Posted December 27, 2009 at 09:59 PM Report Share #302677 Posted December 27, 2009 at 09:59 PM Eu não sei mas ou inamovível ou para a parte dos tutoriais de C isto ia 😉 .... é util para os novatos em C. O DevC++ é um IDE com compilador 😞 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. ;-) Link to comment Share on other sites More sharing options...
Localhost Posted December 27, 2009 at 10:00 PM Author Report Share #302678 Posted December 27, 2009 at 10:00 PM LOL, sim está bem. Mas isso também pouco é importante 😞 EDIT: Amanhã já trago coisas a sério (: Oh Dexter, mas tecnicamente é um compilador xD here since 2009 Link to comment Share on other sites More sharing options...
_deXter Posted December 27, 2009 at 10:20 PM Report Share #302684 Posted December 27, 2009 at 10:20 PM Repara que tu colocas o gcc ao mesmo nível que o Dev-Cpp... Acho que seria importante corrigires isso, mas o mini-curso é teu, tu é que sabes. 😞 Link to comment Share on other sites More sharing options...
Baderous Posted December 27, 2009 at 10:32 PM Report Share #302688 Posted December 27, 2009 at 10:32 PM 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 More sharing options...
Localhost Posted December 28, 2009 at 10:48 AM Author Report Share #302721 Posted December 28, 2009 at 10:48 AM Pronto, já alterei tudo, obrigado a todos pelos alertas mas às vezes é complicado saber esses pormenores todos ? here since 2009 Link to comment Share on other sites More sharing options...
Knitter Posted December 28, 2009 at 11:30 AM Report Share #302729 Posted December 28, 2009 at 11:30 AM 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 😕 www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Localhost Posted December 28, 2009 at 11:31 AM Author Report Share #302730 Posted December 28, 2009 at 11:31 AM Pessoal, onde é que ponho as próximas "aulas"? here since 2009 Link to comment Share on other sites More sharing options...
Knitter Posted December 28, 2009 at 11:40 AM Report Share #302733 Posted December 28, 2009 at 11:40 AM Ou colocas aqui, ou colocavas tudo na wiki. Talvez a wiki fosse um local melhor e deixavas aqui o link para quem visse o tópico. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Localhost Posted December 28, 2009 at 11:41 AM Author Report Share #302734 Posted December 28, 2009 at 11:41 AM Eu vou colocar tudo no meu primeiro post se depois algum mod. quiser colocar na wiki tudo bem (: here since 2009 Link to comment Share on other sites More sharing options...
Knitter Posted December 28, 2009 at 11:48 AM Report Share #302737 Posted December 28, 2009 at 11:48 AM Se o texto crescer muito vais encontrar um limite de caracteres, é uma limitação do fórum. Ao colocares logo na wiki ajudavas já que evitava alguém ter o trabalho de copiar tudo mais tarde 😕 www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Localhost Posted December 28, 2009 at 12:22 PM Author Report Share #302742 Posted December 28, 2009 at 12:22 PM Depois faço isso 😕 Vê agora se detectas alguma coisa na segunda aula que já está postada. Esta segunda parece-me estar boa, pelo menos acho que está melhor que a primeira. here since 2009 Link to comment Share on other sites More sharing options...
_deXter Posted December 28, 2009 at 01:57 PM Report Share #302763 Posted December 28, 2009 at 01:57 PM 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 😕 Obrigado pela correcção. Desconhecia. 🙂 Link to comment Share on other sites More sharing options...
Localhost Posted December 28, 2009 at 02:16 PM Author Report Share #302771 Posted December 28, 2009 at 02:16 PM O que acham da segunda aula? here since 2009 Link to comment Share on other sites More sharing options...
Baderous Posted December 28, 2009 at 02:25 PM Report Share #302773 Posted December 28, 2009 at 02:25 PM Continuas a não colocar a main como deve ser. Link to comment Share on other sites More sharing options...
IRX773 Posted December 28, 2009 at 04:02 PM Report Share #302803 Posted December 28, 2009 at 04:02 PM Continuas a não colocar a main como deve ser. Yaps ... 😕 main(int argc, char*argv[] ) Acho eu .... 🙂 Link to comment Share on other sites More sharing options...
KiNgPiTo Posted December 28, 2009 at 04:43 PM Report Share #302812 Posted December 28, 2009 at 04:43 PM Se não for para usar argumentos, não costumo pôr o argc e o argv... uso um simples int main(void) e acho que está correcto 😕 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now