Turbo
Turbo
Turbo
DESCRIÇÃO DO PROGRAMA
Operadores
a) Operador de atribuição = ;
b) Operadores relacionais e lógicos ;
c) Funções getch( ) , getchar( ) e getche( ) ;
Laços
a) Laço for;
b) Laço while;
c) Laço do-while;
Comandos de decisão
a) Comando if-else;
b) Comandos break , continue e goto;
c) Comando switch-case;
Funções
a) Chamando uma função;
b) Comando return;
c) funções recursivas;
Matrizes
a) Declaração de matrizes;
b) inicializando matrizes;
c) Matrizes como argumentos de funções;
d) Matrizes e strings;
e) Funções gets( ) , puts( ),strlen( ),strcat( ),strcpy( ),strcmp( );
Estruturas
a) Definindo estruturas;
b) Acessando membros da estrutura;
c) Passando estruturas para funções;
Apostila Turbo C
DEFINIÇÕES BÁSICAS
Programa - Conjunto de intruções distribuídas de maneira lógica , com a
finalidade de executar satisfatoriamente determinada tarefa .
Linguagem de Programação - Conjunto de instruções possíveis utilizadas pelo
homem para se comunicar com a máquina .
Endereço de memória - Número de uma posição de memória .
Compilador - Programa que traduz programas em linguagem de alto nível para
linguagem de máquina.
Erro de compilação - Erro no programa em linguagem de alto nível que é
detectado pelo compilador.
Erro de execução - Erro cometido em um programa que não é detectado até que o
programa seja executado .
Variável - Simbolo que representa uma posição de memória .
Ponteriros - Tipos de variavéis que nos permite manipular endereços de outras
variavéis .
EXEMPLO - 1
void main( )
{
int idade ;
clrscr( );
printf (“ Digite sua idade “);
scanf (“ %d”,&idade );
printf ( “Sua idade é %d” ,idade );
getch( );
}
1
Apostila Turbo C
clrscr( ) à função predefinida para limpar a tela
printf (“ Digite sua idade “) à imprime a mensagem entre aspas na tela
scanf (“ %d”,&idade ) à lê via teclado um valor que e colocado em idade
getch ( ) à função predefinida , espera uma tecla ser pressionada
} à fim da função main
VARIÁVEIS
DECLARANDO VARIAVEIS
tipo lista_variaveis;
INICIALIZANDO VARIAVEIS
FUNÇAO printf( )
2
Apostila Turbo C
determinado dado na tela.
- Sintaxe
printf(“string de controle”,variavel);
- Exemplo :
int k=25;
printf(“%i”,k);
FUNCAO scanf( )
EXERCÍCIO - 1
3
Apostila Turbo C
Código fonte : É o texto de um programa que o usuário pode ler , comumente
chamado de programa .
OPERADORES
C é uma linguagem rica em operadores . Alguns são mais usados do que outros
como é o caso do operador de atribuição e dos operadores aritméticos , a seguir mostramos
tabelas contendo os operadores aritméticos , relacionais e lógicos .
OPERADORES MATEMÁTICOS
OPERADOR ACAO
- subtração
+ adição
* multiplicação
/ divisão
% resto da divisão
-- decremento
++ incremento
OPERADORES LOGICOS
OPERADOR ACAO
&& and
|| or
! not
OPERADORES RELACIONAIS
OPERADOR ACAO
> maior que
< menor que
>= maior ou igual
4
Apostila Turbo C
FUNCOES
Exemplo :
void quadrado(int p)
{
int k;
k = p*p;
printf(“%i”,p);
}
void main( )
{
int k=25;
quadrado(k);
getch( );
}
COMANDO return
Serve para retornarmos um valor calculado dentro de uma função quando chamada
de alguma parte do programa .
Exemplo :
5
Apostila Turbo C
valor = calc_sin(50);
printf(“%f”,valor);
}
COMANDOS DE DECISAO
Os comandos de decisão permitem determinar qual é a ação a ser tomada com base
no resultado de uma expressão condicional .
COMANDO IF-ELSE
if ( condição ) comando ;
else comando ;
Exemplo :
EXERCÍCIO - 2
6
Apostila Turbo C
case constante1 : seqüência de comandos ; break;
case constante2 : seqüência de comandos ; break;
case constante3 : seqüência de comandos ; break;
.
.
default : seqüência de comandos ;
}
O comando switch ao avaliar a expressão entre parênteses , desviamos para o rótulo case
cujo valor coincida com o valor da expressão . O comando break serve para sairmos do
bloco mais interno ao qual o break aparece . O comando break garante a execução de
apenas uma chamada dentro do switch .
Exemplo :
#include <stdio.h>
void main ( )
{
char opção;
clrscr( );
printf(“A - imprime a letra f”);
printf(“B - imprime a letra g”);
printf(“C - imprime a letra h”);
opção = getch( ) ;
switch(opção)
{
case ‘a’ : printf(“f”);break;
case ‘b’: printf(“g”);break;
case ‘c’ : printf(“h”);break;
}
}
EXERCÍCIO - 3
LAÇOS
Laços são comandos da linguagem C úteis sempre que uma ou mais instruções
devam ser repetidas enquanto uma certa condição estiver sendo satisfeita .
7
Apostila Turbo C
LAÇO FOR
O laço for é geralmente usado quando queremos repetir algo um número fixo de
vezes . Isto significa que utilizamos um laço for quando sabemos de antemão o número de
vezes a repetir .
Forma geral :
Exemplo :
Exemplo2 :
void main( )
{
float num;
for (num=1;num<20;num++) raiz(num);
}
void raiz( float n)
{
printf(“\nn = %f raiz quadrada = %f”,n,sqrt(n));
}
LAÇO WHILE
Exemplo :
8
Apostila Turbo C
int k=0;
while ( k != 50 )
{
if (op==’p’)
if (k%2==0) printf(“%i”,k);
if (op==’i’)
if (k%2!=0) printf(“%ik);
k++;
}
}
LAÇO DO WHILE
Forma geral
do
{
comando ou bloco de comandos;
}
while(expressão de teste);
Exemplo :
void main( )
{
char op;
int sair = 0;
do
{
op = getche( );
switch(op)
{
case ‘s’ : somatorio( );break;
case ‘f’ : fibonacci( );break;
case ‘q’ : sair = 1;
}
}while(sair!=1);
}
EXERCICIO - 4
9
Apostila Turbo C
se N é par então N agora é N / 2
se N é ímpar N agora é 3*N + 1
Assim para N = 3 calculamos a seguinte tabela :
3 à 10 4à2
10 à 5 2à1
5 à 16 1à4
16 à 8 4à2
8 à4 2à1
Observe que apartir de sete iterações a sequencia 4 2 1 começa a se repetir . Faça
um programa que calcule para um dado N o número de iterações até se chegar ao
primeiro 1 .
EXERCÍCIO - 5
EXERCÍCIO - 6
EXERCÍCIO - 7
EXERCÍCIO - 8
EXERCÍCIO - 9
EXERCICIO - 10
Escreva um programa que solicite ao úsuario três números inteiros a,b,c onde a é
maior que 1 . Seu programa deve somar todos os inteiros entre b e c divisieis por a .
FUNÇÕES RECURSIVAS
Uma função é dita recursiva quando se é definida dentro dela mesma. Isto é, uma
10
Apostila Turbo C
função e´ recursiva quando dentro dela está presente uma instrução de chamada a ela
própria.
MATRIZES E STRINGS
EXERCICIO - 11
Faça um programa que leia uma senha digitada . Se a senha for correta
imprime uma mensagem e se for falsa imprime outra mensagem .
EXERCÍCIO - 12
11
Apostila Turbo C
Escreva um programa que leia uma string e imprime a mesma de trás para
frente .
EXERCÍCIO - 13
INICIALIZAÇÃO DE MATRIZES
int mat[8]={5,2,1,5,4,5,4,7};
int sqr[2][3]={
2,3,6,
4,5,5,
};
char str[80] = “Linguagem C”;
EXERCÍCIO - 14
EXERCÍCIO - 15
EXERCÍCIO - 16
FUNCAO OPERACAO
getchar ( ) lê um caractere ; espera por <enter>
12
Apostila Turbo C
13
Apostila Turbo C
As variáveis que formam a estrutura são chamados de elementos da estrutura .
EXEMPLO - 1
#include <stdio.h>
#include <conio.h>
struct endereco {
char nome[30];
char rua[40];
char cidade[20];
unsigned long int cep;
};
struct endereco ficha ;
void main( )
{
gets(ficha.nome);
ficha.cep = 12345;
printf(“%u”,ficha.cep);
register int i;
for ( i= 0 ; ficha.nome[i];i++) putchar( ficha.nome[i]);
}
MATRIZES E ESTRUTURAS
Por exemplo , para se criar 100 conjuntos de variáveis do tipo struct ficha , você
deve escrever :
struct endereco ficha[100] ;
Para acessar um elemento da estrutura 3 , você deve escrever :
printf( “%u”,ficha[2].cep);
EXERCICIO - 2
Faça uma agenda com o nome de 5 clientes . Cada cliente é cadastrado , usando se
a opção cadastrar , a agenda deve conter também as opções consultar e sair . Cada cadastro
deve ter nome , endereço , cidade e telefone .
EXEMPLO - 2
#include <stdio.h>
#include <string.h>
struct lista {
char x ;
int y;
float ;
};
14
Apostila Turbo C
struct lista exemplo;
void imprime (char ch);
void main ( )
{
getchar( exemplo.x);
imprime(exemplo.x); //passa o valor do caracter em x
}
void imprime(char ch)
{
printf(“%c”,ch);
getch( );
}
EXEMPLO -3
PONTEIROS
Ponteiro é uma variável que contém um endereço de memória de outra variável .
tipo *nome_da_variável ;
OPERADORES DE PONTEIROS
15
Apostila Turbo C
EXEMPLO - 1
#include <stdio.h>
void main( )
{
int *ender , cont , val ;
cont = 100;
ender = &cont; //pega o endereço de cont
val = *ender; // pega o valor que esta no endereço ender
printf ( “ %d “,val ) // exibe o valor de val
getch( );
}
EXEMPLO - 2
#include <stdio.h>
void main( )
{
int x,*p1,*p2;
x = 101;
p1 = %x;
p2 = p1;
printf ( “ %p %d “ ,p2,*p2);
getch( );
}
PONTEIROS E MATRIZES
16
Apostila Turbo C
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void main( )
{
char str[80] , *p ;
printf( “digite uma string em letras maiúsculas” );
gets(str);
p = str;
while ( *p ) printf ( “%c”,tolower(*p++) );
getch( );
}
INDEXANDO UM PONTEIRO
EXEMPLO - 4
#include <stdio.h>
void main( )
{
int i[5]={1,2,3,4,5};
int *p , t;
p = i;
for ( t=0 ; t<5 ; t++) printf (“%d”,p[t]);
getch( );
}
#include <stdio.h>
#include <conio.h>
int conta(char *s);
void main( )
{
char mat[20] = ”tamanho da frase”;
int tam;
17
Apostila Turbo C
tam = conta(mat);
printf( “%i”,tam);
getch( );
}
EXERCíCIO - 1
A linguagem C usa a chamada por valor para passar argumentos para funções .
Esse método copia o valor do argumento para o parâmetro . Assim não se altera o
18
Apostila Turbo C
valor das variáveis usadas para chamar a função . Você pode alterar os valores dessas
variáveis fazendo uma chamada por referência usando ponteiros . Agora o endereço da
variável é passada para a função e não o seu valor .
EXEMPLO - 7
#include <stdio.h>
#include <string.h>
void leia( char *s );
void main( )
{
char str[80];
leia (str);
printf (“%s”,str);
getch( );
}
void leia( char *s )
{
char ch;
for (int i= 0 ; i< 80 ; i++)
{
ch = getchar( );
switch (ch);
{
case ‘\n’ : return;
case ‘\b’ : if (t> 0) t-- ;break ;
default : s[t] = ch ;
}
s[80] = ‘\0’;
}
EXERCíCIO - 2
Monte a função : void troca ( int * x , int * y ) , cuja execução seja assim :
EXERCíCIO - 3
Escreva um programa que leia e imprima uma número . Obs. não use a função
padrão scanf , você deve definir uma , por exemplo :
void leia ( int * x )
MATRIZES DE PONTEIROS
19
Apostila Turbo C
Podem existir matrizes de ponteiros , como acontece com qualquer outro tipo
de dado .
EXEMPLO - 8
#include <stdio.h>
#include <conio.h>
char *erro[ ] = { “não posso abrir arquivo”,
“erro de leitura ”,
“erro de gravação ” };
void mensagem(int i) ;
void main( )
{
clrscr( );
mensagem(2);
getch( );
}
void mensagem( int i)
{
printf( “%s”,erro[i] );
}
RETORNANDO PONTEIROS
EXEMPLO - 9
#include <stdio.h>
#include <conio.h>
char *verifica( char c , char *s );
void main( )
{
char s[80] , *p , ch;
printf(“digite uma frase e uma caracter \n ”);
gets(s);
ch=getche( );
p=verifica( ch,s);
if (p) printf( “%s”,p);
else printf( “nenhuma correspondência foi encontrada”)
}
20
Apostila Turbo C
EXERCíCIO - 4
MANIPULAÇÃO DE ARQUIVOS
ARQUIVOS BINÁRIOS E ARQUIVOS ASCII EM C
21
Apostila Turbo C
ABERTURA DE ARQUIVOS
fprintf(nome_do_ponteiro_de_arquivo,” tipo_de_dados”,dados)
#include<stdio.h>
#include <conio.h>
void main( )
{
FILE *fp;
char texto[ ] = {“menina bonita”};
fp = fopen(“alo.txt”,”w”);
fprintf(fp,”%s”,texto);
fclose(fp);
getch();
}
Neste programa nos declaramos uma string constante texto que recebeu o tipo de
formatacao “%s” na função fprintf , sendo criado no diretório atual um arquivo ASCII de
nome “alo.txt” com a string “menina bonita”;
A função fclose fecha o arquivo , que não passa a receber mais nem uma ação de gravação
ou leitura. Caso não seja utilizada esta função o próprio sistema se tratara de fechar o
arquivo.
puts(caracter,ponteiro_para_o_arquivo);
22
Apostila Turbo C
No terceiro caso e comum substituirmos estas funções pela função fwrite que e a
função mais utilizada por programadores em C . Sua sintaxe apesar de um pouco mais
elaborada não possui muitas dificuldades :
fwrite(estrutura,tamanho(estrutura),indice,ponteiro_de_arquivo);
#include <stdio.h>
#include <conio.h>
typedef struct entrada
{
char nome[20];
float deve;
};
void main()
{
FILE *fp;
entrada meus_dados[15];
strcpy(meus_dados[0].nome,”Hugo Antonio”);
meus_dados[0].deve = 0.001;
strcpy( meus_dados[1].nome,”Ricardo Tavares”);
meus_dados[1].deve = 13.89;
fp = fopen(“escritor.dat”,”w”);
fwrite(meus_dados,sizeof(meus_dados),1,fp);
fclose(fp);
getche( );
}
EXERCICIO - 1
EXERCICIO - 2
23
Apostila Turbo C
CLIENTE ,que possua os itens “nome,numero de identidade,telefone,estado civil (s)
olteiro ou ( c) asado,cidade de origem ”.Tais dados devem ser gradados em disco.
LEITURA DE ARQUIVOS
Da mesma forma para a abertura de arquivos dados podem ser lidos no carater
formatado , no carater de um conjunto de caracteres ou lendo-se uma estrutura inteira.No
primeiro caso utilizamos a função fscanf, que possui função contraria a função fprintf, e
cuja a sintaxe e :
No segundo caso utilizamos a função getc para o terceiro caso a função fread de sintaxe :
fread(estrutura,tamanho(estrutura),indice,ponteiro de arquivo);
#include <stdio.h>
#include <conio.h>
typedef struct entrada
{
char nome[20];
int deve;
};
void main()
{
FILE *fp;
entrada meus_dados[15];
fp = fopen(“escritor.dat”,”r”);
fread(&meus_dados,sizeof(meus_dados),1,fp);
printf(“%s %d”,meus_dados[0].nome,meus_dados[0].deve);
printf(“%s %d”,meus_dados[1].nome,meus_dados[1].deve);
getch();
fclose(fp);
}
FUNCAO Fseek( )
#include <stdio.h>
#include <conio.h>
typedef struct entrada
{
char nome[20];
int deve;
24
Apostila Turbo C
};
void main()
{
FILE *fp;
int d;
entrada meus_dados[15];
fp = fopen(“escritor.dat”,”r”);
puts(“Digite o numero do registro a ser recuperado ”);
scanf(“%d”,&d);
fseek(fp,(long)(d*sizeof(meus_dados)),0);
fread(&meus_dados,sizeof(meus_dados),1,fp);
printf(“%s %d”,meus_dados[0].nome,meus_dados[0].deve);
printf(“%s %d”,meus_dados[1].nome,meus_dados[1].deve);
getch();
fclose(fp);
}
EXERCICIO - 3
1- CONSULTAR
2- CADASTRAR CLIENTE
3- SAIR
25