Como Programar em C

Instalar Dev-C++

Antes de tudo, é importante lembrar que a programação exige lógica, para criar possíveis soluções para problemas, caso você não tenha nenhuma experiência com nenhuma linguagem de programação, não se preocupe, pois esse tutorial está voltado para todo tipo de pessoas, vamos começar de maneira bem light até alcançarmos um nível mais avançado.

Para que o programa em C seja executado, é necessário que ele seja compilado, o processo de compilação faz com que o código que você digitou seja traduzido para um código de máquina, onde ele será executado. Durante nossos tutoriais vamos utilizar o Dev C++, que é um compilador de C e C++, você pode fazer o download aqui.

Após instalar o Dev C++, abra para dar inicio ao nosso primeiro programa, aconselho a criar uma pasta para organizar os tutoriais. Primeiro temos que criar o nosso projeto, vá em “File” -> “New” -> “Project”.

Agora selecione “Console Application” e “C Project”, coloque “Aula1” como nome do projeto.

Pronto, ele vai gerar automaticamente os códigos básicos para que seu programa seja executado, vamos entender para que serva cada um deles, vou comentar o código, passo a passo.

#include <stdio.h>
#include <stdlib.h>
//este comando está adicionando as biblioteca ao nosso programa,
//depois vamos descobrir para o que serve de fato

int main(int argc, char *argv[]){ 
//Essa é a função "main", serve basicamente para iniciar nosso programa
    system("PAUSE"); //este comando vai dar uma pausa na execução do código
    return 0; 
}

Neste primeiro tutorial, vamos fazer o clássico “olá mundo”, para imprimir na tela a frase clássica, vamos usar o comando “printf”, que funciona da seguinte maneira:

printf("Ola mundo!");

seu código ficará assim:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
    printf("Ola mundo!");
    system("PAUSE");
    return 0;
}

Agora aperte F9 para que seu código seja compilado e executado, caso haja algum erro, o compilador avisará sobre o erro, é importante saber que o C é uma linguagem “case sensitive” ou seja, ele diferencia as letras maiúsculas das minusculas, por isso tome cuidado, é bom utilizar sempre letras minusculas.

O seu codigo será executado em console (aquela telinha do prompt de comando) e aparecerá assim:

Variável

Variável tem a função de armazenar dados na memoria durante a execução do programa, vale lembrar que todos os dados armazenados em variáveis são apagados quando o programa é encerrado.
ela pode armazenar: letras e números de acordo com seu tipo.

Tipos primitivos

int: armazena números do tipo inteiro.
float: armazena números decimais
char: armazena 1 caractere
Existem outros tipos primitivos, mas por enquanto vamos utilizar apenas nesses.

Printf

O Printf é um comando utilizado para imprimir algo na tela, seja dados de variáveis ou qualquer mensagem.

Scanf

O Scanf é um comando utilizado para ler um dado do teclado e armazena-lo em alguma variável.

Operadores matemáticos

como o próprio nome já diz, eles servem para fazer operações matemáticas.
+: realiza somas
-: realiza subtrações
/: realiza divisões
*: realiza multiplicações

Programando

Neste tutorial vamos fazer um programinha simples que lê dois números do teclado, e imprime na tela a media dos valores, para isso vamos utilizar o comando scanf para armazenar os dados lidos em variáveis, em seguida vamos descobrir a média e imprimir na tela usando o printf.

Crie outro projeto no DevC++, da mesma maneira que fez no anterior, e comece a escrever o código dentro do “main”.

1) primeiro temos que declarar quais variáveis vamos utilizar e qual o tipo delas, para isso escreva logo abaixo do “main”:

int numero1;
//essa variavel vai armazenar o primeiro número, ele será do tipo inteiro
int numero2;
//Essa variável vai armazenar o segundo número, ele será do tipo inteiro
float media;
//Essa variável vai armazenar a media dos numeros, ele será do tipo float (decimal)

2) agora vamos escrever as “ordens” na tela:

printf("digite um numero: \n");
O "\n" foi utilizado para pular a linha

3) agora vamos armazenar na variável “numero1” o valor digitado:

scanf("%i", &numero1);

Esse comando significa dizer que, vamos receber um valor inteiro “%i” e armazena-lo na variável numero1.

4) agora vamos escrever de novo outra orden na tela com o printf e receber outro número, com o scanf, seu código ficará assim:

int numero1;
int numero2;
float media;
printf("digite um numero: \n";
scanf("%i", &numero1);
printf("digite outro numero: \n";
scanf("%i", &numero2);

5) agora vamos calcular a media e imprimir na tela:

media = (numero1 + numero2)/2;

Isso quer dizer que a variável media vai receber a soma do numero1 com o numero2, dividido por 2

printf("a media deu: %f", media);

Este comando vai imprimir na tela a frase “a media deu: (valor da media)”, o %f serve para dizer qual tipo de variavel será impressa e onde aparecerá, neste caso, o valor da variável aparecerá no final da frase. Note que “media” não aparece com “&” quando está no printf, isso porque no caso do printf ele não vai armazenar nada, vai apenas exibir.

6) seu programa será executado desta maneira:

Como utilizar o IF

O if é um comando que só é executado, se a condição for verdadeira, “if” significa “se” em inglês, veja o exemplo:

if (condição){
//aqui fica os comandos que serão executados, se a condição for verdadeira
}

Agora vamos supor que eu tenho uma variável do tipo inteiro, chamada “senha”, e só quero que a mensagem “você digitou a senha correta” apareça se a senha for correta, neste caso a senha será 12345, e o usuário terá que digitar uma senha, confira o exemplo:

int senha;
printf("digite a senha:");
scanf("%i", &senha);
if(senha==12345){
    printf("voce digitou a senha correta");
}

No meu código, o usuário vai digitar uma senha e meu programa vai conferir, SE(if) a SENHA(senha) for IGUAL(==) a 12345 então vai aparecer a mensagem, se a senha não for igual, o programa não vai fazer nada.
Lembre-se: em C, “==” é um operador lógico que significa “=”, se você utilizar apenas o “=” você estará atribuindo um valor, vamos ver isso mais na frente.

ELSE

Agora que sabemos como utilizar o IF, vamos aprender a utilizar o ELSE (senão, em inglês).
No caso do ELSE, o código só será executado se o IF for falso, veja esse exemplo:

int senha;
printf("digite a senha:");
scanf("%i", &senha);
if(senha==12345){
    printf("voce digitou uma senha correta");
}
else{
    printf("senha incorreta");
}

Neste caso, se a senha digitada for igual a 12345 vai aparecer a mensagem: “voce digitou a senha correta” se a senha não for igual a 12345 vai aparecer a mensagem: “senha incorreta“.

ELSE IF

ELSE IF é parecido como o IF, na verdade é um outro IF, o ELSE IF só é executado se a condição do IF não for verdadeira e a sua condição for verdadeira, veja o exemplo:

int senha;
printf("digite a senha:");
scanf("%i", &senha);
if(senha==12345){
    printf("voce digitou a senha correta");
}
else if(senha==111111){
    printf("voce digitou a senha correta");
}
else{
printf("senha incorreta");
}

 

Neste caso, o programa vai receber uma senha, comparar ela e se ela for igual a 12345 vai aparecer a mensagem: “voce digitou a senha correta“, se a senha não for igual a 12345 ele vai executar o ELSE IF e a for igual a 111111 vai aparecer a mensagem: “voce digitou a senha correta“, e se a senha não for igual a nenhum do dois, aparecerá a mensagem: “senha incorreta“.
OBS: O ELSE IF pode ser usado infinitas vezes, por exemplo: você poder fazer uma comparação com todas as senhas que podem ser aceitas.

OPERADORES LÓGICOS

Operador lógico é uma classe de operação sobre variáveis ou elementos, que retornam um valor falso ou verdadeiro, eles são: && (significa E), || (significa OU) e == (significa IGUAL)
No nosso exemplo a cima, nós aceitamos as senhas 12345 e 111111, utilizamos dois ifs para verificar, mas podiamos fazer com apenas um, veja o exemplo:

int senha;
printf("digite a senha:");
scanf("%i", &senha);
if(senha==12345 || senha==111111){
    printf("voce digitou a senha correta");
}
else{
    printf("senha incorreta");
}

Isso quer dizer que, o programa vai receber uma senha e quando a senha for igual a 12345 ou 111111 ele vai exibir a mensagem: “voce digitou a senha correta“, neste caso nós utilizamos duas condições em um mesmo IF, mas podemos utilizar quantas for necessário.

Agora vamos fazer outro exemplo, utilizando o && (E):

int senha1;
int senha2;
printf("digite a senha1:");
scanf("%i", &senha1);
printf("digite a senha2:");
scanf("%i", &senha2);
if(senha1==12345 && senha2==111111){
    printf("voce digitou as senhas corretas");
}
else{
    printf("senhas incorretas");
}

Neste caso, o usuário digitou duas senhas, e comparamos se as duas são verdadeiras, se as duas senhas digitadas forem verdadeiras, aparecerá a mensagem: “voce digitou as senhas corretas“, caso contrário, aparecerá a mensagem: “senhas incorretas

Seu programa será executado desta maneira:

 

FOR

“FOR” significa “para” em português, o FOR é uma estrutura de repetição usada quando queremos executar um “bloco de código” determinada vezes. Por exemplo, eu quero imprimir 20 vezes na tela “curso de C”, neste caso faremos o seguinte:

int n;
for(n=0;n<20;n=n+1){
    printf("curso de C n");
}

Todo “for” precisa de uma variável de controle, no nosso exemplo, “n” foi a variável de controle, note que ela foi declarada em cima como sendo do tipo inteiro, quando o programa executou pela primeira vez o “for” ele atribuiu o valor 0 a variável “n”, executou o código e depois somou +1 ao valor de “n”, na segunda execução, “n” tinha o valor 1, depois o código foi executado novamente e o valor de “n” foi aumentado denovo, desta vez ficando com o valor 2, e assim o programa será executado até que o valor de “n” seja menor que 20, ou seja, a nossa condição de parada é que o valor de “n” seja menor que 20, neste exemplo o código será executado 20 vezes.

 

WHILE

“WHILE” significa “ENQUANTO”, ou seja, ele vai executar um bloco de códigos enquanto a condição de parada for verdadeira.
Por exemplo, vamos fazer um programa que vai ler e exibir os números lidos, o programa só vai parar quando o usuário digitar “0”.

int n;
printf("digite 0 para sair n");
while(n!=0){
    printf("digite um numero n");
    scanf("%i",&n);
    printf("voce digitou %i" n, n);
}

Note que o programa só parou de ser executar o bloco de códigos quando o usuário digitou 0, agora é importante lembrar que o “enquanto”, verifica antes se a condição é verdadeira, para só depois poder executar, como não havia valor em “n”, então “n” seria diferente de 0, agora se a gente tivesse atribuído o valor 0 a “n” antes do “enquanto”, o bloco de códigos do “enquanto” não seria executado, porque “n” seria igual a 0.

 

DO…WHILE

“DO…WHILE” significa “Faça…enquanto”, diferente do “while”, o “do…while” executa o bloco de códigos pelos menos uma vez, e só depois verifica se a condição de parada é verdadeira ou não.

int n;
do{
    printf("Voce entendeu como funciona o DO...WHILE? n");
    printf("0 = sim / 1 = nao n");
    scanf("%i",&n);
    if(n==0){
        printf("Parabens! n");
    } else{
        printf("Esta entendendo agora? n");
    }
}while(n!=0);

Sempre que o DO…WHILE for usado, o bloco de códigos será executado pelo menos uma vez, neste caso nosso programa perguntou, depois conferiu se a resposta foi “sim” ou “não”, se ela foi “sim” então o programa para de executar, se ela foi “não” o programa vai ser repetido.

Neste tutorial vamos aprender como criar e utilizar os arrays.

Antes de aprender o que é um array, vamos pensar na seguinte situação, eu tenho anotado no caderno uma lista com 50 números de telefone e quero passar todos para meu programa em C, se a gente fosse fazer isso com o que aprendemos, teriamos que criar 50 variáveis e preencher todas, dava pra fazer, mas seria um pouco trabalhoso.

Há uma maneira MUITO mais eficiente para fazer isso, é usando um arrays.

ARRAY

O Array, também conhecido como vector, é básicamente um “conjunto” de váriaveis do mesmo tipo, agrupadas de forma sequencial como se fosse uma “fila”, e ordenado por um indice. É através do indice que acessamos nossa “variavel”.

A declaração do array é feita deste jeito:

(tipo do array) (nome do array)[(quantidade de posições do array)]

Exemplo:

int guiky[10];

Isso quer dizer que eu estou criando um array chamado guiky, que vai armazenar 10 números inteiros. Se preferir também é possível criar um array já com valores, exemplo:

int guiky[10] = {7,8,4,6,9,10,5,1,2,3};

“Fisicamente” ficaria algo assim:

Preenchendo um array

Você vai preencher o array do mesmo jeito que preenche uma variável, é só adicionar o valor na posição do array que você queira receber o valor.

guiky[5]=4350;

isso quer dizer que o valor 4350 vai ser inserido na sexta posição do array (isso mesmo, na sexta posição, porque a primeira posição do array é o indice 0).
Agora vamos voltar ao exemplo dado no começo do tutorial, como vamos armazenar 50 números dentro de um array? temos que atribuir um por um? a resposta é “mais ou menos”, na verdade os valores vão ser inseridos 50 vezes pelo usuário do programa (afinal de contas o programa não vai adivinha o número das pessoas), mas você programador vai digitar quase nada, apenas um “FOR” e uma variavel para trocar o indice, veja como vai ficar:

int i;
int numeros[50];
for(i=0;i<50;i++){
    printf("Digite o numero do telefone: n");
    scanf("%i", &numeros[i]);
}

Veja com apenas essas linhas o programa vai armazenar tudo, isso porque o for vai repetir esse código 50 vezes, o “i” será a variável de controle que vai corresponder a posição do array que será inserido o número. Repare que na primeira vez que o loop for executado, “i” terá o valor 0, e vai adicionar no indice “0”, depois vai ter o valor “1” e vai adicionar no indice “1”, assim até chegar ao ultimo loop, quando “i” terá o valor 49, e adicionará na posição de indice 49.

LEMBRE-SE: O array tem uma quantidade fixa de posições, cuidado para o “for” não tentar adicionar numa posição que não existe.

E como a gente faz pra exibir todos os números do meu array? veja como é simples:

int i;
int numeros[50];
for(i=0;i<50;i++){
    printf("Digite o numero do telefone: n");
    scanf("%i", &numeros[i]);
}
for(i=0;i<50;i++){
    printf("%i n", numeros[i]);
}

O “for” vai passar por todas as posições e vai imprimir na tela todas elas.

Como trocar as posições do array?

Caso eu queira trocar as posições, como faz? neste caso você tem que saber qual posição quer trocar, por exemplo, quero trocar a posição 20 pela 30, neste caso, vamos utilizar uma variável auxiliar para que o valor não seja perdido no momento da troca, ficaria assim:

int i, aux;
int numeros[50];
for(i=0;i<50;i++){
    printf("Digite o numero do telefone: n");
    scanf("%i", &numeros[i]);
}
aux = numeros[20];
numeros[20] = numeros[30];
numeros[30] = aux;

A variável “aux” foi usada para armazenar temporariamente o valor da posição 20, para que ele não seja perdido durante a troca.

Como ordenar o array em números crescente?

há diversas maneiras para ordenar um array, umas eficientes e outras nem tanto, a que vamos aprender aqui é uma das mas simples, ela vai pegar um número do array e comparar com todos os outros números, se ele for maior que o da posição seguinte, ele vai trocar de posição, até que todos os números maiores fiquem no fim do array e os menores fiquem na frente, fazendo assim a ordenação ordem crescente, o algoritimo de ordenação ficaria assim:

for(i=0;i<10;i++){
    for(j=i+1;j<10;j++){
        if(numeros[i]>numeros[j]){
            aux=numeros[i];
            numeros[i]=numeros[j];
            numeros[j]=aux;
        }
    }
}

Para ordenar de maneira decrescente, basta inverter a comparação, fazendo com que se o primeiro número for menor que o segundo, ele seja trocado e assim sucessivamente.
Criamos um algoritmo para vocês entederem melhor, confira:

//declarando as variáveis
int numeros[10];
int aux;
int i;
int j;

//recebendo todos os números
for(i=0;i<10;i++){
    printf("Digite um numero n");
    scanf("%i", &numeros[i]);
}

//mostrando como ficou o array
printf("Array desordenado: ");
for(i=0;i<10;i++){
    printf("%i ", numeros[i]);
}

//ordenando
for(i=0;i<10;i++){
     for(j=i+1;j<10;j++){          
          if(numeros[i]>numeros[j]){
             aux=numeros[i];
             numeros[i]=numeros[j];
             numeros[j]=aux;
          }
     }
}

//mostrando o array ordenado
printf("nArray ordenado: ");
for(i=0;i<10;i++){
    printf("%i ", numeros[i]);
}
printf("n");

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *