Ponto V!

Home C/C++ Curso de C Parte 1 - Expressões em C (1ª Parte)
Soraia Barbosa
Parte 1 - Expressões em C (1ª Parte)Imprimir
Escrito por Soraia Barbosa

Olá mundo! Antes de qualquer coisa, vou mostrar o programinha clássico chamado "Hello World!" ou "Olá mundo!" para você se familiarizar com a estrutura básica de um programa em C.


Observe o código:
/*Programa Olá Mundo! */

#include <stdio.h>

int main() 
{
   printf("Olá mundo!");
   getchar();
}


Digite o programa para já ir se acostumando com a linguagem e execute. O resultado deve ser uma tela, com a frase: "Olá Mundo!".

Agora vou explicar o programa por partes:

/*Programa Olá Mundo! */ 

Isso é um comentário, tudo que estiver entre /* e */ será ignorado pelo programa, você pode escrever o que quiser, os comentários servem para adicionar observações para você se localizar melhor no código. Existem dois tipos de comentários:

// Se você colocar duas barras como essa, que estiver na frente delas vai se tornar um comentário, mas estes se limitam a apenas uma linha, toda nova linha terá que ter // na frente;

Já o comentário com /* e */ pode ocupar várias linhas sem ter que se repetir, basta fechar o comentário na linha que desejar.

#include <stdio.h>


Aqui estamos chamando uma biblioteca de código que contém o comando printf() usado mais á frente no programa, isso será explicado com mais detalhes em partes futuras deste tutorial

int main()
{ 
} 


Esta é a função principal do programa, todo programa em C tem que ter a função main(), pois o programa começa a ser executado a partir dela. O primeiro comando a ser executado, vai ser o primeiro que estiver dentro desta função.

printf("Olá mundo!");


Imprime a frase "Olá Mundo!" na tela.

getchar();

Espera o usuário pressionar uma tecla qualquer, na verdade coloquei esse comando só para o programa não fechar assim que exibir a frase.

Introdução

As expressões são formadas basicamente por dois elementos: dados e operadores. Os dados podem ser representados por variáveis ou constantes.

Tipos de dados

Em C, existem cinco tipos básicos de dados, char, int, float, double e void, todos os outros tipos de dados em C são baseados em algum desses. O tamanho e a faixa desses tipos de dados variam de acordo com o tipo de processador e com a implementação do compilador, o padrão ANSI estipula apenas a faixa mínima de cada tipo de cado, não o seu tamanho em bytes.

Veja exemplos de valores que esses tipos representam:

  • char - representa caracteres ASCII. Ex: a, b, x, j.
  • int - representa números inteiros. Ex: 1, 23, 5, 199.
  • float - números de ponto flutuante. Ex: 1.9, 3.5, 99.4.
  • double - números de ponto flutuante, com maior precisão.Ex: 2.99, 5.498, 77.980.

O formato exato dos valores float e double, depende de como eles são implementados.

O tipo void declara explicitamente uma função que não retorna valor nenhum ou cria ponteiros genéricos. Essas utilizações serão apresentadas mais à frente, em outra parte do tutorial. Com exceção do void, os tipos básicos podem receber valores modificadores precedendo-os. Os valores modificadores são usados para alterar o significado de um tipo básico. Esses valores são:

  • signed - pode ser aplicado aos tipos int e char. Diz que o número deve ser guardado com sinal, ou seja, positivos e negativos. O uso mais importante de signed é modificar o char em implementações em que esse tipo, por padrão, não tem sinal.
  • unsigned - pode ser aplicado aos tipos int e char. Diz que o número deve ser guardado sem sinal. Com isso, o valor máximo da variável aumenta, já que não haverá mais valores. Por exemplo, uma variável char que pode guardar valores de -128 a 127, poderá guardar valores de 0 a 255.
  • short - só pode ser aplicado a int. Diminui o espaço necessário para guardar a variável, diminuindo também a gama de valores que esta pode assumir.
  • long - pode ser usado com int e double. Aumenta o espaço tomado pela variável, aumentado seu valor máximo ou sua precisão.
  • long long - O padrão de C de 1999 adicionou um novo modificador, suportado por compiladores mais recentes, inclusive o gcc, aumenta ainda mais a capacidade da variável. Em alguns compiladores é suportado apenas pelo tipo int, em outros o double suporta também.

Nomes de Identificadores

Em C, os nomes das variáveis, funções, rótulos e vários outros objetos definidos pelo usuário são chamados de identificadores. O usuário pode inventar uma infinidade de identificadores, porém, existem algumas regras para criação destes.

  • Na criação de um identificador, o primeiro caractere deve ser sempre uma letra ou um sublinhado e os caracteres subsequentes só podem ser letras, números ou sublinhados, caso contrário o compilador logo apresentará uma mensagem de erro.
  • Um identificador não pode ser igual a uma palavra-chave (ou palavra reservada) de C e não deve ter o mesmo nome de alguma função que você escreveu ou de alguma que esteja na biblioteca C.

É recomendável que o identificador sempre tenha a ver com o que ele vai representar, porque fica confuso, por exemplo, uma variável pra representar preço chamada zx. Em projetos pequenos isso não faria tanta diferença, mas em um projeto maior, o programador pode acabar se perdendo. Vale lembrar também que as letras maiúsculas são tratadas diferentemente, então, count, Count e COUNT são identificadores distintos.

Exemplos de identificadores:

count
_num
valor34

Variáveis

Variáveis são posições de memória nomeadas, usadas para guardar um valor para ser modificado pelo programa. Em C, todas as variáveis devem ser declaradas antes de serem usadas. A forma geral de uma declaração é:

tipo identificador;

Aqui, tipo deve ser um tipo de dado válido em C junto de um modificador ou não, e identificador é o nome que vai representar a variável. Você pode declarar várias variáveis do mesmo tipo em uma única linha, separando os seus nomes por vírgulas. Veja exemplos de declarações de variáveis:

int x, y, z; 
short int vidas; 
char inicial; 
double soma, divisao;

As variáveis poderão ser 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. Elas podem ser classificadas de acordo com o local onde foram declaradas:

Variáveis locais

São variáveis declaradas dentro de uma função, elas só podem ser referenciadas por comandos que estão dentro do bloco no qual elas foram declaradas, elas não são reconhecidas dentro do seu próprio bloco de código, que inicia-se e termina entre chaves ( { bloco de código} ).

Essas variáveis existem apenas enquanto o bloco de código está sendo executado, ela é criada n sua entrada e destruída em sua saída. Observe, por exemplo, as seguintes funções:

void funcao1(void) 
{ 
  int x; 
  x=10; 
} 

void funcao2(void) 
{ 
  int x; 
  x= -50; 
} 

Observe que a variável x é declarada uma vez em cada função, e são duas variáveis distintas, porque cada uma delas só é reconhecida dentro do bloco de código na qual foi declarada.


Agora veja outro exemplo:

void funcao1(void) 
{ 
  int x, y; 
  x=45; 
} 

void funcao2(void) 
{ 
   x= 189; 
} 

Esse código iria dar errado, não existe nenhuma variável x declarada dentro de funcao2(), para essa função é como se não tivesse nenhuma variável dessas declarada.
A principal vantagem de declarar uma variável dentro de um bloco de código, é a economia de memória, em sistemas que tenham a memória escassa, isso será necessário.
É bom lembrar também, que as variáveis devem ser sempre declaradas no início do bloco de código.

Parâmetros Formais

Se uma função usa argumentos, ela deve declarar variáveis que receberão os valores destes argumentos. Essas variáveis são denominadas parâmetros formais. Elas se comportam como qualquer outra variável local dentro da função. Veja um exemplo:

void funcao_recebe(int valor1, int valor2){ 
   valor 1 = valor 2; 
} 

Nessa função, a variável valor1 recebeu o valor contido em valor2. Repare que elas não foram declaradas dentro do bloco de código, mas sim como parâmetros da função. Você deve ter certeza de que os parâmetros formais que estão declarados são do mesmo tipo dos argumentos que você usa para chamar a função, mas não se preocupe com isso por enquanto, pois mais á frente falarei com mais detalhes sobre isso.

Não se preocupe se o código não faz muito sentido agora, o importante por enquanto é entender sobre a localização das variáveis em relação aos blocos de código.

Variáveis Globais

As variáveis globais são reconhecidas pelo programa inteiro e podem ser reconhecidas por qualquer pedaço de código. Além disso, elas guardam seus valores durante toda a execução do programa. Para criar variáveis globais, basta declará-las fora de todas as funções. Veja um exemplo:

int valor; 
void func1(void); 

int main()
{ 
   valor = 100; 
   func1(); //Chama a função func1() 
} 

void func1(void)
{ 
   valor=250; 
} 

Nesse programa, a variável valor foi declarada fora de qualquer bloco de código, ou seja, foi declarada como variável global. Depois, na função main(), valor recebeu 100. Depois, dentor de main(), a função func1() foi chamada, e dentro desta, valor recebeu 250, ou seja, ela pôde ser acessada dentro de qualquer bloco de código.

Vou encerrar esta parte do tutorial por aqui, na próxima parte, continuarei falando sobre variáveis e irei abordar mais algumas outras coisas. Eu sei que por enquanto é difícil ver a relação disso com um jogo, mas essas variáveis que eu apresentei são como a base de um jogo. São essas variáveis que vão armazenar, por exemplo, os pontos de vida do personagem, a posição dos inimigos na tela ou até mesmo se o personagem já possui uma chave para abrir a porta ou não.

Com o tempo vou passando mais para a parte prática e até mostrando a construção de uns joguinhos simples, para facilitar a associação do que estou apresentando no tutorial com os jogos.

Quem quiser exercitar, já pode ir fazendo uns testes para ver como a localização de uma variável influencia no seu comportamento. Para imprimir uma variável com valor int, basta usar o comando:

printf("%d", nome_da_variavel); 

E não se esqueça de colocar #include no início, senão esse comando não irá funcionar.

Em caso de dúvida, podem entrar em contato.

Até o próximo post!


Comentários (5)
  • droidevr  - Correção: Use int main()...
    avatar

    Olá,

    Legal esse seu primeiro tutorial sobre C, eu já sou programador, e gostaria de fazer uma correção sobre o uso de void main!

    Esse tipo não deve ser usado para função main(), sendo o correto int main() e preferêncialmente com um retorno explícito do tipo inteiro, exemplo:

    int main()
    {
    return 0;
    }

    Existem várias razões para o uso do int na declaração do main(), entre elas está em seguir a norma do PADRÃO ANSI.

    Outro motivo, é o retorno para o ambiente que executou o seu programa em C.

    Existem mais alguns outros motivos, mas creio que já é o suficiente.

    Boa sorte e continue postando mais tutoriais. :)

  • Vinícius Godoy de Mendonça  - Main
    avatar

    É verdade, Droide, isso está especificado no item 5.1.2.2.1 do Standard do C99, no item "Program startup".

    Só complementando, as duas assinaturas abaixo são válidas:
    int main()
    int main(int argc, char *argv[])


    Essas também são as únicas assinaturas aceitas pelo C++.

  • Soraia
    avatar

    droidevr, muito obrigada pela correção! Vou providenciar as atualizações, afinal, alguns compiladores nem aceitam a função deste modo.
    Que bom que está gostando do tutorial, :)

  • Carconi
    avatar

    Estava testando algumas coisas que vi aqui e percebi que o printf não exibia corretamente varíaveis outras que int com o %d, depois de uma rápida busca achei o seguinte que pode se útil para outros iniciantes:

    Para int se usa %d
    Para char se usa %c
    Para float se usa %f
    Para double se usa %e

    Em relação aos %f e %e tambémpode-se usar: %.2f ou %.1e, por exemplo, o número sendo a quantia de casas decimais que devem ser exibidas.

  • Daniel  - eu
    avatar

    Nm intendo na da de programação,
    Estou Procurando uma maneira de comesas
    So queria Dizer Que.....
    .......Gostei!!!!!!!!!!!

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter