Professional Documents
Culture Documents
Linguagem C
Objetivo
Aprender os conceitos da linguagem C; Aprender a desenvolver aplicaes em linguagem C; Desenvolver interface de comunicao de dados;
McGraw-Hill.
YOURDON, Edward. Administrando tcnicas estruturadas. Rio de Janeiro: Campus.
BURGESS, Mark e Hale-Evans, Ron. The GNU C Programming Tutorial. Free Software
Foundation, Inc
http://cavg.vila.bol.com.br. Site do Prof. da disciplina, inclui lista de exerccios, apostilas e tutoriais, links, e outras informaes atualizadas.
http://www.portalc.nip.net: Site repleto de apostilas, textos, tutoriais, programas-
fontes e at compiladores para a linguagem C e C++. Fundamental uma visita com calma a fim de explorar bem o material. Possui links para outros sites.
http://www.deinf.ufma.br/~cav/c-basico.zip:
Link direto para a apostila de Fundamentos de C, citada ao longo desta apresentao, hospedada em servidor do DEINF/UFMA.
Dev C++
um ambiente de desenvolvimento integrado (IDE); Permite escrever aplicativos Windows ou aplicativos de console em
linguagem C ou C++;
Dev C++
Dev C++
Estrutura de um Programa C
Representao resumida de uma funo main
Importante
Todos comandos devem terminar com o ponto e vrgula ; menos nos casos
se digitar os comandos (diferencia letras maisculas de minsculas). Ex: count, Count, COUNT
1 Programa em C
#include <stdio.h> //necessria para utilizar o SCANF e PRINTF #include <stdlib.h>
main() {/* funo obrigatria */ printf("oi mundo!!"); //comando de sada de dados getch(); }
13
Caracteres Vlidos
Um programa-fonte em C um texto no formatado escrito em um editor
de textos usando um o conjunto padro de caracteres ASCII. A seguir esto os caracteres utilizados em C:
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0 + - * / \ = | & ! ? # % ( ) { } [ ] _ . , : < >
14
Palavras-chave
C tem 28 palavras-chave, que no podem ser utilizadas como nomes de
variveis ou funes.
Operadores Bsicos
Operadores aritmticos:
, +, *, /, %, , ++
Operadores relacionais:
>, <, >=, <=, ==, !=
Operadores lgicos:
&&: AND ||: OU ! : NOT
Atribuio
Atribuio feita via operador =
Equivale ao do pseudo-cdigo
C = (A + B) * 2 / 4;
relacionais!
O operador relacional de igualdade em C ==
Operadores Aritmticos
Operadores de incremento / decremento:
Se x uma varivel do tipo inteiro, ento
Exemplo:
#include<stdio.h> main(){ int x, y, z; x = 5; y = x++; z = ++x; printf(x=%d y=%d z=%d", x, y, z); getch();
Operadores Aritmticos
Abreviaes: x += 100 equivalente a x = x + 100
x = 50 equivalente a x = x 50 x *= 30 equivalente a x = x * 30 x /= 10 equivalente a x = x / 10
Expresses
Prioridades dos Operadores Bsicos
Comentrios
/* ... */: Comentrio de linha Mltipla //
: Comentrio de 1 linha
Exemplo:
/* Isso um comentrio que comea nessa linha e continua nessa outra linha, terminando aqui */ // Isso um comentrio de 1 linha
Tipos de Dados
Tipos Bsicos Pr-Definidos (tipos primitivos):
Inteiros (int) e Reais (float ou double) Caracteres (char)
Tipo de Dados
Caractere(char)
Ocupa 1 byte 0 e 255 associado a um dado caractere (tabela ASCII estendida);
Inteiro(int)
Tamanho em bytes depende da arquitetura Faixa mnima (C ANSI): 2 bytes faixa de 32768 a 32767
Reais(float e double)
float: faixa mnima 32 bits (4 bytes) double: faixa mnima 64 bits (8 bytes)
Constantes
Definio:
Identificador associado a um valor inicial que no pode ser modificado pelo programa
Declarao de Constantes:
const tipo identificador = valor;
Exemplo:
const float pi = 3.141592;
Principais Utilidades:
Clareza de cdigo
Preveno de erros
#define
Outra forma de declarar constates utilizando o comando #define; Sintaxe:
#define <nome_da_constante> valor
Exemplo:
#include <stdio.h> #define PI 3,1415926536
main(){ printf("%f", PI); getch(); }
Observe que na definio de uma constante no h o ; no final. Se for colocado, este far parte do valor associado constante.
Entrada e Sada
Existem diversas funes pr-definidas para entrada e sada de dados em linguagem
C
Por ora, precisamos de
programas
printf e scanf
apropriado
Admite caracteres especiais, como quebra de linha (\n) Exemplo: printf("Primeira linha\n Proxima linha");
Strings de controle:
Estrutura de controle
Condicional:
IF-ELSE IF-ELSE-IF SWITHC
Repetio:
WHILE DO-WHILE FOR Laos infinitos
Exerccio
1- Escreva um programa que receba o valor em real e a cotao do dlar e ento calcule e exiba o valor em dlar. Ex.: Dados de entrada:
Valor: R$ 100,00 Cotao do dlar: 2,05
2 - Escreva um programa que receba 2 nmeros e realiza as seguintes operaes com estes nmeros: -Soma: A+B; -Subtrao: A-B; - Multiplicao: A*B - Diviso: A/B
32
C
if(condio){ bloco 1; }else{ bloco 2; }
Exemplo: IF-ELSE
#include <stdlib.h> #include <stdio.h> main(){ int a,b; printf(----Diviso----\n\n"); printf(1 Numero:); scanf("%d",&a); printf(2 Numero:); scanf("%d",&b);
}else if (condio){
comandos; }else if (condio){ comandos; }else{ comandos; }
35
Sem
;
:
switch (varivel){ case 1: Utiliza-se o realiza 1; case 2: realiza ; . . default: realiza outros; }
Exemplo: SWITCH
#include <stdlib.h> #include <stdio.h> main(){ char opcao; printf("1. Cadastrar"); printf("2. Alterar\n"); printf(3. Sair\n");
Exerccio
1 - Utilizando o comando SWITCH desenvolva um programa em linguagem C que recebe um nmero, e imprime o nome correspondente ao dia da semana.
Ex:
Nmero: 2
Sada: Segunda-Feira
se
ele
Observao: Tringulo equiltero: Possui os 3 lados iguais. Tringulo issceles: Possui 2 lados iguais. Tringulo escaleno: Possui 3 lados diferentes.
38
C
while(condio){ bloco; }
Notem que enquanto condio for verdadeira (ou 1, ou no zero) o lao ser feito, s finalizando quando condio for falsa(ou zero).
Exemplo: While
#include <stdio.h> #include <stdlib.h> main(){ char ch='x'; //caso seja digitado a ou A o lao finalizado while((ch!='a')&&(ch!='A')){ printf("Informe um caractere: "); fflush(stdin);//limpa o buffer de entrada scanf("%c", &ch);
lao do-while verifica sua condio no final do lao. Isso significa que um lao do-while ser executado pelo menos uma vez.
do{ comandos;
}while(condio);
Break: utilizado para finalizar um lao, pode ser utilizado nas seguintes estruturas: while, do-while, for, switch;
Exemplo: DO-WHILE
#include <stdio.h> #include <stdlib.h> /* Assegura que o usurio especificou uma opo vlida */ main(){ int opcao; do{ printf ("Converte:\n"); printf (" 1: Decimal para hexadecimal\n"); printf (" 2: Hexadecimal para decimal\n"); printf (Informe sua opo: "); scanf ("%d", &opcao); system("cls"); }while((opcao == 1) || (opcao == 2)); printf ("\n\n\t\a\aOpcao %d e invalida, do-while finalizado!", opcao);
42
como separador
C
for(inicializao;condio;incremento){ bloco; }
43
condio.
Ex.: index=1.
expresso true.
Ex.: index<=20.
44
Exemplo: FOR
#include <stdio.h> #include <stdlib.h> main(){ int x; printf("Numeros em ordem crescente: \n\n"); for (x= 0; x<= 10; x++){ printf ("%3d", x); }
printf("\n\n\n"); printf("Numeros em ordem decrescente: \n\n"); for (x= 10; x>= 0; x--){ printf ("%3d ", x); } getch(); }
Exerccio
1 - Utilizando as estruturas de repetio, construa um programa em linguagem C que imprima todos os nmeros pares compreendidos entre 1 e 100; 2 - Desenvolva um programa que receba um numero do usurio e imprima a soma de todos os seus anteriores at 1; Ex: Valor 5; Resposta: 5+4+3+2+1 = 15;
Obs. 1: O programa deve permanecer em lao at que o usurio digite o valor 0, assim o programa finalizado. Obs. 2: Utilize os comandos -system(cls) //limpa tela -sleep(tempo) //Temporizador
46
Vetores
Vetores so coleo de objetos que tm mesma natureza, i.e., todos seus
elementos possuem um mesmo tipo bsico. De fato, um vetor pode ser visto conceitualmente como sendo equivalente a uma matriz de dimenso 1 x m, onde m. So chamados ainda de array, em ingls.
Os elementos de um vetor so identificados pelo nome seguido de ndice
entre colchetes.
47
Vetores
Tem-se, ento na memria o seguinte arranjo:
li
li+1
li+2
...
ls-1
ls
li = limite inferior = 0, ls= limite superior, O nmero de elementos num vetor em C dado por ls+1, pois o primeiro ndice sempre 0!
48
Vetores
Exemplo: Vetor de notas de uma turma:
notas
7 0 5,5 1 4 2 ... 8 25 10 26
Exemplo:
float notas[22];
49
Vetores: Iniciao
Veja exemplos de declaraes e inicializaes de vetores a seguir.
int dia[7] = {12,30,14,7,13,15,6}; float notas[5] = {8.4,6.9,4.5,4.6,7.2}; char vogal[5] = {'a, e, i, o, u'};
50
Vetores: Observaes
Na linguagem C, devemos ter cuidado com os limites de um vetor/matriz.
Embora na sua declarao, tenhamos definido o tamanho de um vetor/matriz, o C no faz nenhum teste de verificao de acesso a um elemento dentro do vetor/matriz.
Por exemplo se declaramos um vetor/matriz como int valor[5],
teoricamente s tem sentido usarmos os elementos valor[0], ..., valor[4]. Porm, o C no acusa erro se usarmos valor[12] em algum lugar do programa. Estes testes de limites devem ser feitos logicamente dentro do programa, pelo programador.
Exemplo: Vetor
#include <stdio.h> #include <stdlib.h>
main(){ float soma,notas[5]; int i ; printf("\n\n\t\t\t--------Calculo da media--------\n\n\n"); for(i=0;i<5;i++){ printf("\tDigite a nota do aluno %d: ",i); scanf("%f",¬as[i]); } soma=0; for(i=0;i<5;i++) { soma=soma+notas[i]; }
52
aos vetores. De fato, uma matriz pode ser vista conceitualmente como sendo equivalente a uma matriz multidimensional, semelhante ao que ocorre na matemtica. Mais ainda, pode-se ver uma matriz como uma coleo de vetores, i.e. um vetor de vetores.
53
Matrizes: Declarao
A sintaxe para declarao de vetores multidimensionais : tipo nome[tam_1][tam_2]...[tam_N;
onde: tipo o tipo dos elementos do vetor. nome o nome (identificador) do vetor. [tam_1][tam_2]...[tam_N] o tamanho de cada dimenso do vetor.
Os ndices dos vetores multidimensionais, tambm comeam em 0. Por
54
float notas[3][3];
Isto resultar na seguinte estrutura bidimensional na RAM (teoricamente
falando):
55
8.4
6.9 4.5
7.4
2.7 6.4
5.7
4.9 8.6
5.6
4.5 6.9
7.7
8.7 9.1
Exemplo: Matriz
main(){ int a[2][2],b[2][2]; int t,p;
//l uma matriz printf("\n\n\t\t\t--------Soma de 2 matrizes--------\n\n"); printf("\n\n\t\tMatriz A:\n\n"); for(p=0;p<2;p++){ for(t=0;t<2;t++){ printf("\t\t[%d][%d]: ", p,t); scanf("%d", &a[p][t]); } } printf("\n\n\t\tMatriz B:\n\n"); for(p=0;p<2;p++){ for(t=0;t<2;t++){ printf("\t\t[%d][%d]: ", p,t); scanf("%d", &b[p][t]); } }
Exemplo: Matriz-cont.
printf("\n\n\n\n"); printf("\t\tA + B = \n\n"); //imprime a matriz for(p=0;p<2;p++){ for(t=0;t<2;t++){ printf("\t\t%3d ", a[p][t]+b[p][t]); } printf("\n"); } getch(); }
Strings
Strings (Ingls) so cadeias ou sequncias ordenadas de caracteres. A linguagem C, ao contrrio de outras linguagens de programao, no
char nome_da_variavel[numero_de_caracteres];
Para a utilizao de Strings necessrio inserir a biblioteca:
#include <string.h>.
Funes string.h
Funo
strcat(destino, origem) strcmp(destino, origem) strcmpi(destino, origem)
Descrio
Concatena duas string e transfere resultado para a cadeia de destino. Compara as 2 string Compara as 2 string levando em contas letras maisculas e minsculas Informa a quantidade de caracteres contidos na string, considerando os espaos em branco. Converte os caracteres da string para minsculo Converte os caracteres da string para maisculo. Copia a string de origem para a de destino, substituindo seu contedo. Comando utilizado para ler uma matriz o
Strlen(string)
Funes
Definio: Conjunto de comandos agrupados em um bloco que recebe um nome e atravs deste pode ser ativado. Utilidade: Permitir a modularizao e reaproveitamento de cdigo. Exemplo de funes existentes: main printf scanf system getch getchar Etc.
Funes
Sintaxe:
Tipo_da_funo nome(parmetros){ <corpo_da_funo> retorno_da funo }
Tipo_da_funo: Assim como as variveis as funes possuem um tipo, sendo estes:
possuem parmetros;
Retorno_da_funo: Valores que devem ser retornados a quem realizou a chamada da
Funes
Comando RETURN: O comando return responsvel por finalizar a
Return (valor);
Return valor;