Archive for the ‘programação’ Category
Operadores
Depois de falar sobre os tipos de variáveis que existem na linguagem C, chegou a hora de aprender a “brincar” com essas variáveis. Essa brincadeira é feita com o uso dos operadores. Você já usou alguns operadores no post passado, mas deve tê-los ignorado de tão óbvios que são. Porém alguns operadores não são tão óbvios, mas igualmente poderosos.
Operador de atribuição
Vamos começar com o operador de atribuição, representado pelo sinal “=”. Esse e sinal é usado para atribuir o valor de uma expressão a uma variável. A expressão está sempre à direita do sinal e a variável à esquerda, como no exemplo:
x = a + b;
À variável “x” será atribuído o resultado da soma “a+b” (expressão). A expressão pode ser composta de uma única variável ou ser muito complexa e composta de várias variáveis e operadores ou, ainda, ser o retorno de uma função o que é muito comum em C.
O C também suporta atribuições múltiplas onde você pode jogar o resultado de uma única expressão em mais de uma variável ao mesmo tempo.
x = a = b = 0;
Operadores Aritméticos
Para escrever expressões e brincar com as variáveis é preciso, muitas vezes, de operadores aritméticos. Esses operadores são usados para fazer cálculos matemáticos. A tabela a seguir lista os operadores aritméticos de C.
| Operador | Ação |
|---|---|
| - | Subtração, também menos unário |
| + | Adição |
| * | Multiplicação |
| / | Divisão |
| % | Módulo da divisão (resto) |
| ++ | Incremento |
| – | Decremento |
Desses operadores apenas 3 devem ser novidade. Os operadores de incremento, decremento e módulo da divisão. Vou começar explicando o módulo da divisão.
O módulo da divisão retorna o resto da divisão entre dois inteiros. Se você dividir 3 por 2 o resulto é 1,5. Mas vamos supor que você quer o resultado e o resto como valores inteiros. Então você vai fazer assim:
int q,r; q = 3/2; r = 3%2;
Como “q” é uma variável inteira o resultado da divisão vai ser arredondado para baixo e “q” vai ter o valor 1. A variável “r” vai ficar com o resto (que preconceito) da divisão, ou seja, 1 também. Você pode não ver muita utilidade para esse operador agora, mas conforme a necessidade for aparecendo você vai agradecer ao Dennis Ritchie pelo operador.
C inclui dois operadores úteis geralmente não encontrados em outras linguages contemporâneas ao C. São os operadores de incremento e decremento, ++ e –. O operador ++ soma 1 ao seu operando, e — subtrai 1. Ambos os operadores de incremento de decremento podem ser utilizados como prefixo ou sufixo do operando. Por exemplo:
x = x + 1;
pode ser escrito
++x;
ou
x++;
Existem ainda operadores relacionais e lógicos que serão apresentados junto com as estruturas de controle de fluxo. Os operadores de ponteiros serão vistos junto com ponteiros, claro. Até a próxima, pessoal.
Tipos básicos e variáveis
Neste post vamos começar a falar sobre expressões em C. As expressões e C são mais gerais e poderosas que na maioria das outras linguagens de programação. Expressões são formadas por dois elementos básicos em programação: dados e operadores. Os dados são representados por variáveis ou constantes que podem ser de alguns tipos definidos pela linguagem. A linguagem C possui 5 tipos básicos de dados que podem ser modificados de acordo com a necessidade do programador.
Os cincos tipos básicos
Há 5 tipos básicos de dados em C: caracter (char), inteiro (int), ponto flutuante ou real (float), ponto flutuante de precisão dupla (double) e sem valor (void). Todos os outros tipos de dados em C são derivados desses 5. Para o iniciante esses tipos bastam. Já dá para fazer muita coisa apenas com int e char, imagine com float e double juntos. O void foi apresentado mas você, iniciante, não verá muita utilidade nele por enquanto. Mas já adianto que esse tipo é muito útil quando você quer criar uma coleção de dados genéricos.
Quando uma variável é criada, geralmente, damos um nome ou um identificador a ela. Esses identificadores podem variar de um a diversos caracteres. O primeiro caractere deve ser uma letra ou um sublinhado e os caracteres subsequentes devem ser letras, números ou sublinhado. Lembrando que letras maiúsculas e minúsculas fazem diferença. Por exemplo: Media e media são dois identificadores diferentes para o compilador.
Onde as variáveis são declaradas
As variáveis são declaradas em três lugares básicos: dentro de funções, na definição dos parâmetros das funções e fora de todas as funções. Estas são variáveis locais, parâmetros e variáveis globais, respectivamente.
Variáveis locais
Variáveis que são declaradas dentro de funções são chamadas de variáveis locais. Essas variáveis só podem ser usadas dentro do bloco da função. Imagine a função como uma caixa onde as variáveis ficam guardadas. Essas variáveis não podem sair da caixa, exceto em casos onde uma caixa pede para outra caixa realizar uma operação. Nesse caso as caixas trocam informação através dos parâmetros de entrada e saída da função.
Parâmetros
Cada função define as informações necessárias e que informação vai devolver para a função que requisitou essa informação. É através desses parâmetros de entrada e saída que as caixas conversam. Esses parâmetros são utilizados como variáveis locais dentro da função. Ainda não vamos criar funções, mas vamos usar algumas.
Variáveis globais
As variáveis globais estão fora de qualquer caixa, por isso todas as caixas podem usar essas variáveis. Essas variáveis existem durante todo o tempo em que o programa é executado e todas as funções as “enxergam”. Você cria variáveis globais declarando-as fora de qualquer função. Elas podem ser acessadas por qualquer expressão independente de qual bloco de código contém a expressão. Esse tipo de declaração deve ser evitado para evitar consumo excessivo de memória e problemas com o valor dessa variável. Como todas as funções têm acesso a ela, fica mais difícil o controle da mesma.
Exemplo de código
Como exemplo de uso das variáveis, vamos escrever um programa que calcule a média entre dois números passados pelo usuário. Ainda não vamos definir funções mas vamos usar o scanf para pegar a entrada do teclado e jogar numa variável e printf para apresentar os resultados.
#include
int main()
{
int num1;
int num2;
float media;
printf("Digite o primeiro numero: ");
scanf("%i",&num1);
printf("Digite o segundo numero: ");
scanf("%i",&num2);
media = (num1+num2)/2;
printf("A média entre %i e %i é %f.\n",num1,num2,media);
return 0;
}
Como trabalho para vocês, descubram o que o scanf faz e quais os parâmetros que ele aceita. Não vou postar meu email aqui então usem a página de contatos para entrar em contato comigo com dúvidas ou sugestões. Abraço.
Entendendo seu primeiro código
Hoje vou explicar exatamente o que cada coisa faz no código que você usou para fazer o seu primeiro programa em linguagem C. Esse primeiro exemplo é bem simples, mas já serve para ilustrar alguns dos principais conceitos da linguagem.
#include<stdio.h>
Essa primeira linha de código diz para o compilador que você vai usar as funções contidas no arquivo stdio.h, esse arquivo contêm funções de entrada e saída.
Entrada e saída é como o programa “conversa” com o usuário. O computador possui alguns periféricos de entrada, como o mouse e o teclado, e periféricos de saída, como monitor e impressora. Portanto essas funções servem para mandar ou receber “informações” do usuário.
main()
É a função principal que todo programa em linguagem C tem que ter. Quando você executa o programa compilado, a função main() é chamada pelo computador que começa a execução do seu programa. Você deve estar se perguntando porque falo tanto sobre funções.
Funções são os blocos básicos de programação em C. Quando você escreve um programa para realizar uma determinada tarefa, essa tarefa pode ser quebrada em vários pedaços menores (dividir para conquistar) e implementados independentemente. Esses “pedaços menores” são as funções que serão vistas mais a fundo nos próximos posts.
{ e }
Esses dois símbolos servem para determinar onde uma função começa e termina. São chamados de limitadores de bloco ou escopo. Todas as variáveis que você declarar entre as chaves, morrem assim que você fecha a chave.
printf(“Olá, Mundo”);
printf é uma das funções contidas no arquivo stdio.h e serve para escrever na tela o texto passado como parâmetro. O parâmetro aceito pelo printf é uma string. Strings são vários caracteres encadeados, formando um texto, e são escritas entre aspas. O compilador reconhece as aspas e sabe que dentro delas está um texto que não faz parte do código, ou seja, não é função nem variável.
O ponto-e-vírgula serve para dizer ao compilador que aquela linha de código acabou. O compilador do C simplesmente ignora quebras de linha e espaços em branco, mas entende o ponto-e-vírgula como final de um comando.
Nos próximos posts veremos com mais detalhes o que são variáveis, funções, parâmetros e operadores.
Editor e compilador
Para você começar a programar, você vai precisar de duas coisas. Na verdade são três, mas se você está lendo isso é porque você já tem a primeira. Um programa é escrito, código-fonte, e depois compilado, executável. Portanto você vai precisar de um editor de texto e um compilador da linguagem C que vai transformar o seu código em um programa propriamente dito.
Editor
Basicamente qualquer editor de texto serve, desde o notepad e o vi até ferramentas de desenvolvimento mais sofisticadas como o eclipse. Eu, particularmente, prefiro usar direto um editor de texto mesmo, pois são muito mais fáceis de usar que uma IDE e você se concentra mais em programar e não aprender a usar a ferramenta. Vamos só aprender a programar, depois você escolhe uma ferramenta para você usar.
Eu uso o emacs, ele é bastante simples para o iniciante e tem umas coisas modernas se você quiser fazer umas graças com ele.
Compilador
Depois que você tiver escrito o código do seu programa, você vai precisar transformar esse código em um programa usando um compilador. No ambiente Unix/Linux o gcc é unanimidade, mas se você usa Windows existe uma implementação do gcc para você usar. O DJGPP é o “gcc portado para o dos” e funciona igualzinho o primo do unix.
Olá, Mundo!
Siga as instruções dos sites e instale o gcc, depois abra o seu editor preferido e cole essas linhas lá:
#include<stdio.h>
main()
{
printf("Olá, Mundo!!!");
}
Feito isso salve o arquivo como ola.c e abra um console (cmd ou xterm), vá na pasta onde salvou o código e rode o gcc para compilar o arquivo:
gcc ola.c -o ola
Se o gcc não retornar nenhum erro, você vai ver que o arquivo ola ou ola.exe foi criado. Rode o arquivo e você vai ter “Olá, Mundo!!!” escrito na sua tela. Parabéns, você criou, compilou e rodou o seu primeiro programa feito em linguagem C.
A Linguagem C
Por que começar com C?
Eu comecei a programar com C e acho que todo mundo deveria fazer o mesmo. Ela é simples o bastante para o novato entender e poderosa o suficiente para um programador mais avançado. Por ser uma linguagem de médio nível, ela usa alguns conceitos que são implícitos em outras linguagens como o Java, Python, C# e mais algumas linguagens que estão na moda.
Eu já vi muito cara bom de Java fazer barbaridades por não entender direito o que é escopo de função e ponteiro. E isso você vai aprender no C naturalmente, pois você é obrigado a usar esses conceitos.
Todas essas características tornam o C uma linguagem simples para o iniciante e poderosa para o avançado. Basta lembrar que o Windows e o Linux foram feitos em C que você já tem uma idéia.
As origens de C
A linguagem C foi inventada e implementada por Dennis Ritchie em um sistema Unix. C é o resultado de um processo de desenvolvimento que começou com a linguagem BCPL. Do BCPL veio o B e do B veio o C.
Uma linguagem surgiu com melhorias e sendo uma opção ao desenvolvimento de software. O C foi criado no Unix para o Unix, mas com a popularização dos microcomputadores, um grande número de implementações de C foi criado. Essa bagunça persistiu até 1983 quando o ANSI resolveu montar um comitê para padronizar a linguagem.
Visão geral de C
O C é uma linguagem estruturada de médio nível. Estruturada porque ela segue um fluxo de execução que percorre todo o fonte até o final da execução. Uma linguagem estruturada permite muitas possibilidades de programação como construções de laços e controle. Ela também permite que você escreva seu código em qualquer lugar de uma linha e não exige um conceito rigoroso de campo.
É considerado uma linguagem de médio nível pois possui características de baixo nível, manipulação de bits, bytes e endereços — elementos básicos com os quais o computador funciona, e alto nível, implementação de tipos de dados.
Termos mais usados
Os termos a seguir são bastante utilizados em programação de computadores:
- Código-fonte
- O texto de um programa que o programador pode ler e é a entrada para o compilador, que transforma o código em um arquivo executável.
- Código-objeto
- Tradução do código-fonte de um programa em código de máquina que o computador pode ler e executar.
- Biblioteca
- Arquivo contendo as funções que seu programa pode usar.
- Tempo de compilação
- Eventos que ocorrem enquanto seu programa é compilado.
- Tempo de execução
- Eventos que ocorrem enquanto seu programa é executado.




