Professional Documents
Culture Documents
O C "Case Sensitive
Vamos comear o nosso curso ressaltando um ponto de suma importncia: o C "Case Sensitive", isto , maisculas e minsculas fazem diferena. Se se declarar uma varivel com o nome soma ela ser diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos do C if e for, por exemplo, s podem ser escritos em minsculas pois seno o compilador no ir interpret-los como sendo comandos, mas sim como variveis.
*/
main( ) { int idade, contador; float salario; char nome[30], sexo; < instruo>;
Corpo do Programa
. . .
< instruo>; }
Final do programa
TIPO
FAIXA DE ABRANGNCIA
2 4 2
TIPO
FAIXA DE ABRANGNCIA
Float Double
4 8
byte (8 bits).
Os dados do tipo Strings um vetor de caracteres terminado com um caracter nulo. Este um caractere com valor inteiro igual a zero (cdigo ASCII igual a 0). O terminador nulo tambm pode ser escrito usando a conveno de barra invertida do C como sendo '\0, forma geral: char nome_da_string [tamanho];
J o a o \0 . . . .
Modificadores de tipo
As variveis podem vir acompanhadas de modificadores de tipo, estes podem ser utilizados sem que seja especificado o tipo de varivel, se isto ocorrer por default o compilador assume o tipo
int.
bytes
TIPO
FAIXA DE ABRANGNCIA
Nmero
de
ocupados na memria Unsigned char Unsigned Short Long Unsigned long Long double 0 a 255 0 a 65535 -32768 a 32767 -2147483648 a 2147483647 0 a 4294967295 3.4E-4932 a 1.1e+4932 1 2 2 4 4 10
Cdigo do formato %s %d %o %x %f
Significado L uma cadeia de caracteres (string) L um nmero inteiro da base 10 (decimal) L um nmero inteiro da base 8 (octal) L um nmero inteiro da base 16 (hexa) L um nmero de ponto flutuante (real)
Operadores Aritmticos
Chamamos de operadores aritmticos o conjunto de smbolos que representam as operaes bsicas da matemtica, e em Turbo C temos:
Operador Aritmtico + * / % Operao bsica matemtica Adio Subtrao Multiplicao Diviso Resto da diviso
Primeiro Programa
#include <stdio.h>
void main () { /* Declaracao de Variaveis */ int Dias; float Anos; printf ("Entre com o nmero de dias: "); /* Entrada de Dados */ scanf ("%d",&Dias); /* Conversao Dias->Anos */ Anos=Dias/365.25; printf ("\n\n%d dias equivalem a %f anos.\n",Dias,Anos);
Bibliotecas
Para utilizar uma biblioteca em um programa, dever ser inserido antes da funo main ( ), da seguinte maneira:
#include nome da biblioteca;ou <nome da biblioteca>;
O #include, uma diretiva do prprocessador, e indica que o cdigo_fonte do arquivo chamado seja includo no programa que est chamando.
x(coluna) e y(linha).
Definindo cores
de Texto
comando : textcolor(cor);
Para que a linha de texto fique piscando acrescentar | blink no comando textcolor.
de Fundo de Texto
comando : textbackground (cor);
Definindo cores
Obs.: para cor deve-se utilizar o cdigo ou o nome da cor em Maisculo. As funes de definio de cores de texto e fundo de texto assim como as funes especiais de E/S fazem parte do arquivo conio.h.
Dever ser utilizado funes especiais de E/S para exibir texto com as cores definidas, as funes printf( ) , scanf ( ), devero ser substitudas por cprintf( ) , cscanf ( ).
Tabela de cores
Macros de cores e seus equivalentes em inteiro.
cdigo 7 8 9 10 11 12 13 14 15
nome LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE
cor Cinza claro cinza escuro azul claro verde claro cyan claro vermelho claro magenta claro amarelo branco
Funes Matemticas
Podemos usar nas expresses aritmticas algumas funes da matemtica, como:
Funo abs(x) atan (x) cos(x) exp (x) pow (x, y) log (x)
Operao bsica matemtica Retorna o valor absoluto(mdulo) de x Retorna o arco da tangente x (x deve ser do tipo double) Retorna o coseno de x (x deve ser do tipo double) Retorna o exponencial de x (x deve ser do tipo double) Retorna xy (x e y devem ser do tipo double) Retorna o logaritmo natural de x (x deve ser do tipo double)
Retorna o seno de x (x deve ser do tipo double) Retorna a raiz quadrada de x Retorna a tangente x (x deve ser do tipo double)
Operadores Relacionais
So operadores que utilizamos para realizar comparao entre dois valores do mesmo tipo. Os operadores relacionais so:
Operador == >
Utilizao Testar igualdade entre os valores. Verificar se o valor a esquerda do sinal maior que o da direita.
<
!=
>=
<=
Operador &&
Utilizao Quando for necessrio relacionar duas ou mais expresses lgicas, e quer se garantir que as instrues s sero executadas se todas forem verdadeiras.
||
Quando for necessrio relacionar duas ou mais expresses lgicas, e quer se garantir que as instrues sero executadas quando uma delas for verdadeira.
C, verdadeiro qualquer valor diferente de zero e falso zero. Expresses que usam operadores relacionais ou lgicos retornaro 0 para falso e 1 para verdadeiro.
Estruturas de seleo
1 - Seleo Simples
if (< condio>) <instruo a ser executada >;
Se a <condio> for verdadeira a instruo especificada ser executada, o ponto e virgula aps o comando encerra a instruo. Outra opo de seleo simples :
Estruturas de seleo
2 - Seleo Composta
if (< condio>)
<instruo a ser executada >; else <instruo a ser executada >;
Para se definir blocos de instrues, utilize a seguinte sintaxe:
if < condio> { <instruo1 a ser executada >; ...... < instruon a ser executada >; } else
Estruturas de seleo
3 - Seleo Encadeada
A seleo encadeada ou aninhada o agrupamento de vrias selees (internas) a uma seleo.
if (< condio>) if (<condio>) { <instruo a ser executada >; <instruo a ser executada >;} else if (<condio>) { <instruo a ser executada >; <instruo a ser executada >; } else if (<condio>) { <instruo a ser executada >; <instruo a ser executada >;} else <instruo a ser executada >;
Podemos fazer uma variedade de combinaes de if else aninhadas dependendo da necessidade e da lgica para a soluo do problema.
Exemplo
Dados trs valores A, B, C, verificar se eles podem ser os comprimentos dos lados de um tringulo e, se forem, verificar se compem um tringulo equiltero, issceles ou escaleno. Informar se no compuserem nenhum tringulo.
tringulo: (A < B+ C) e (B < A+C) e (C < A + B); equiltero : (A = B) e (B= C); issceles : (A = B) ou (B = C) ou (A = C); escaleno : (A <> B) e ( B<>C);
Exemplo
/* Objetivo : Verificar se os nmeros informados formam um tringulo */ #include stdio.h; #include conio.h; main ( ) { float clrscr ( ); gotoxy(10,5); printf (* VERIFICA OS LADOS DE UM TRIANGULO *); gotoxy(10,10); printf (Digite o valor de A: ); scanf (%f, &A); gotoxy(10,12); printf (Digite o valor de B: ); scanf (%f, &B); gotoxy(10,14); printf (Digite o valor de C: ); scanf (%f, &C); gotoxy(15,20); if (A < B+ C && B < A+C && C < A + B) if (A == B && B== C) printf (Estes nmeros formam um triangulo equiltero.); A, B, C; /*declarao das variveis que sero utilizadas /* comando para limpar a tela */
else
if (A == B || B == C || A == C) printf (Estes nmeros formam um triangulo isosceles.); else printf (Estes nmeros formam um triangulo escaleno.); else
Exerccios
Criar um programa em Turbo C que tendo como dados de entrada o nome do funcionrio, o cdigo de sua funo, seu salrio bruto, e o nmero de dependentes, Calcule o salrio liquido do funcionrio, obedecendo os seguintes critrios:
Descontos = INSS + IR + Seguro Sade; INSS Faixa salarial Seguro Sade = 5% do Novo Salrio. At R$ 380,00 De R$ 380,01 a R$ 600,00 De R$ 600,01 a R$ 1.000,00 De R$ 1.000,01 a R$ 1.320,00 Acima de R$ 1.320,00
IR Faixa salarial At R$ 1.200,00 De R$ 1.200,01 a R$ 1.900,00 De R$ 1.200,01 a R$ 2.500,00 Acima de R$ 2.500,00
Abatimento de R$ 90,00 por dependente. Obs.: para calcular o IR verificar qual a faixa salarial que o funcionrio se enquadra, e antes de calcular o valor a ser desconto de IR faa o abatimento dos dependentes. Ex.: salrio de 2000.00 e 2 dependentes IR = ( salario 2 * 90.00) * 0.15;
Exerccios
2 Criar um programa em Turbo C que tendo como dados de entrada o
nome do funcionrio, o cdigo de sua funo e a quantidade de peas produzidas. Calcule e informe o valor do prmio de produo, sabendo-se que para o valor do prmio depende da funo e da quantidade produzida:
Funo
R$ R$ R$ R$
Adicional para produo acima de 10.000 peas R$ 500,00 R$ 350,00 R$ 400,00 RS 420,00
Estruturas de seleo
4 - Seleo de Mltipla Escolha
Usamos para escolher uma entre vrias alternativas, Com o comando switch ....... apresenta maior flexibilidade com formato limpo e claro.
switch (<varivel>) { case <opo1> : <comando 1.1>; <comando 1.2>; break; case <opo2> : <comando 2.1>; <comando 2.2>; break; .......... default : <comando x.1>; <comando x.2>; break; }
<varivel> o nome da varivel a ser controlada na deciso. Esta varivel pode ser do tipo char , int. <opo> o contedo da varivel a ser verificado (valor). <comando> instruo em C a ser executada.
A declarao default se nenhuma correspondncia for encontrada, entretanto, esta opcional, e se no estiver presente, nenhuma ao ser realizada se todas as correspondncias falharem. Quando uma correspondncia for encontrada, as instrues associadas ao case so executadas at que o break seja encontrado.
Exemplo de switch
Dado a Idade de um atleta,classifique-o nas categorias: a- Frandinha - at 4 anos; b- Infantil - 5 a 10 anos; c- Juvenil - 11 a 17 anos; d- Senior - maiores de 18 anos inclusive. /* Objetivo classificao dos nadadores em categorias */ #include stcio.h; #include conio.h; #include string.h; #include stdarg.h; main ( ) { int IDADE;
clrscr ( );
gotoxy(15,5); printf ( * CLASSIFICAO EM CATEGORIAS *); gotoxy(10,10); printf (Digite a idade do atleta: ); scanf (%d, &IDADE); switch (IDADE) case 0 case 1 case 2 case 3 case 4 case 5 case 6 case 7 case 8 case 9 : : : : : printf (%2d Categoria Fraldinha, IDADE); break; : : : : : break; case 11 : case 12 : case 13 : case 14 : case 15 : {
case 16 :
case 17 : printf (%2d Categoria Juvenil, IDADE); break; default : printf (%2d Categoria Senior, IDADE); break; }
gets (nome_da_string);
Exemplo: /* Objetivo : Apresentao da funo gets ( ) */ #include stdio.h;
#include conio.h;
main ( ) { char NOME [60];
clrscr ( ); printf (Digite seu nome completo: ); gets (NOME); printf ( Boa Noite %s , NOME); }
Manipulao
com String
A funo puts ( ) complemento da funo gets ( ) e sua principal caracterstica est no fato de permitir a impresso de uma nica string por vez, alm de mudar de linha automaticamente aps a impresso. Sem necessidade de parmetro fcil utiliza-la, restringe-se sua utilizao em virtude de aceitar somente com argumento , a varivel que ser impressa, e tambm pelos possveis efeitos visuais distorcidos e incmodos.
Exemplo: /* Objetivo : Apresentao da funo gets ( ) */ #include stdio.h; #include conio.h; main ( ) { char NOME [60]; clrscr ( ); puts (Digite seu nome completo: ); gets (NOME); printf ( Boa Noite %s , NOME); }
Anexa o contedo de uma string em outra string Copia o contedo de uma string para outra string Retorna o tamanho dinmico de uma String Compara o contedo de duas strings
strlen ( str);
Retorna o tamanho da string str.
getchar ( )
getche ( )
getch ( )
putchar ( ) toupper ( )
tolower ( )
Estruturas de Repetio
1 - Repetio com teste no incio
Verifica antes se a <condio> verdadeira para que se execute o referido bloco de instrues. Se a condio inicialmente for falsa o bloco no ser executado.
while (<condio>)
{
<comando 1>; <comando 2>; <comando 3>; }
Exemplo
/* Objetivo : Calcular mdia anual dos alunos da turma 999 e informar o resultado */ #include stdio.h; #include conio.h; #include string.h; #include stdarg.h; main ( ) { float N1, N2, N3, N4, MEDIA; char NOME[30]; int CONTADOR; contador = 1; while (contador <=50) { clrscr ( ); printf (* PROGRAMA PARA CALCULO DA MEDIA ANUAL *); printf (Digite o nome do aluno: ); gets(NOME); printf (Digite a nota do 1. bim.: ); scanf (%f, &N1); printf (Digite a nota do 2. bim.: ); scanf (%f, &N2); printf (Digite a nota do 3. bim.: ); scanf (%f, &N3); printf (Digite a nota do 4. bim.: ); scanf (%f,&N4); MEDIA := (N1*1+N2*2+N3*3+N4*4)/10; if (MEDIA >= 5) { printf (%s Parabens !!! voce foi aprovado com media: %2.2f, NOME , MEDIA); } else { printf(%s Infelizmente voce for reprovado !, NOME); printf (Estude mais no prximo ano, pois este ano sua media foi : %2.2f,MEDIA); } contador = contador+1; } }
Estruturas de Repetio
2 - Repetio com teste no final
Utilizamos a estrutura do - while, para permitir que um bloco seja repetido enquanto que uma determinada condio seja verdadeira. Esta estrutura permite que se execute ao menos uma vez o bloco de instrues.
do
{ <comando 1>; <comando 2>;
<comando 3>;
} while (<condio>);
Exemplo
Criar um programa que calcule e mostre a mdia das idades dos alunos do sexo feminino de uma classe com 60 alunos. : Calcular mdia de idade das alunas da turma e informar o resultado */ /* Objetivo #include stdio.h; #include conio.h; #include string.h; #include stdarg.h; main ( ) { float int MEDIA; char SEXO; CONTADOR, CONT_FEM, ACUM_IDA, IDADE;
CONTADOR = 0; CONT_FEM = 0;
ACUM_IDA = 0;
do { clrscr ( ); printf (CALCULO DA MEDIA DAS IDADES DAS ALUNAS); printf (Digite o sexo do aluno: ); SEXO = getche( ); printf (Digite a idade: );
Estruturas de Repetio
3-Repetio com varivel de controle
Para executar um bloco de comandos ou um comando um nmero definido de vezes, utilizamos a estrutura for .
for (inicializao ; condio; incremento) { <comando 1>; <comando 2>; <comando 3>;
inicializao Declarao usada para inicializar a varivel de controle do lao. condio Expresso relacional que determina quando o lao terminar pelo teste da varivel de controle; incremento Define como a varivel de controle do lao mudar cada vez que a repetio for realizada.
Exemplo: for
Criar um programa que calcule e mostre a mdia das idades dos alunos do sexo feminino de uma classe com 60 alunos.
/* Objetivo : Calcular a mdia de idade das alunas */ #include stdio.h; #include conio.h; #include string.h; #include stdarg.h; main ( ) { float MEDIA; char SEXO; int CONTADOR, CONT_FEM, ACUM_IDA, IDADE; CONT_FEM = 0; ACUM_IDA =0; for (CONTADOR =1; CONTADOR <= 60; CONTADOR++) { clrscr ( ); printf (CALCULO DA MEDIA DAS IDADES DAS ALUNAS); printf (Digite o sexo do aluno: ); SEXO = getche( ); printf (Digite a idade: ); scanf (%d, &IDADE); SEXO:= toupper(SEXO); if (SEXO == F) { ACUM_IDA = ACUM_IDA+IDADE; CONT_FEM = CONT_FEM+1; } } MEDIA = ACUM_IDA / CONT_FEM; printf ( A media de Idade das alunas : %2.2f, MEDIA); }
VETORES
Utilizado quando a estrutura for unidimensional.
Para definirmos um Vetor na Linguagem C, deveremos identificar este por um nome, com as mesmas regras para definio de nomes de varivel, e definirmos a dimenso (tamanho) deste vetor, por um nmero inteiro e positivo, identificando quantos elementos este vetor poder armazenar.
Vetores
Criar um Vetor para armazenar as notas de LTP1 dos 5 alunos de uma determinada turma.
Na linguagem C, todos os vetores e matrizes tm o zero como ndice do seu primeiro elemento, e ficam armazenados na memria em endereos contguos. A linguagem C no faz verificao dos limites nas matrizes, desta forma pode acontecer de ser ultrapassado o fim dela. Se isto acontecer poder ocorrer erros na execuo do programa.
Exemplo de Vetores
Criar um programa que a partir das notas dos 60 alunos da turma 6511, informadas pelo usurio, armazene-as em um vetor, calcule e mostre a mdia da turma
/* Objetivo : Calcular mdia dos alunos da turma 6511 */ #include stdio.h; #include conio.h; #include string.h; #include stdarg.h; main ( ) {
Matrizes
A linguagem C permite matrizes multidimensionais. A forma mais simples de uma matriz multidimensional a matriz bidimensional
float notas[6][4];
Exemplo:
Criar um programa que a partir das 4 notas dos 60 alunos da turma 6511, informadas pelo usurio, armazene-as em uma matriz, calcule e mostre a mdia final para cada aluno e tambm a mdia geral da turma /* Objetivo : Calcular mdia anual dos alunos */ #include stdio.h; #include conio.h; #include string.h; #include stdarg.h; main ( ) { /* declarao das variveis que sero utilizadas no programa */ float MEDIA, MEDIA_G; float NOTA[60][4]; int CONT_ALUNO, CONT_NOTA, ACUMUMULADOR; ACUMULADOR =0; MEDIA_G = 0; for (CONT_ALUNO =0; CONT_ALUNO < 60; CONT_ALUNO++) { clrscr ( ); gotoxy(15,5); printf (CALCULO DA MEDIA); for (CONT_NOTA =0; CONT_NOTA < 4; CONT_NOTA++) { gotoxy(10,10+CONT_NOTA); printf (Digite a nota %02d do aluno %02d: ,CONT_NOTA+1, CONT_ALUNO+1); scanf (%f, &NOTA[CONT_ALUNO] [CONT_NOTA]); ACUMULADOR = ACUMULADOR+NOTA[CONT_ALUNO] [CONT_NOTA]; } MEDIA = ACUMULADOR / 4; MEDIA_G = MEDIA_G + MEDIA; gotoxy(10,23); printf ( A media final do aluno %02d : %2.2f, CONT_ALUNO+1, MEDIA); } clrscr ( ); MEDIA_G = MEDIA_G / 60; gotoxy(10,23); printf ( A media dos alunos da turma 6511 : %2.2f, MEDIA); }
Funo
Funes so as estruturas que permitem ao usurio separar seus programas em blocos.
{ corpo_da_funo }
Funo
A declarao de parmetros uma lista com a seguinte forma geral:
(assim como informamos a sada no tipo-deretorno). O corpo da funo a sua alma. nele que as entradas so processadas, sadas so geradas ou
Comando return
O comando return tem a seguinte forma geral:
Exemplo 1
#include
{ return (a*a); } int main () { int num; printf ("Entre com um numero: "); <stdio.h> int Square (int a)
scanf ("%d",&num);
num=Square(num); printf ("\n\nO seu quadrado vale: %d\n",num); return 0; }
Exemplo 2
#include <stdio.h> int EPar (int a) { if (a%2) return 0; else return 1;} int main ()
{
int num; printf ("Entre com numero: "); scanf ("%d",&num);
if (EPar(num))
printf ("\n\nO numero e par.\n"); else printf ("\n\nO numero e impar.\n"); return 0;
Comando return
importante notar que, como as funes retornam valores, podemos aproveita-los para fazer atribuies, ou mesmo para que estes valores participem de expresses. Mas no podemos fazer: func(a,b)=x; /*Errado!*/ No segundo exemplo vemos o uso de mais de um return em uma funo. Fato importante: Se uma funo retorna um valor voc no precisa aproveitar este valor. Se voc no fizer nada com o valor de retorno de uma funo ele ser descartado. Por exemplo, a funo printf() retorna um inteiro que ns nunca usamos para nada. Ele descartado.