Sie sind auf Seite 1von 8

RESUMO E LISTA DE EXERCCIOS COMENTADOS

Bibliotecas
Na medida em que a linguagem C foi crescendo, bibliotecas foram criadas para que assim no fosse
necessrio criar cdigos para execues bsicas, facilitando assim a difuso da linguagem, uma vez que
iniciantes passavam a usar a linguagem mais rapidamente.
No caso de C, a biblioteca bsica necessria para executar comandos de entrada e sada a "stdio". Tal
biblioteca carrega funes padres (standard, std) de entrada e sada (input and output, io), devemos
inclui-la em todo incio de cdigo atravs do seguinte comando:
#include
A extenso "*.h" (header) do arquivo que contm as funes j prontas, no caso desta, o compilador j
a contm dentro da pasta ".../include" do programa utilizado para compilar. Sabendo como instalar a
biblioteca de funes padres de entrada e sada, resta conhecer algumas funes bsicas e o que cada
uma delas faz.
H outras bibliotecas como a "math.h", que contm funes matemticas no to simples, e a "conio.h"
("console input and output") que possui funes como de limpar a tela, de receber qualquer caractere
digitado, dentre outras funes, e dentre outras bibliotecas.

printf();
Tal funo imprime na tela do computador o texto entre aspas, dentro dos parnteses, porm, formatado.
Primeiro exemplo de programa:
// Seu primeiro Programa
# include<stdio.h>
main(){
printf("Este eh o texto do meu primeiro programa");
}
Observao: no devemos usar acentos grficos.
Para imprimir uma varivel, deve-se colocar dentro das aspas % e a letra que representa o tipo da
varivel, e, logo aps as aspas, ainda entre os parnteses uma vrgula e s ento a varivel.
Exemplo:
# include
int main(){
int a;
float b;
char c[10]; //tal caractere recebe uma palavra de at no mximo 10 letras
a = 10;
b = 2.5;
c = "palavrad10";
printf("Vou imprimir um inteiro %d, agora um flutuante %f, o mesmo flutuante com apenas uma casa
decimal %.1f e para terminar um caractere %c", a, b, b, c);
/*deve-se colocar as variveis na ordemque as foi usando dentro dos parnteses*/
}
Caso a varivel seja do tipo float pode-se especificar a preciso na qual se deseja imprimir, por exemplo,
para imprimir um nmero com duas casas decimais deve-se colocar: %.2f.

scanf();
a funo bsica de leitura, e com ela pode-se ter uma conexo com o usurio, assim o mesmo pode
enviar dados para o programa processar.
Exemplo:

/*Programa para clculo da mdia, aqui voc pode usar a vontade acentos, j que para o programa
comentrios so ignorados... */
# include
main(){
float n1,n2,n3,m;
printf("Digite suas tres notas na ordem em que as fez:\n");
// o "\n" serve para pular uma linha
scanf("%f%f%f", &n1, &n2, &n3);
/*Ao usar o scanf deve-se colocar o "&" na frente da varivel, tal fato se deve porque o smbolo & serve
para direcionar o endereo no qual o contedo lido ser guardado, caso isso no seja usado o contedo
lido no ser guardado no endereo de memria da varivel requerida. Portanto, no esquea!*/
m = (4*n1+5*n2+6*n3)/15;
printf("Sua media eh %.2f", m);
//lembre-se de no usar acento nas palavras
}

Outros Comandos
Assim como o \n, h outros comandos tambm usados para o texto exibido. Alguns deles so:

Operadores de incremento e decremento


Um operador bastante utilizador em C, que inclusive deu nome ao seu "sucessor" (C++) o
incrementador (++), ele acrescenta uma unidade varivel, enquanto o decrementador (--) subtrai uma.

So dois operadores bastante teis para simplificar expresses:


++ (incremento de 1)
-- (decremento de 1)
Podem ser colocados antes ou depois da varivel a modificar. Se inseridos antes, modificam o
valorantes da expresso ser usada e, se inseridos depois, modificam depois do uso.
Alguns exemplos:
x = 2;
var = ++x;
No caso acima, o valor de var ser 3 e o de x ser 3.
x = 2;
var = x++;
No caso acima, o valor de var ser 2 e o de x ser 3.

IF
A prpria traduo diz tudo ("if = se"), se algo for verdadeiro, faa estes comandos, podendo incluir o
"else" (seno) para o caso negativo e passando tambm para este um conjunto de comandos.
Exemplo:
/*Programa da mdia melhorado (incluindo uma impresso de aprovao, 4a. prova e recuperao)*/
# include
main(){
float n1,n2,n3,m;
printf(\Digite suas tres notas na ordem que as fez:\n");
scanf("%f%f%f", &n1, &n2, &n3);
m = (4*n1+5*n2+6*n3)/15;
if(m>=7){
printf("Sua media e %.2f, parabensvoce foi aprovado.\n", m);
}else{
if(m>=3){
printf("Sua media e %.2f, voce esta na quarta prova.\n", m);
}else{
printf("Sua media e %.2f, voce esta reprovado.\n", m);
}
}// <- este fecha o primeiro else e o prximo fecha o main
}

SWITCH
O que o switch faz seria perfeitamente feito por vrios "if", mas daria muito trabalho e ficaria, de certa
forma, desorganizado. O switch, como o prprio nome diz, faz uma escolha. Ele pega uma varivel e de
acordo com o valor contido nesta varivel ele toma uma deciso.
bastante til na construo de menus primitivos, como o mostrado abaixo. Analise bem a sintaxe, pois
a que apresenta mais diferena em relao s outras estruturas, por isso, facilmente esquecida:
# include
main(){
int idade, escolha;
char nome[50], sexo[1];
printf("##### Banco de dados #####\n\nDigite seu nome: ");
gets(nome);
/*a funo gets semelhante ascanf no entanto s serve para a leitura de caracteres que necessitam do
uso da barra de espao como elemento, caso fosse usado o scanf assim que apertssemos a barra de
espao a leitura do caractere seria finalizada.*/
print("Digite sua idade: ");
scanf("%d", &idade);
printf("Digite seu sexo (M/F): ");
scanf("%c", sexo);
//para a leitura de caracteres no necessrio usar o &
printf("\nDigite 1 para ver o nome digitado, 2 para ver a idade ou 3 para ver o sexo digitado: ");
scanf("%d", &escolha);
switch(escolha){
case 1:{
printf("%c", nome);
break;
/*o comando break finaliza qualquer estrutura de controle de fluxo, caso no fosse colocado
este comandos dentro dos "case", os outros "case" tambm seriam executados*/
}
case 2:{
printf("%d", idade); break;}
case 3:{
printf("%c", sexo); break;}

default:{
/*o default acionado caso o usurio digite algo que voc no relacionou nos "case"
anteriores*/
printf("Vocenao digitou nenhum dos numeros solicitados."); break;}
}
}

FOR
O "for" faz um loop (lao) atravs de um contador. Ele realiza, portanto, os comandos dentro do for a
quantidade de vezes desejadas, seguindo a seguinte estrutura:
Declarao de uma varivel qualquer, geralmente chamada de i;
Uso da estrutura passando como argumentos o valor inicial da varivel contadora, o seu valor final e qual
o passo utilizado para sair do valor inicial para o final.
Exemplo:
# include
main(){
int i;
printf("Este programa mostrara todos os numeros pares ate 100:\n");
for(i=0;i<=100;i=i+2){
printf("%d\t",i);
}
}
Observao: pode-se ou no usar a varivel contadora, no caso i, o importante que ela tenha um incio
e fim, caso seja colocada uma expresso que nunca leve a varivel a chegar a seu limite, os comandos
sero executados at o ponto em que o computador travar por falta de memria. Por exemplo, se
tivesse sido colocado "for(i=0;i<=100;i--){", i comea em 0 e s diminui, logo, nunca chegar no seu limite
que 101, porque no 100 o loop ainda funcionar, j que foi usado menor ou igual.

WHILE
O while um loop que funcionar enquanto algo for verdade, se for fornecido como argumentos para o
while 10>8, por se tratar de uma verdade ele funcionar eternamente, no entanto se fornecido 8>10 ele
nunca funcionar por no se tratar de uma verdade. perfeitamente possvel fazer com um while realize
tudo que um for faz.
Exemplo:
# include
main(){
intcontinuacao;
continuacao = 1;
while(continuacao == 1){
printf("Quer executar este programa novamente? Digite 1 caso queira, e 0 caso nao queira.");
scanf("%d", &continuacao);
}
}

Do{ }While();
Semelhante ao while, porm, tem como nica diferena a localizao da verificao do teste, que feita
ao trmino do lao, e no no comeo. Logo, ele ser executado pelo menos uma vez.
Exemplo:
# include
main(){
intcontinuacao;
continuacao=1;

do{
printf("Quer executar este programa novamente? Digite 1 caso queira, e 0 caso nao queira.");
scanf("%d", &continuacao);
}while(continuacao == 1);
}
Observao: qual devo utilizar? While() ou Do{ }While()?? A respota depender da utilidade da
necssidade. Quando voc quiser ter certeza de que ser executado pelo menos uma vez, melhor que
voc use o "do{ }while();". Caso queira que ele realmente teste antes de executar, use o while(). E caso
realmente no faa diferena, ficaa sua escolha.

Vetores
Os computadores processam dados. Geralmente os dados so organizados em forma ordenada, por
exemplo em uma srie temporal, na sada de um experimento que varia quando modificada a entrada,
ou em uma lista de nomes em ordem alfabtica. Uma coleo de dados tais que os seus elementos
formam uma sequncia ordenada chamada de array ou vetor de dados. Os elementos deste vetor
podem ser de qualquer tipo de dado, isto , pode-se ter um vetor de inteiros, de caracteres, etc. A seguir
estuda-se as caractersticas, notao, manuseio, diferentes tipos dos vetores.
Os vetores so uma estrutura de dados muito utilizada. importante notar que vetores, matrizes
bidimensionais e matrizes de qualquer dimenso so caracterizadas por terem todos os elementos
pertencentes ao mesmo tipo de dado. Para declarar um vetor utiliza-se a seguinte forma geral:
tipo_da_varivel nome_da_varivel_vetor [tamanho];
Na presena de uma declarao como esta o C reserva um espao na memria suficientemente grande
para armazenar o nmero de clulas especificadas em tamanho, e todas elas com o espao suficiente
para armazenar valores do tipo tipo_da_varivel. tamanho deve ser um valor constante.
Ao declarar : float exemplo [20]; o C ir reservar 20 espaos para pontos flutuantes do tipo double, isto
4x20=80 bytes. Estes bytes so reservados de maneira contgua. Na linguagem C a numerao comea
sempre em zero. Isto significa que, no exemplo acima, os dados sero indexados de 0 a 19. Para
acessar os elementos do vetor, suficiente chamar o nome_da_varivel_vetor e entre colchetes indicar
o nmero do elemento desejado menos um. Em exemplo[0] e exemplo[9], est-se acessando o primeiro
elemento e o dcimo elemento do vetor exemplo. O C no verifica o ndice que o programador informa
para acessar os elementos de um vetor. Se o programador no tiver cuidado com os limites de validade
para os ndices ele corre o risco de ter sobre-escritas ou de estar alocando fora do vetor e talvez ver
o computador travar. Assim, ningum impede que se escreva, exemplo[30];.
#include <stdio.h>
main ( ) {
int num[100]; /* Declara um vetor de inteiros de 100 posicoes */
intcount=0;
inttotalnums;
do {
printf ("\nEntre com um numero (-999 p/ terminar): ");
scanf ("%d",&num[count]);
count++;
} while (num[count-1]!=-999);
totalnums=count-1;
printf ("\n\n\n\t Os nmeros que voc digitou foram:\n\n");
for (count=0;count<totalnums;count++)
printf (" %d",num[count]);
}
No exemplo acima, o inteiro count inicializado em 0. O programa pede pela entrada de nmeros at
que o usurio entre com o Flag -999. Os nmeros so armazenados no vetor num. A cada nmero
armazenado, o contador do vetor incrementado para na prxima iterao escrever na prxima posio
do vetor. Quando o usurio digita o flag, o programa abandona o primeiro loop e armazena o total de
nmeros gravados. Por fim, todos os nmeros so impressos. bom lembrar aqui que nenhuma

restrio feita quanto a quantidade de nmeros digitados. Se o usurio digitar mais de 100 nmeros, o
programa tentar ler normalmente, mas o programa os escrever em uma parte no alocada
de memria, pois o espao alocado foi para somente 100 inteiros. Isto pode resultar nos mais variados
erros em tempo de execuo.

Vetores
Os vetores so variveis que guardam mais de um elemento em uma mesma varivel de mesmo nome,
para tanto na declarao da varivel coloca-se a quantidade de elementos que a mesma guardar
atravs de colchetes e o nmero de elementos da seguinte forma: VARIAVEL[NUMERO DE
ELEMENTOS].
Cada elemento pode ser resgatado do vetor acessando-se sua posio no vetor que inicia no zero e vai
at o numero de elementos menos um. Vejamos um programa que calcula a mdiausando vetores.
Exemplo:
# include<stdio.h>
main(){
int peso[3],i;
float nota[3],media;
for(i=0;i<3;i++){
printf("\nDigite a nota %d", i+1);
scanf("%d", &nota[i]);
}
for(i=0;i<3;i++) peso[i]=i+4;
//Ou ainda poderia se inicializar o array da maneira tradicional:
/* peso[0]=4;
peso[1]=5;
peso[2]=6; */
//Observe que nao se faz necessario as chaves por ser apenas uma linha de comando.
media=0;
for(i=0;i<3;i++) media=media+peso[i]*nota[i];
media=media/15;
printf("Sua media eh %f", media);
}

Matrizes
Da mesma forma que uma varivel guarda vrios elementos, que chamamos de vetor, pode-se fazer um
vetor que guarde vrios vetores, chamado de matrizes e apresenta a seguinte estrutura: VARIAVEL[N
DE ELEMENTOS NESTA DIMENSAO][NESSA OUTRA][E NESSA][...].
Poder-se-ia, inclusive, incluir mais uma quantidade de elementos obtendo assim um vetor de matrizes, e
assim por diante.
Vamos fazer agora um programa que pede ao usurio os elementos que ele quer colocar em uma matriz
2X2 e que a imprima.
Exemplo:
# include<stdio.h>
main(){
inti,j;
floatmatriz[2][2];
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("Digite o elemento %dX%d da matriz:", i+1, j+1);
scanf("%f", &matriz[i][j]);
}
}
printf("[");
for(i=0;i<2;i++){
for(j=0;j<2;j++){
printf("%f", matriz[i][j]);
}

printf("\n");
}
printf("]");
}

Modularizaao em C (Funes)
Definio -

Conjunto de comandos agrupados em um bloco que recebe um nome e atravs deste

pode ser ativado.

Porque usar funes ?


Para permitir o reaproveitamento de cdigo j construdo(por voc ou por outros programadores);
Para evitar que um trecho de cdigo que seja repetido vrias vezes dentro de um mesmo programa;
Para permitir a alterao de um trecho de cdigo de uma forma mais rpida. Com o uso de uma
funo preciso alterar apenas dentro da funo que se deseja;
Para que os blocos do programa no fiquem grandes demais e, por conseqncia, mais difceis de
entender;
Para facilitar a leitura do programa-fonte de uma forma mais fcil;
Para separar o programa em partes(blocos) que possam ser logicamente compreendidos de forma
isolada.

Modularizao em C
Na linguagem C, cada mdulo chamado de funo. Uma funo pode receber e/ou fornecer
informaes a outras funes, desde que seja chamada. A forma geral de uma funo em C :

tipo_da_funo nome_da_funo (lista_de_parmetros)


{
corpo da funo
}

tipo_da_funo: especifica um valor que a funo ir retornar no trmino de sua execuo. Esse
valor ser enviado ao mdulo que fez a chamada desta funo. Se este tipo no for especificado, a
linguagem C assume que o retorno ser do tipo int (inteiro).

lista_de_parmetros: a relao de nomes de variveis e seus tipos. Essas variveis recebem


valores quando a funo chamada. Ou seja, o mdulo que chama esta funo pode enviar-lhe
valores (argumentos) que podem estar contidos em variveis locais (parmetros) ao mdulo e que
esta funo no poderia enxergar.

Exemplo:funao
#include<stdio.h>
main(){
linha();
printf("\n* Engenharia de Producao *\n");
linha();
}
/*desenha uma linha com 20 asteriscos na tela*/
linha()

{
int j;
for(j=1; j<=20; j++)
printf("*");
//printf("\n");
}

Horas e Minutos
Este um exemplo de uma funo que retorna um valor. O programa chama a funo minutos() que
solicita a hora e minutos ao usurio e calcula a diferena entre os dois tempos.
/* minutos.c */
/* calcula a diferenca entre dois tempos */
#include<stdio.h>
main(){
int mins1, mins2;
printf("Didite a primeira hora (hora:min): ");
mins1 = minutos();
printf("Digite a segunda hora (hora:min): ");
mins2 = minutos();
printf("A diferencae%d minutos. ", mins2 - mins1);
}
/*minutos()*/
/*solicita hora:minutos*/
/*retorna hora em minutos*/
minutos()
{
int hora, min;
scanf("%d:%d", &hora, &min);
return(hora*60 + min);
}

Das könnte Ihnen auch gefallen