segunda-feira, 1 de fevereiro de 2010

Matriz:

Antes de começarmos com matriz, que tal uma revisão de matemática sobre matrizes?
Sim, matemática novamente :)

Essa aula, vocês aprenderão "sozinhos", peço que, leiam e aprendam apenas 3 operações, somar, subtrair e multiplicar matrizes.
Além de souber o que é uma matriz quadrada e como achar a transposta de uma matriz!
Vou disponibilizar 2 sites onde vocês podem retirar todas essas informações entre várias outras.

colégio web: matriz
brasil escola: matriz


Bom estudo pessoal!

Exercícios resolvidos de vetor:

1) Dada uma sequeência de n elementos, imprimi-la em ordem inversa.
2) Dada uma sequência de n elementos, imprimi-la em ordem decrescente.
3) Dizemos que uma sequência de n elementos, com n par, se as seguintes somas são iguais:

a soma do maior elemento com o menor
a soma do segundo maior elemento com o segundo menor
a soma do terceiro maior elemento com o terceiro menor ...

ex: 2 12 3 6 16 15 é uma sequência balanceada, pois 16+2=15+3=12+6
Dados n (n par) e uma sequência de n elementos, verificar se essa sequência é balanceada.



1)

#include<stdio.h>

int main(void)
{
int vet[100],cont,n;
printf("digite o numero de termos da sequencia: ");
scanf("%d",&n);

for(cont=0; cont=0 ;cont--)
printf("%d\n",vet[cont]);

getchar();
getchar();
}

2)


#include<stdio.h>

int main(void)
{
int a[50],i,n,j,troca;
printf("digite o numero de termos da sequencia: ");
scanf("%d",&n);

for(i=0; i<=n-1 ;i++){
printf("digite um termo da sequencia: ");
scanf("%d",&a[i]);
}
for(i=0; i<=n-1 ;i++){
for(j=i+1; j<=n-1; j++){
if(a[i]>a[j]){
troca=a[j];
a[j]=a[i];
a[i]=troca;
}
}
}

for(i=0; i<=n-1 ;i++)
printf("%d",a[i]);

getchar();
getchar();
}


3)

#include<stdio.h>

int main(void)
{
int a[50],i,n,j,troca,soma,somant,k;
printf("digite o numero de termos da sequencia: ");
scanf("%d",&n);

for(i=0; i<=n-1 ;i++){
printf("digite um termo da sequencia: ");
scanf("%d",&a[i]);
}
for(i=0; i<=n-1 ;i++){
for(j=i+1; j<=n-1; j++){
if(a[i]>a[j]){
troca=a[j];
a[j]=a[i];
a[i]=troca;
}
}
}
k=n-1;
soma=a[0]+a[k];
for(i=1;i<= (n/2)-1 ;i++){
k--;
somant=a[i]+a[k];
if(soma!=somant)
i=2*n;

soma=somant;
}

if(i==2*n+1)
printf("nao eh balanceada");
else
printf("eh balanceada");

getchar();
getchar();
}


Tentem entender a lógica desses problemas, será de grande ajuda para passarmos para o próximo assunto (matriz)! Daqui a pouco eu já posto a aula de matrizes, see yah!

Vetores em C: (continuação)

Bom, vamos continuar com vetor?

Vamos a um exemplo de questão:

1)Faça um programa que leia n notas utilizando vetor e imprima a média dessas notas.

Oras, como vamos fazer se não sabemos quantas notas sao?
Simples, imagine que você tem que calcular a média de uma sala de aula normal, quantos alunos você preve que terá nessa sala?
50 é uma quantidade razoável, não?
Então, declaramos o vetor com 50 termos, lemos n e mandamos ler as notas até um número anterior a n (como todos aprenderam na aula passada, a posição do vetor começa pela posição zero, logo, a última posição de um vetor de 50 termos, será a posição 49!


2) Dada uma sequeência de n elementos, imprimi-la em ordem inversa.
3) Dada uma sequência de n elementos, imprimi-la em ordem decrescente.
4) Dizemos que uma sequência de n elementos, com n par, se as seguintes somas são iguais:

a soma do maior elemento com o menor
a soma do segundo maior elemento com o segundo menor
a soma do terceiro maior elemento com o terceiro menor ...

ex: 2 12 3 6 16 15 é uma sequência balanceada, pois 16+2=15+3=12+6
Dados n (n par) e uma sequência de n elementos, verificar se essa sequência é balanceada.


Oyasuminasai!


obs: faremos o exercício 3 e o exercício 4, no próximo post, devido a sua dificuldade.

Exercícios resolvidos de vetor:

Exercícios para fixarmos vetor:
Vamos começar de leve hoje!


#include<stdio.h>

int main(void)
{
int dado[6],n, cont,result,i;

printf("quantas vezes o dado foi lancado? ");
scanf("%d",&n);

/*vamos zerar todas as células da variável dado para podermos contar
corretamente o numero de vezes das faces obtidas */

for(i=0;i < n;i++){
printf("digite a face obtida na %d vez.",cont+1);
scanf("%d",&result);
if(result==1)
dado[0]++;
else if (result==2)
dado[1]++;
else if(result==3)
dado[2]++;
else if(result==4)
dado[3]++;
else if(result==5)
dado[4]++;
else
dado[5]++;
}
printf("%d faces um\n",dado[0]);
printf("%d faces dois\n",dado[1]);
printf("%d faces tres\n",dado[2]);
printf("%d faces quatro\n",dado[3]);
printf("%d faces cinco\n",dado[4]);
printf("%d faces seis",dado[5]);

getchar();
getchar();
}

Daqui a pouco, vou postar mais uma aula e mais exercícios, então, até daqui a pouco, ok?

Vetores:

Motivação para aprendermos vetor:

Dados 5 notas, calcular a média das notas e identificar se elas são maiores ou menor do que a média das notas:

#include<stdio.h>
int main(void)
{

float nota1,nota2,nota3,nota4,nota5,media;
media=0.0;

scanf("%f",&nota1);
scanf("%f",&nota2);
scanf("%f",&nota3);
scanf("%f",&nota4);
scanf("%f",&nota5);
media=nota1+nota2+nota3+nota4+nota5;
if(nota1>media)
printf("%f > %f",nota1,media);
if(nota2>media)
printf("%f > %f",nota2,media);
if(nota3>media)
printf("%f > %f",nota3,media);
if(nota4>media)
printf("%f > %f",nota4,media);
if(nota5>media)
printf("%f > %f",nota5,media);

getchar();
getchar();
}

Isso, de fato, é uma solução, porém, como sabemos, em uma sala de aula, não temos apenas 5 alunos, então, e se fossem 50 alunos, ou, 1000 alunos?
Meio cansativo, não?
Para solucionarmos isso, aprenderemos vetor, ou, também chamada de variável composta homogênea unidimensinal.

Um vetor, é uma estrutura de armazenamento de dados e é usada para armazenar valores do mesmo tipo.
Um vetor, possui "células" de armazenamento, por exemplo, criamos uma variável nota, essa variável nota, poderá armazenar quantos notas você quiser, isso é basicamente um vetor.
Veja um exemplo de declaração de vetor para você entender melhor:

float nota[5];

Nessa declaração, estamos reservando 5 células, ou seja, 5 números para a variável nota!
A referência de cada uma dessas células é realizada pelo nome do vetor nota e por um índice.

O índice, sempre começa do zero, ou seja, como são nesse caso, cinco células, iremos percorrer até a índice 4, pois, 0,1,2,3,4 = 5 células!

Segue basicamente essa estrutura:

0 1 2 3 4
|...|...|...|...|...|

Para referenciar o conteúdo de cada célula do vetor nota, por exemplo, queremos ler nota na célula 0, então fazemos:

scanf("%f",&nota[0]);

agora, na célula 1:

scanf("%d",&nota[1]);

Entenderam o raciocínio?

Vamos fazer aquele mesmo exercício das notas, agora com a utilização de vetor, para vermos como é muito mais fácil e prático:

#include<stdio.h>
int main(void)
{
float nota[5], media;
int cont;

media=0.0;
cont=0;

while(cont<=4){ scanf("%f",nota[cont]); media=media+nota[cont]); cont++; } /*veja, na primeira entrada do laço, cont vale 0, entao, leremos nota[0], depois, incrementamos cont e na segunda entrada do laço, leremos nota[1].. até nota[4]! */ for(cont=0; cont<=4; cont++){ if(nota[cont]>media)
printf("a nota %d eh maior que a media da sala",cont+1 );
eslse
printf("a nota %d eh menor que a media da sala",cont+1);
}
getchar();
getchar();
}
Procurem entender perfeitamente essa estrutura, mais tarde, continuaremos com exemplos sobre ela! Por hora, façam esse exercício e, como agora temos o fórum, postem no fórum seu código para ser avaliado :)
1) Dado uma sequência de 10 números inteiros, imprimi-lá em ordem inversa:

Exercícios resolvidos de séries em C:

1) Fazer um programa que calcule e escreva a soma de S:

S= 1/1 + 3/2 + 5/3 + 7/4 ... 99/50

Ah, antes disso, só vamos introduzir algo novo, quando dizemos, por exemplo:

cont=cont+1;

É a mesma coisa que dizer:

cont++;

e também

cont=cont-1;

é a mesma coisa que:

cont--;
Então, vamos nos acostumar com o simbolo ++ e --, a partir de agora.

#include<stdio.h>

int main(void)
{
int numerador,denominador;
float soma;

numerador=1;
soma=0;

for(denominador=1; denominador<=50; denominador++){
soma=soma+ (float)numerador/denominador; /*perceba a necessida do (float) */
numerador=numerador+2;
}
printf("%f",soma);
getchar();
getchar();
}

2) Fazer um programa que calcule e escreva a seguinte soma:

S= (37*38)/1 + (36*37)/2 + (35*36)/3 .... (1*2)/37

#include<stdio.h>

int main(void)
{
int numerador,denominador;
float soma;

numerador=37;
soma=0;

for(denominador=1; denominador<=37; denominador++){
soma=soma+((float)numerador*(numerador+1))/denominador;
numerador--;
}
printf("%f",soma);

getchar();
getchar();
}

Perceba a importância do parênteses nesse programa.

3) Fazer um programa que calcule e escreva o valor de S onde:

S= 1/1 - 2/4 + 3/9 - 4/16 ... -10/100

Perceba que nesse, não temos uma ordem de incremento no denominador, igual tinhamos nos anteriores e perceba também a variação do sinal!
Se olhar mais atentamente, verá que, o denominador é sempre o quadrado do numerador, então, problema resolvido!

#include<stdio.h>

int main(void)
{
int numerador;
float soma;

numerador=1;
soma=0;

while(numerador!=11){
soma=soma+(float)numerador/(numerador*numerador);
if(numerador>0){
numerador=-numerador;
numerador--;
}
else{
numerador=-numerador;
numerador++;
}
}
printf("%f",soma);

getchar();
getchar();
}


Bom, depois eu continuo com as séries, até!

Operador modificador de tipo:

Essa é uma continuação da aula de números de ponto flutuante.
Vamos a um exemplo diretamente para vocês entenderem melhor o que é um modificador de tipo!
ex:

int n,i;
float divisao;

i=5
n=9;
divisao=i/n;
printf("%f",divisao);


oras, fácil não?
o valor mostrado será 0.5555.. certo?
ERRADO!

Não é porque declaramos divisão como uma variável de número flutuante que ela armazenará valores de ponto flutuante.
Como ambas as variáveis, i e n, são variáveis inteiras, o resultado dessa operação será o valor inteiro resultado dessa operação, ou seja, no caso, o valor inteiro é zero, logo, divisão valerá 0.000..
Somente quando temos um ou ambos os operandos da operação declarados como número flutuante, essa conta será feita corretamente!
ex:

int i;
float n,soma;

i=5;
n=9.0;
divisao=i/n;
printf("%f",divisao);

Agora sim, o valor da divisão aparecerá 0.555.. pois, como uma das variáveis da operação é de ponto flutuante, a operação também se torna de ponto flutuante!

Mas, vocês poderiam perguntar, oras, porque não declaramos todas as variáveis como ponto flutuante e fim de papo?
É simples, o tamanho do programa, aumenta muito com relação a declararmos as variáveis como se fossem inteiras!
Então, foi necessária a criação do operador modificador de tipo!
Nesse nosso caso, i=5 e n=9, ou seja, ambas são inteiras, então, como vamos fazer essa operação se tornar de ponto flutuante?
Simples, vejamos o exemplo!
ex:

int n,i;
float soma;

i=5;
n=9;
soma=(float)i/n;
printf("%f",soma);

com esse (float) na frente da variável i, "transformamos" o i momentaneamente, em uma variável de ponto flutuante e, assim, conseguimos efetuar a operação e obter o resultado desejado!

ex:

Dado um inteiro positivo n, calcular e imprimir o valor da seguinte soma:

1/n + 2/(n-1) + ... n/1

qualquer dúvida, contatem-me!
konbawa!

Exercícios em C resolvidos 2:

Vamos dar uma pausa e fazer exercícios?

Ah, antes, vamos aprender a fazer comentários nos nossos programas para facilitar as coisas!
Um comentário, sempre começa com /* e termina com */
Por exemplo:

#include<stdio.h>

int main(void){
int numero;
scanf("%d",&numero);
if(numero>=5) /* se o numero for maior ou igual a 5 */
printf("maior que 5"); /* caso o numero seja maior que 5 */
else
printf("menor que 5"); /*caso o numero seja menor que 5 */

getchar();
getchar();
}

isso são comentários, C quando vê algo dentro de /* */ despreza e pula para o próximo comando!
obs importante: não sei se eu comentei, porém, quando utilizamos apenas um comando no if ou else, por exemplo, se a condição for verdadeira, só ocorrerá um comando, que é o printf e com o else é a mesma coisa, então, podemos desprezar as chaves!
Essa regra também vale para while e for..

exemplo com utilização:

while(numero>=5){
printf("%d",numero);
numero=1;
}

exemplo de não ter necessidade da utilização, ou seja, utilizar ou não, dá na mesma!

while(numero>=5)
printf("%d",numero);

ou seja, se tiver 2 ou mais comandos, é obrigatório o uso das chaves, senão, se houver apenas um comando, vai a seu critério!

exercício 1:

Escreva um programa que receba três valores, armazenando-os nas variáveis x,y e z, e ordene esses valores de modo que, ao final, o menor valor esteja armazenado na variável x, o valor intermediário esteja armazenado na variável y e o maior valor esteja armazenado na variável z.

#include<stdio.h>

int main(void)
{
int x,y,z,troca;

printf("digite o valor de x: ");
scanf("%d",&x);
printf("digite o valor de y: ");
scanf("%d",&y);
printf("digite o valor de z: ");
scanf("%d",&z);

if(x>y){
troca=y;
y=x;
x=troca;
}
if(y>z){
troca=z;
z=y;
y=troca;
}
if(x>y){
troca=y;
y=x;
x=troca;
}

printf("%d,%d,%d",x,y,z);
getchar();
getchar();
}

Veja a importância de uma variável de troca!
Leia e releia muitas vezes esse programa, é fundamental para desenvolver a capacidade de raciocínio lógico, por isso eu não colocarei comentários sobre ele.

exercício 2:

Escreva um programa que receba um número inteiro x e avalie o polinômio: 3x³-5x²+2x-1

#include<stdio.h>

int main(void)
{
int x, poli;
printf("digite o valor de x: ");
scanf("%d",&x);
poli=3*x*x*x -5*x*x +2*x -1;
printf("o polinomio com x=%d eh igual a %d",x,poli);

getchar();
getchar();
}

3) Dado uma sequência de n inteiros, somar os números pares e os números ímpares dessa sequência:

#include<stdio.h>

int main(void)
{
int par,numero,impar,ntermos,cont;
printf("digite o numero de termos: ");
scanf("%d",&ntermos); /*numero de termos da sequencia */
cont=1;
par=0;
impar=0;

while(cont<=ntermos){
printf("digite um numero: ");
scanf("%d",&numero); /*ler um número */
if(numero%2==0) /* se o resto da divisao do numero por 2 é igual a 0 o número é par */
par=par+numero;
else
impar=impar+numero;

cont=cont+1;
}
/*observe que como temos somente um comando no if, não precisamos utilizar chaves,
e a mesma coisa no else*/

printf("a soma dos numeros pares eh de %d e a dos impares eh de %d",par,impar);

getchar();
getchar();
}


obs: caso esteja algo errado, por favor, não deixe de postar, resolvi todos agora e pode ter algum erro que eu não tenha visto!

Bom, é isso, até mais tarde, né?

Estrutura de Repetição do-while:

pela própria tradução de "do" e de "while", podemos perceber como essa estrutura será utilizada.
do = faça
while = enquanto

Ou seja, por exemplo, dado uma sequência de números, somar ela enquanto ela for diferente de zero!
Oras, fácil, não?
Vamos ver o exemplo desse problema utilizando do-while!

#include<stdio.h>

int main(void)
{
int numero,soma;
soma=0;

do{
printf("digite um número: ");
scanf("%i",&numero);
soma=soma+numero;
}
while(numero!=0);

printf("%i",soma);

getchar();
getchar();
}

A diferenã de do-while para while, é que, em do-while sempre vamos ler pelo menos uma vez o laço, pois, a condição está no final do laço e de começo não sabemos ela e em while, se a condição não for satisfeita nem entraremos no laço!

ou seja, em do-while o primeiro laço sempre será rodado!

só mais uma observação: %i = &d
Temos algumas diferenças entre ela sobre número octal, mas, veremos mais adiante e a partir de agora, passaremos a utilizar %d, que é a forma mais correta para inteiros!

Até!

Noções de Lógica: (continuação)

Continuando a parte de noções de lógica:

conectivo || (lê-se "ou")

tabela verdade:

V F = V
F V = V
V V = V
F F = F

ou seja, a expressão com conectivo || só será falsa se as duas proposições forem falsas!
ex:

cont=1;

while(cont>5 || cont < 3){
.
.
cont=cont+1;
}

cont não é maior que 5, porém, cont é menor que 3, então, com a utilização do conectivo ||, essa expressão é verdadeira e nós entraremos no laço!

no próximo post eu posto um exemplo melhor!

E por último:

O conectivo !(lê-se falso)

Em C, se tivermos por exemplo:

cont=1;

if(cont){
.
.
}

cont tem armazenado o valor 1, e quando temos expressões desse tipo, qualquer que seja o valor da variável, se for diferente de zero, a linguagem C reconhece essa expressão como verdadeira.
ou seja, a expressão if nesse caso será verdadeira e entraremos nela, nesse caso!
com o conectivo !, podemos colocar essa expressão como falso, ex:

cont=1;

if(!cont){
.
.
.
}

cont vale 1, porém, o conectivo falso, "troca" o valor lógico da variavel, ou seja, cont passa a ser falso!

se cont fosse zero, e utilizassemos o conectivo, cont passaria a ser verdadeiro!

mais tarde eu posto exemplos disso!
bom, até!

Exercícios em C resolvidos:

1. Dado um inteiro positivo p, verificar se p é primo.

#include<stdio.h>

int main(void)
{
int n; /* candidato a primo */
int divisor; /* candidato a divisor de n */
int eprimo; /* indica se n ainda tem chance de ser primo */

printf("Teste de primalidade\n");
printf("Digite um inteiro: ");
scanf("%i", &n);
printf ("Candidato a primo = %i\n", n);

/* inicializacoes */
if (n <= 1){
eprimo = 0; /* nenhum numero <= 1 é primo */
}
else{
eprimo = 1; /* o numero é primo ate que se prove o contrario */
}
/* os candidatos a divisores positivos de n sao 1,2,...,n/2 */
divisor = 2;
while (divisor <= n/2 && eprimo == 1){
if (n % divisor == 0){
eprimo = 0; /* n nao é primo! */
}
divisor=divisor+1;
} printf("O inteiro %i ", n);
if (eprimo == 1) {
printf("é primo\n");
}
else{
printf("nao é primo\n");
}
return 0;
}

2.Dado um inteiro não-negativo n, determinar n!


#include <stdio.h>

int main(void) {
int n, /* guarda o numero dado */
contador,
fatorial;

printf("Calculo do fatorial de um numero\n");
printf("Digite um inteiro nao-negativo: ");
scanf("%i", &n);

/* inicializacoes */
fatorial = 1;
contador = 2;

while (contador <= n) {
fatorial = fatorial * contador;
contador = contador + 1;
}
printf("O valor de %i: %i\n", n, fatorial);
return 0;
}
3. Dados um inteiro x e um inteiro não-negativo n, calcular x n.
#include<stdio.h>

int main() {
int x, /* base */
n, /* expoente */
potencia, /* guarda as potencias parciais */
contador;

printf("Calculo de potencias\n");
printf("Digite um numero inteiro: \n");
scanf("%i", &x);
printf("Digite um numero um natural: ");
scanf("%i", &n);

/* Inicializacoes */
potencia = 1;
contador = 0;

/* Calculo da potencia */
while (contador != n) {
potencia = potencia * x;
contador = contador + 1;
}

printf("\nO valor de %i elevado a %i: %i\n", x, n, potencia);
return 0;
}

/fonte:
http://www.ime.usp.br/~macmulti/exercicios/inteiros/index.html

Noções de Lógica:

Sim, que tal uma aula de matemática hoje?
Hoje aprenderemos sobre noções de lógica, que também é uma coisa muito útil para nós!

Uma proposição é uma sentenção que pode ser classificada em verdadeira ou falsa.
Por exemplo:

5>3(V)
2 < 1(f)

Uma expressão lógica é formada por duas ou mais proposições. Relacionamos as proposições através de um operador lógico.
Existem três operadores lógicos na linguagem C.
Operador && (lê-se "E"):
uma expressão lógica com o conectivo &&, só será verdadeira se as duas proposições forem verdadeiras!
ex:

5>3 && 3>1

5 é maior que três E três é maior que um, como as duas proposições são verdadeiras, essa expressão também é verdadeira.

5>=5 && 3 < 1 cinco é maior ou igual a cinco "E" três é menor que um. três não é menor que um, logo,
como uma das proposições é falsa,
essa expressão também será falsa! ou seja, podemos montar uma tabela-verdade do conectivo && (e).
V e V = V
V e F = F
F e V = F
F e F = F

só um pequeno exemplo, depois eu continuarei essa aula:
digamos que a variavel cont seja igual a 1 a variavel numero seja 3 e
a variavel casa seja igual a 5.
while(cont < numero && cont < casa) {
.
.
cont=cont+1;
}
cont vale 1, logo é menor que 3 "E" é menor que 5, então entrará no laço,
na próxima vez que passar no laço, cont valerá 2. 2 é menor que 3 "E" é menor que 5, então,
entrará novamente no laço e cont valerá 3 agora! 3 não é menor que 3 "E" 3 é menor que 5.
Porém, como podemos observar na tabela verdade, como uma das proposições é falsa, a expressão toda
será falsa, ou seja, não entraremos mais no laço! Bom, falta ainda dois conectivos, mas,
mais tarde eu postarei novamente! É isso, até daqui a pouco! Ah, uma sugestão de livro,
para quem quiser aprender isso é o livro "fundamentos da matemática elementar volume 1",
é um exelente livro de matemática! Na internet mesmo, no www.4shared.com ou www.esnips.com você pode encontrar ele para baixar! Até!

Estruturas de Repetição:

Vamos aprender a nossa primeira de três estruturas de repetição, o comando while!

-While, é uma palavra inglesa que significa "enquanto", somente com isso, já podemos deduzir a sua funcionalidade.
Enquanto uma condição não for satisfeita, esse laço, como chamamos, se repetirá, até a condição ser satisfeita.

Antes de tudo, vamos analisar o quanto essa estrutura é importante!
Como escreveriamos um programa que, imprimisse os numeros de 1 a 5? Fácil, não?

#include<stdio.h>
int main(void)
{
printf("1\n");
printf("2\n");
printf("3\n");
printf("4\n");
printf("5\n");

getchar();
getchar();
}

Agora, escreva para mim um programa que mostra os 100 primeiros numeros positivos, ou melhor, os 10000 primeiros? Cansativo, não?
Acredito que, com isso, já possamos começar a estudar esse comando.

while, segue a mesma estrutura do if, que aprendemos nas aulas passadas, ou seja:

while(condicao){
comando 1
comando 2
.
.
comando n
}

No nosso exemplo, queriamos escrever um numero de 1 a 100, certo?
Ou seja, criamos uma variavel para fazer essa contabilização, dentro do laço while a incrementamos em 1, e enquanto ela não for maior que mil, esse laço se repetirá!

Um exemplo de como ficaria o programa:

#include<stdio.h>
int main(void)
{
int numero;
numero =1;
while(numero<=100){
printf("%i\n");
numero=numero+1;
}
getchar();
getchar();
}

ou seja, o programa começa com a variavel numero valendo 1, ela irá passar no laço e será verificado que 1 é menor que cem, entrará nesse laço, será impresso 1 no monitor e ela aumenta em 1, ou seja, o proxima valor de numero é 2, logo, ela repetirá esse processo, até numero valer 100, depois, a variavel valerá 101 e, como podemos notar, 101 não é menor que 100, logo, o laço se encerarrá e ela pulará para o proximo comando, que, no nosso caso sao os getchar..

Outro exemplo:

Fazer a soma dos numeros de 1 a 100.

#include<stdio.h>
int main(void)
{
int numero,soma;
numero =1;
soma=0;
while(numero<=100){
soma=soma+numero;
numero=numero+1;
}
printf("a soma dos numeros de 1 a 100 é %i",soma);
getchar();
getchar();
}

agora, você deve estar se perguntando, porque ele declarou soma= 0 ?
Veja o comando:

soma=soma+numero;

A parte a esquerda do igual, não é analizada, como bem sabemos, ela só será atribuida ao valor de soma+numero, agora, vamos analizar:

Se não declararmos zero no valor da soma, ficará:

soma+numero = ? + 1 = ??????

O programa compilará normalmente, PORÉM, você não especificou o valor de soma, logo, pode ter qualquer valor armazanado nessa variavel e o seu resultado com certeza não será o desejado.
Ou seja, se declararmos soma como zero, ficará:

soma=soma+numero=0+1
logo, soma valerá 1 agora e o numero, com o comando numero=numero+1, valerá 2.
Depois, soma=soma+numero=1+2=3, agora soma vale 3 e o numero com o incremento, passa a valer 3 também e assim sucessivamente até numero ser 100!
Espero que tenha ficado claro!
Qualquer duvida, deixe um comentário!

Ah, tarefa, claro ;p

1) Dado um inteiro positivo "n", somar os "n" primeiros numeros positivos.
2) Dado "n", imprimir os "n" primeiros impares positivos.

Mandem a resposta para meu email, se quiserem:
linguaemc@hotmail.com

Até mais!

Expressões aritméticas:

Existem cinco tipos de expressões aritméticas em C.

"Adição, subtração, multiplicação, divisão e resto da divisão."

Adição é tratada com o símbolo +
Subtração com o símbolo -
Multiplicação com o símbolo *
Divisão com o símbolo /
Resto da divisão com o símbolo %

Acredito que, a única coisa que devemos comentar seja a expressão resto da divisão.
Por exemplo:

5%2

Estamos querendo saber o resto da divisão de 5 por 2, que no caso é 1.
Ou seja, se mandarmos efetuar essa expressão, o programa nos retornará como resposta 1.

Agora, como na matemática, temos uma regrinha de precedência dos operadores.
exemplo:

5/4+1

poderiamos considerar como se fosse:

5/4 +1 = 2,25 ou
5/4+1 = 5/5 = 1

Em C, temos uma precedência, a multiplicação, divisão e resto de divisão são preferencias, ou seja, nesse caso, a resposta correta será a primeira resposta, pois a divisão tem prioridade sobre a soma, ou seja, ele fará primeiro 5/4 e depois somará o resultado disso com 1.
Porém, se quisermos que 5/4+1 seja 5/5, é só utilizarmos parenteses, como na matemática.
exemplo:

5/(4+1) = 5/5 = 1


outro exemplo:

5*6+2

como sabemos, C tem preferência pela divisão, multiplicação e resto da divisão, no caso, ele fará:

5*6 +2 = 30 + 2 = 32.


Até breve.

Estrutura Condicional Simples:

Estrutura condicional simples:

Decisões na linguagem C, são tomadas com o uso de estruturas condicionais.
Por exemplo:

#include<stdio.h>
int main(void)
{
int idade;
printf("informe sua idade: ");
scanf("%i",&idade);
if(idade>30){
printf("você é velho");
}
getchar();
getchar();
}

if é uma palavra inglesa que em português significa "se".
Nesse caso, se colocarmos uma idade maior que 30, o programa dirá que você é velho, senão, ele simplesmente se encerarrá.

if(condição){
comando1
comando2
.
.
}

a estrutura de if é assim, acompanhada de parenteses com dentro dos parenteses a condição, depois abre chaves, que indica que você comecará a colocar os comandos se essa condição for verdadeirae fechamos a chave para indicar que acabamos com os comandos.

mais um exemplo:

include<studio.h>
int main(void)
{
int a,b;
printf("informe um numero: ");
scanf("%i",&a);
printf("informe outro numero: ");
scanf("%i",&b);
if(a+b>0){
printf("a soma de %i e %i é maior que 0",a,b);
}
getchar();
getchar();
}

estrutura condicionais compostas:

agora, além do if, conheceremos o else, que significa senão, ou seja, se if condição não for verdadeira, ele executará o comando else.

vamos a um exemplo:

#include<stdio.h>
int main(void)
{
int idade;
printf("digite a sua idade: ");
scanf("%i",&idade);
if(idade>30){
printf("você é velho");
}
else{
printf("você é novo");
}
getchar();
getchar();
}

ou seja, se idade não for maior que 30, ele pulará para a estrutura do else, que dirá que você é novo..
resumidamente:

"SE" condição for verdadeira faça isso, "SENÃO", faça isso.

vamos fazer exercícios?

1) Escreva um programa que receba uma temperatura em celsius e "se" for maior que 30 graus dizer que está calor, "senão", dizer que está frio.

até mais!