Você está na página 1de 39

LINGUAGEM C

UNINOVE Linguagem de Programao I Prof. Marcos Alexandruk alexandruk@uninove.br


PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

HISTRICO A Linguagem C foi projetada em 1972 no Laboratrio da Bell por: Dennis M. Ritchie (em 1973, escreveu o UNIX utilizando C) Brian W. Kernighan A linguagem C derivada da ALGOL 68, baseada na linguagem B de Ken Tompson, uma evoluo da BCPL. O ANSI (American National Standards Institute) estabeleceu, em 1983, um comit para criar um padro para linguagem C. VANTAGENS Poder de programao de mdio nvel Alto grau de portabilidade Apenas 32 palavras-chave (27 originais mais 5 adicionadas pelo ANSI)

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

PALAVRAS-CHAVE C ANSI auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

Todas as palavras-chave da linguagem C so minsculas

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

TIPOS DE DADOS INTEIROS int unsigned int long REAIS float double CARACTERES char LGICOS (BOOLEANO) Na linguagem, no existe um tipo de dado lgico ou booleano. Qualquer valor igual a 0 (zero) considerado um valor lgico FALSO e qualquer valor diferente de zero (geralmente 1 inteiro) considerado um valor lgico VERDADEIRO.
PROF. MARCOS ALEXANDRUK LinguagemC.doc

-32.768 a 32.767 0 a 65535 -2.147.483.648 a 2.147.483.647

3.4 E-38 a 3.4 E+38 1.7 E-308 a 1.7 E+308

0 a 255 caracteres

LINGUAGEM C

VARIVEIS DECLARAES Todo dado a ser armazenado numa varivel deve ser previamente declarado: primeiro necessrio saber o seu tipo para depois fazer o seu armazenamento. NOMES Podero ser atribudos com um ou mais caracteres; O primeiro caractere no poder ser um nmero, dever sempre ser uma letra; No poder conter espaos em branco; No podero ser utilizadas palavras reservadas da linguagem; No podero ser utilizados outros caracteres a no ser letras e nmeros, exceto o _ (underscore); Apenas os primeiros 32 caracteres so significativos para maioria dos sistemas operacionais (para o MS-DOS apenas 8 caracteres); A linguagem case sensitive (h diferena entre caracteres maisculos e minsculos).
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

CONSTANTES DEFINIO Tudo aquilo que fixo ou estvel (no apresenta alteraes durante a execuo do programa). EXEMPLO pi = 3.14159

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

OPERADORES ARITMTICOS UNRIOS Quando atuam na inverso de um valor, atribuindo a este o sinal positivo ou negativo. BINRIOS Quando atuam sobre dois valores: adio, subtrao, multiplicao, diviso, exponenciao. EXPRESSES ARITMTICAS Seguem um formato diferente da forma conhecida em matemtica. Exemplo: X = { 4 . [ 12 : ( 2 + 1 ) ] } ser escrita: X = ( 4 * ( 12 / ( 2 + 1 ) ) )
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

ENTRADA, PROCESSAMENTO E SADA DE DADOS Uma entrada e uma sada de dados podem ocorrer de diversas formas: ENTRADA: teclado, modem, leitores ticos, disco, etc. SADA: vdeo, impressora, disco, etc. Considerando que as entradas sero feitas via teclado e as sadas via vdeo, os programas utilizaro as seguintes funes: scanf() printf() para ENTRADA de dados para SADA de dados

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

ESTRUTURA DE UM PROGRAMA Todo programa escrito em C consiste de uma ou mais funes, possibilitando a construo de programas modulares e estruturados. A funo main() a principal instruo a ser considerada e dever estar presente em algum lugar do programa. Ela marca o ponto de inicializao do processo de execuo do programa.
<definies de pr-processamento> <declarao de variveis globais> main() { /* corpo da funo, declarao de variveis locais, etc. */ } <tipo> nome_da_funcao <parmetros> <declarao de parmetros> { /* corpo da funo, declarao de variveis locais, etc. */ }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

10

PRIMEIRO PROGRAMA EM C ALGORITMO 1. 2. 3. 4. Ler um valor para a varivel A; Ler um valor para a varivel B; Efetuar a adio da varivel B, atribuindo o resultado varivel X; Apresentar o valor da varivel X.

PROGRAMA main() { int A; int B; int X; scanf("%d",&A); scanf("%d",&B); X = A + B; printf("%d",X); }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

11

scanf() scanf("expresso_de_controle ", lista de argumentos); A expresso de controle contm os cdigos de formatao para o tipo de dado a ser processado, precedidos pelo sinal de percentagem %. %c %d %e %f %l %o %s %u %x Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura Leitura de de de de de de de de de apenas um caractere nmeros inteiros decimais nmeros em notao cientfica nmeros reais (ponto flutuante) nmero inteiro longo um nmero octal uma srie de caracteres um nmero inteiro decimal sem sinal nmeros hexadecimal

A lista de argumentos da funo scanf() indica os endereos das variveis em uso. O operador & possibilita retornar o contedo da varivel. Caso no seja usado o operador de endereo &, ser retornado o endereo de memria em que se encontra a varivel.
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

12

printf() printf("expresso_de_controle ", lista de argumentos); A expresso de controle contm os cdigos de formatao para o tipo de dado a ser processado, precedidos pelo sinal de percentagem %. %c %d %e %f %l %o %s %u %x Escrita Escrita Escrita Escrita Escrita Escrita Escrita Escrita Escrita de de de de de de de de de apenas um caractere nmeros inteiros decimais nmeros em notao cientfica nmeros reais (ponto flutuante) nmero inteiro longo um nmero octal uma srie de caracteres um nmero inteiro decimal sem sinal nmeros hexadecimal

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

13

SMBOLOS ESPECIAIS \n \t \b \" \\ \f \0 Gera uma nova linha Gera um espao de tabulao Executa um retrocesso de espao Apresenta o smbolo de aspas Apresenta o smbolo de barra invertida Gera um salto de pgina de formulrio Gera um nulo

O uso dos smbolos especiais acima permite obter caracteres que no podem ser conseguidos diretamente do teclado.

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

14

EXEMPLO Desenvolver um programa que efetue do clculo do salrio lquido de um profissional que trabalhe por hora. So dados: valor da hora de trabalho, nmero de horas trabalhadas no ms e percentual de desconto do INSS. ALGORITMO 1. 2. 3. 4. 5. 6. 7. Ler a varivel HT (horas trabalhadas) Ler a varivel VH (valor da hora de trabalho) Ler a varivel PD (percentual de desconto do INSS) Calcular o salrio bruto (SB): HT * VH Calcular o total de desconto (TD): PD / 100 Calcular o salrio lquido (SL): SB - TD Apresentar os valores do salrio bruto (SB), total de desconto (TD) e salrio lquido (SL)

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

15

/* Calculo de Salario */ main() { float HT,VH,PD,TD,SB,SL printf("Horas trabalhadas: "); scanf ("%f",&HT); printf("Valor da hora: "); scanf ("%f",&VH); printf("Percentual de desconto: "); scanf ("%f",&PD); SB=HT*VH; TD=(PD/100)*SB; SL=SB-TD; printf("Salario bruto ......: %f\n",SB); printf("Desconto ...........: %f\n",TD); printf("Salario liquido ....: %f\n",SL); }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

16

EXERCCIOS 1. Ler a temperatura em graus centgrados e apresent-la convertida em graus Fahrenheit. Frmula: F=(9*C+160)/5 F= temperatura em Fahrenheit C= temperatura em Centgrados 2. Calcular e apresentar o valor do volume de um cilindro. Frmula: pi x raio2 x altura 3. Ler dois valores para as variveis A e B, efetuar a troca dos valores de forma que a varivel A passe a possuir o valor da varivel B e que a varivel B passe a ter o valor da varivel A. Apresentar o valores trocados.

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

17

OPERADORES RELACIONAIS == != > < >= <= IGUAL DIFERENTE MAIOR MENOR MAIOR OU IGUAL MENOR OU IGUAL

CUIDADO! No confundir o operador de comparao == com o operador de atribuio =. OPERADORES LGICOS


&& (AND) condio 1 condio 2 resultado F F F V F F F V F V V V || (OR) condio 1 condio 2 F F V F F V V V resultado F V V V ! (NOT) condio resultado F V V F

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

18

ESTRUTURA DE DECISO: if Se a condio for verdadeira ser executada a instruo posicionada logo aps a instruo if. if (condio) instrues para condio verdadeira; instrues seguintes; Caso seja necessrio incluir mais de uma instruo para condio verdadeira, estas devero ser inseridas em blocos com os delimitadores { ... }. if (condio) { instruo_1 para condio verdadeira; instruo_n para condio verdadeira; } instrues seguintes;

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

19

EXEMPLO Ler dois valores inteiros e independentemente da ordem em que foram entrados, estes devero ser impressos na ordem crescente. ALGORITMO 1. Atribuir o primeiro valor varivel A 2. Atribuir o segundo valor varivel B 3. Verificar se o valor de A maior que o valor de B a. Se for verdadeiro, efetuar a troca de valores entre as variveis b. Se for falso, executar o passo 4 4. Apresentar os valores das duas variveis

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

20

/* ordena dois valores */ main() { int A, B, X; printf("Informe um valor para A: "); scanf("%d ", &A); printf("Informe um valor para B: "); scanf("%d ", &B); if (A>B) { X=A; A=B; B=X; } printf("\nOs valores ordenados so: %d e %d", A, B); }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

21

ESTRUTURA DE DECISO: if ... else Se a condio for verdadeira ser executada a instruo posicionada logo aps a instruo if, seno (se a condio for falsa) ser executada a instruo posicionada logo aps a instruo else. if (condio) instrues para condio verdadeira; else instrues para condio falsa; Caso seja necessrio incluir mais de uma instruo para condio verdadeira ou para condio falsa, estas devero ser inseridas em blocos com os delimitadores { ... }. if (condio) { instruo_1 instruo_n } else { instruo_1 instruo_n }
PROF. MARCOS ALEXANDRUK

para condio verdadeira; para condio verdadeira;

para condio falsa; para condio falsa;


LinguagemC.doc

LINGUAGEM C

22

EXEMPLO Ler duas notas, somar seus valores e calcular a mdia (dividir o resultado da soma por dois). Se a mdia for maior ou igual a cinco, imprimir: APROVADO. Caso contrrio, imprimir: REPROVADO. ALGORITMO 1. Atribuir a primeira nota varivel A 2. Atribuir a segunda nota varivel B 3. Somar o valor de A ao valor de B e dividir por 2 4. Se o resultado for maior ou igual a cinco, imprimir: APROVADO 5. Se o resultado for menor que cinco, imprimir: REPROVADO

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

23

/* calcula mdia */ main() { float A, B, X; printf("Informe a primeira nota: "); scanf("%d ", &A); printf("Informe a segunda nota: "); scanf("%d ", &B); X=(A+B)/2; if (X>=5) { printf("APROVADO"); } else { printf("REPROVADO"); } }
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

24

EXERCCIOS 1. Ler dois valores numricos e apresentar a diferena do maior para o menor. 2. Ler quatro valores referentes a quatro notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi APROVADO se o valor da mdia for maior ou igual a 7. Se o valor da mdia for menor que 7, solicitar a nota de exame, somar com o valor da mdia e obter nova mdia. Se a nova mdia for maior ou igual a 5, apresentar uma mensagem dizendo que o aluno foi APROVADO EM EXAME. Caso contrrio, informar que o aluno foi REPROVADO. Apresentar junto com as mensagens o valor da mdia do aluno para qualquer condio. 3. Ler trs valores para os lados de um tringulo, considerando lados como: A, B e C. Verificar se os lados fornecidos formam realmente um tringulo: (A<B+C && B<C+A && C<A+B). Se a condio for verdadeira, indicar que tipo de tringulo foi formado: issceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou eqiltero (todos os lados iguais).

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

25

ESTRUTURA DE DECISO: switch switch (varivel) { case constante_1: declarao_1 break; case constante_2: declarao_2 break; ... case constante_n: declarao_n break; default: declarao_default;

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

26

EXEMPLO: main() { int A; printf("Digite um nmero: "); scanf("d%", &A); switch (A) { case 1: printf("\nO numero e igual a 1\n"); break; case 1: printf("\nO numero e igual a 2\n"); break; default: prinf("\nO numero e igual a 3\n"); }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

27

OPERADOR TERNRIO: ? main() { int A=2, B; B = A<0 ? -1 : 1; printf("d%", B); }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

28

LOOPINGS Conhecidos tambm como laos ou malhas Utilizados para repetir um determinado trecho de um programa

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

29

WHILE Efetua um teste lgico no incio de um looping Executa um conjunto de instrues enquanto a condio verificada for verdadeira EXEMPLO /* while */ main() { int A, B, S, I; I = 1; while (I <= 3) { printf("\n\nInforme o valor de A: "); scanf("%d", &A); printf("Informe o valor de B: "); scanf("%d", &B); S = A + B; printf("\nResultado: %d", S); I++; } }
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

30

DO ... WHILE Efetua um teste lgico no final de um looping Executa um conjunto de instrues pelo menos uma vez antes de verificar a validade da condio estabelecida EXEMPLO /* do ... while */ main() { int A, B, S, I; I = 1; do { printf("\n\nInforme o valor de A: "); scanf("%d", &A); printf("Informe o valor de B: "); scanf("%d", &B); S = A + B; printf("\nResultado: %d", S); I++; } while (I <= 3) }
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

31

FOR Executa a inicializao incondicionalmente e testa a condio EXEMPLO /* for */ main() { int I; for (I=1;I<=10;I++) printf("I = %d\n", I); }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

32

EXERCCIOS 1. Apresentar todos os valores numricos inteiros mpares situados na faixa de 1 a 20. Para verificar se o nmero mpar, efetuar dentro do looping a verificao lgica desta condio com a instruo if, perguntando se o nmero mpar; sendo, mostre-o, no sendo, passe para o prximo passo. main() { int n; for (n=1;n<=20;n++) { if ((n%2)==1) printf("%d\n",n); } }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

33

2. Apresentar o total da soma obtido dos cem primeiros nmeros inteiros. (1+2+3+...98+99+100) main() { int n, s=0; for (n=1;n<=100;n++) { s=s+n; } printf("%d",s); } 3. Apresentar os resultados de uma tabuada para um nmero qualquer. main() { int n; for (n=1;n<=10;n++) { printf("%d x 3 = %d\n",n, n*3); } }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

34

4.Escreva um programa que apresente a srie de Fibonacci at o dcimo termo. A srie de Fibonacci formada pela seqncia: 1, 1, 2, 3, 5, 8, 13, 21 ... main() { int a=1, b=1, i; for (i=1;i<=5;i++) { printf("%d %d ",a, b); a=a+b; b=a+b; } }

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

35

VETORES (MATRIZES DE UMA DIMENSO) Utilizados quando tipos bsicos (inteiro, real, caractere e lgico) e/ou variveis simples no so suficientes para representar a estrutura de dados utilizada em um programa. A dimenso de uma matriz constituda por constantes inteiras e positivas. Os nomes dados s matrizes seguem as mesmas regras de nomes utilizados em variveis simples. Um vetor ou matriz de uma dimenso representado por seu nome, tamanho (dimenso) entre colchetes e seu tipo. SINTAXE tipo nome_da_matriz[dimenso] onde: tipo dimenso tipo de dado a ser guardado na matriz tamanho da matriz em nmero de elementos

PROF. MARCOS ALEXANDRUK

LinguagemC.doc

LINGUAGEM C

36

EXEMPLO /* calculo da media de 10 alunos */ main() { float M[10]; float MEDIA, SOMA; int I; char TECLA; printf("\nCALCULO DA MEDIA\n\n"); for (I=0;I<10;I++) { printf("Informe a %da. Nota: " I+1); scanf("%f", &M[I]); SOMA += M[I]; } MEDIA = SOMA/10; printf("\nMedia dos 10 alunos: %6.2f\n", MEDIA); printf("\nTecle algo para encerrar: "); TECLA = getche(); }
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

37

EXERCCIO 1. Efetuar a leitura de 5 elementos (nmeros inteiros) de uma matriz M do tipo vetor. No final, apresentar o total da soma de todos os elementos mpares. /* calculo dos elementos impares de um vetor */ main() { int M[5]; int I, SOMA=0; char TECLA; printf("\nSOMA DE ELEMENTOS IMPARES\n\n"); for (I=0;I<5;I++) { printf("Informe o valor do %do. elemento: " I+1); scanf("%d", &M[I]); } for (I=0;I<5;I++) if (M[I]%2==1) SOMA += M[I]; } printf("\nSoma dos elementos impares: %d", SOMA); printf("\nTecle algo para encerrar: "); TECLA = getche(); }
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

38

STRINGS Utilizadas para manipulao e armazenamento de textos. Caracteriza-se por ser um vetor (matriz de uma dimenso) do tipo char terminado com o caractere NULL "\0". O caractere NULL no visvel, mas muito importante: a nica forma que as funes possuem para identificar o final de uma string. As strings variveis, fornecidas via teclado, so tratadas atravs da funo scanf() com a utilizao do formato %s. EXEMPLO main() { int NOME[10]; printf()("Digite o seu nome:"); scanf("%s", NOME); printf()("Ola %s, NOME"); }
PROF. MARCOS ALEXANDRUK LinguagemC.doc

LINGUAGEM C

39

Se a matriz possui declarado um valor de tamanho 10, voc s poder utilizar 9, deixando uma posio livre para o caractere "\0". Observe a ausncia do operador &, precedendo o segundo argumento das instrues de entrada da funo scanf(). Este operador no deve ser usado, pois o nome de uma matriz o seu endereo inicial.

PROF. MARCOS ALEXANDRUK

LinguagemC.doc