Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Apostila programação C++, Notas de estudo de Administração Empresarial

Apostila C++

Tipologia: Notas de estudo

2015

Compartilhado em 12/11/2015

fabricio-lago-5
fabricio-lago-5 🇧🇷

3 documentos

1 / 23

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Centro profissionalizante de Camaçari CPC
Coordenado técnico/Professor: Joedson Leite Página 3
Introdução à programação
Os programas de computador, também conhecidos com software, são constituídos
por uma série de instruções que o computador executa. O processo de definir as
instruções que o computador deve executar é conhecido como programação.
Toda programação obedece a uma sequencia lógica, essa sequencia damos o nome
de algoritmo.
Algoritmo: conjunto das regras e procedimentos lógicos perfeitamente definidos
que levam à solução de um problema em um número finito de etapas.
Quando escrevemos uma programação primeiramente é preciso conhecer o tipo de
linguagem a ser executada, existe diversas linguagem de programação, Assembly,
C, C++, pascal, FORTRAN entre outras, porém a linguagem que vamos trabalhar é o
C++. Além da linguagem temos que observar também o compilador, que é o programa
que montará o programa executável a partir do código fonte, algoritmo construído,
o compilador converte esse código fonte em 0’s e 1’s conhecida como linguagem de
máquina.
Estruturas de um programa em C
Para obter sucesso na programação é preciso seguir corretamente uma estrutura
de programação:
1º Cabeçalho
2º Funções
3º Definição de constantes
4º Inicialização do programa principal
5º Definição das variáveis
6º Desenvolvimento da lógica
7º Finalização do programa.
Cabeçalho: é a definição para o compilador da biblioteca a ser utilizada. As
bibliotecas definem um conjunto de instruções que podem ser utilizadas no código
fonte e ser entendida pelo compilador. Caso não seja digitada corretamente a
estrutura de definição, durante o processo de compilação apresentará erro na
instrução que precisaria dessa biblioteca para compilar.
Estrutura:
#include < nome_da_biblioteca.h >
- stdio (standard input output) saídas e entradas padrões. “ #include<stdio.h> ”
diz ao compilador que ele deve incluir o arquivo-cabeçalho stdio.h. Neste arquivo
existem declarações de funções úteis para entrada e saída de dados (std
=standard, padrão em inglês; io = Input/Output, entrada e saída ==> stdio =
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Pré-visualização parcial do texto

Baixe Apostila programação C++ e outras Notas de estudo em PDF para Administração Empresarial, somente na Docsity!

Centro profissionalizante de Camaçari – CPC

Introdução à programação

Os programas de computador, também conhecidos com software, são constituídos

por uma série de instruções que o computador executa. O processo de definir as

instruções que o computador deve executar é conhecido como programação.

Toda programação obedece a uma sequencia lógica, essa sequencia damos o nome

de algoritmo.

Algoritmo: conjunto das regras e procedimentos lógicos perfeitamente definidos

que levam à solução de um problema em um número finito de etapas.

Quando escrevemos uma programação primeiramente é preciso conhecer o tipo de

linguagem a ser executada, existe diversas linguagem de programação, Assembly,

C, C++, pascal, FORTRAN entre outras, porém a linguagem que vamos trabalhar é o

C++. Além da linguagem temos que observar também o compilador, que é o programa

que montará o programa executável a partir do código fonte, algoritmo construído,

o compilador converte esse código fonte em 0’s e 1’s conhecida como linguagem de

máquina.

Estruturas de um programa em C

Para obter sucesso na programação é preciso seguir corretamente uma estrutura

de programação:

1º Cabeçalho

2º Funções

3º Definição de constantes

4º Inicialização do programa principal

5º Definição das variáveis

6º Desenvolvimento da lógica

7º Finalização do programa.

Cabeçalho: é a definição para o compilador da biblioteca a ser utilizada. As

bibliotecas definem um conjunto de instruções que podem ser utilizadas no código

fonte e ser entendida pelo compilador. Caso não seja digitada corretamente a

estrutura de definição, durante o processo de compilação apresentará erro na

instrução que precisaria dessa biblioteca para compilar.

Estrutura:

#include < nome_da_biblioteca.h >

- stdio (standard input output) saídas e entradas padrões. “ #include ”

diz ao compilador que ele deve incluir o arquivo-cabeçalho stdio.h. Neste arquivo existem declarações de funções úteis para entrada e saída de dados (std =standard, padrão em inglês; io = Input/Output, entrada e saída ==> stdio =

Centro profissionalizante de Camaçari – CPC

Entrada e saída padronizadas). Toda vez que você quiser usar uma destas funções deve-se incluir este comando.

Funções do sdtio:

 printf : Exibe no monitor informações de texto. Estrutura: printf(“ Texto que aparecerá no monitor”)  scanf: Espera uma entrada pelo teclado e preenche uma variável com essa informação. Estrutura: scanf(“código_da_variável”,&variável)

-stdlib (standard library é biblioteca padrão em inglês) “ #include ”

Ela possui funções envolvendo alocação de memória, controle de processos,

conversões e outras.

Funções do stdlib:

 system(“pause”): força a parada da execução do programa até que uma tecla seja pressionada exibindo na tela “pressione qualquer tecla para continuar”.  system(“cls”): clear screen tem a função de limpar a tela.  system(“color XY”): altera a cor do plano de fundo e letras do programa executado sendo X o plano de fundo e Y as letras, podemos usar até 16 cores dadas em hexadecimal: 0 =Preto 1 = Azul 2 = Verde 3 = Verde-água 4 = Vermelho 5 = Roxo

6 = Amarelo 7 = Branco 8 = Cinza 9 = Azul claro A = Verde claro B = Verde-água claro

C = Vermelho claro Lilás D = Lilás E = Amarelo claro F = Branco brilhante

Exemplo: system (“color 74”) corresponde ao plano de fundo branco e as letras

vermelhas.

_sleep : Executa uma parada na execução do programa

Estrutura: _sleep(tempo em milissegundos)

-conio

 getch: recebe uma letra do teclado e não mostra na tela. Variável = getch()  gets: recebe um string e não mostra na tela, diferente do scanf essa aceita espaço na hora de pegar uma string, porém está mais sucinto a estouro de memória. gets(variável);

Centro profissionalizante de Camaçari – CPC

Funções : São subprogramas, criados pelo programador, que pode ajudar na clareza

e execução do programa principal. É extremamente importante que as funções sejam

declaradas antes da função principal “main”, pois essa é a primeira a ser executada e as

chamadas acontecem justamente nela, e antes da chamada é preciso que exista, na

programação o programa.

Argumentos:

Argumentos são as entradas que a função recebe. É através dos argumentos que passamos parâmetros para a função. Para retornamos um valor pela função usamos a função return(argumento), o argumento

será o retorno da função.

Constantes: são dados gravados em memória que de forma alguma podemos alterar seu valor. Então, qual a vantagem em ocupar memória com um dado que não podemos mudar? A diferença está em podermos reduzir números grandes ou dados sem muito significado em algo simples, fácil de usar e relembrar. Por exemplo, com uma constante poderemos definir que verdadeiro não será true, mas a palavra " sim ". Outro exemplo: Também podemos definir que o máximo de posições que um vetor vai ter será 1000, então criamos uma constante chamada " max ". Pronto, agora não precisaremos mais nos lembrar que um vetor terá 1000 posições, basta criar o vetor e no tamanho dele indicamos max. Para criarmos uma constante usamos o pré-processador define. Define é um pré-

processador porque todas as constantes devem ser definidas antes do inicio do

programa.

pré-processador comando nome da constante valor

define CONST 1

Exemplo: #define PI 3,

Então toda vez que utilizado a palavra PI será como ter utilizado 3,14.

Inicialização do programa principal:

O programa principal é a primeira rotina a ser executada pelo compilador.

Iniciamos utilizando, o tipo da rotina principal, geralmente int main (void) {.

Definição das varáveis: variáveis são espaços reservados na memoria destinados a

alguns dados. Basicamente temos duas classificações s globais e locais, as variáveis

globais são aquelas que utilizam qualquer subrotina ou função, as locais somente podem

ser utilizadas nas funções a que ela pertence.

Centro profissionalizante de Camaçari – CPC

NOME TIPO SIMBOLO

inteiro int %d real float %f caractere char %c palavra string %s ponteiro - %p

Int: São valores inteiros limitados de -32768 à 32767 e ocupam 16 bits na memória.

float: São valores reais limitados de 3,4 E-38^ à 3,4 E^38 e ocupam 32 bits na memória. Nessa

declaração de variável o valor sempre será mostrado com 6 casas decimais, caso queira-se

reduzir a quantidade de casa decimais usamos entre o símbolo de porcentagem e a letra f

um ponto e a quantidade de casas decimais, exemplo “%.2f” mostrará duas casa decimais.

Char: Armazena um caractere, ou seja, uma letra ocupam 8 bits na memória.

String:é um vetor de caracteres terminado com um caractere nulo. O caractere nulo é um caractere com valor inteiro igual a zero. (O terminador nulo também pode ser escrito usando a convenção de barra invertida do C como sendo '\0'. Embora o assunto vetores seja discutido posteriormente, veremos aqui os fundamentos necessários para que possamos utilizar as strings. Para declarar uma string, podemos usar o seguinte formato geral: char nome_da_string[tamanho];

Isto declara um vetor de caracteres (uma string) com número de posições igual a tamanho. Note que, como temos que reservar um caractere para ser o terminador nulo, temos que declarar o comprimento da string como sendo, no mínimo, um caractere maior que a maior string que 12 pretendemos armazenar. Vamos supor que declaremos uma string de 7 posições e coloquemos a palavra João nela. Teremos: J o a o \0 ... células que são inicializadas são as que contêm os caracteres 'J', 'o', 'a', 'o' e '\0'. Como as strings são vetores de caracteres, para se acessar um determinado caractere de uma string, basta "indexarmos", ou seja, usarmos um índice para acessarmos o caractere desejado dentro da string. Suponha uma string chamada str. Podemos acessar a segunda letra de str da seguinte forma: str[1] = 'a'; Por quê se está acessando a segunda letra e não a primeira? Na linguagem C, o índice começa em zero. Assim, a primeira letra da string sempre estará na posição 0. A segunda letra sempre estará na posição 1 e assim sucessivamente.

Lógica de programação: é parte onde é desenvolvida a programação.

Finalização: Para finalizar uma programação devemos usar ‘}’ fechando o programa

principal.

Centro profissionalizante de Camaçari – CPC

Estes operadores podem ser pré-fixados ou pós- fixados. A diferença é que quando são préfixados eles incrementam e retornam o valor da variável já incrementada. Quando são pós-fixados eles retornam o valor da variável sem o incremento e depois incrementam a variável. Então, em x=23;

y=x++;

teremos, no final, y=23 e x=24.

Operadores Relacionais e Lógicos

Operador Ação < Menor que > Maior que <= Menor ou igual a >= Maior ou igual a == Igual a != Diferente de

É extremamente importante quando for fazer uma comparação de igualdade não colocar apenas um símbolo de igualdade ”=”, pois isso é um erro gravíssimo de programação, uma única igualdade é usada para atribuição de valores e duas igualdades ”==” como comparação.

Operações com valores lógicos

Operador Ação && AND (E) || OR (OU) ! NOT (NÃO)

Modeladores (Casts)

Um modelador é aplicado a uma expressão. Ele força a mesma a ser de um tipo especificado. Sua forma geral é: (tipo)expressão.

Tabela de Precedências do C Esta é a tabela de precedência dos operadores em C. Alguns (poucos) operadores ainda não foram estudados, e serão apresentados em aulas posteriores.

Centro profissionalizante de Camaçari – CPC

**Maior Precedência () [] -> ! ~ ++ --. -(troca de sinal) (cast)

  • / %

<< >> <<= >>= == != & ^ | && || = += -= = /= Menor precedência*

Comentários: Usa-se // quando o comentário é simples, ou seja, apenas naquela linha será feita o comentário e na seguinte já faz parte do código executável. Usa-se /* / quando queremos fazer um comentário em múltiplas linhas, sendo assim inicia-se o comentário com / e para finaliza-lo usamos */ e tudo que estiver entre eles será considerado como comentário pelo compilador. Para finalizar um bloco de programação usamos o ponto e vírgula “;”, na maioria das linhas, exceto as que inicializam instruções.

Vamos testar nossos conhecimentos através de uma programação simples, utilizando os conceitos aprendidos até aqui.

Exercício 1: Deseja-se fazer um programa onde o usuário digite um valor e o programa retorne o quadrado desse número vezes 10. /* Exercício 1 CPC treinamentos Curso: automação industrial Professor: Joedson Leite */

#include //inclusão da biblioteca padrão de entradas e saídas #include // inclusão da biblioteca padrão

int quadrado(int y){ //função quadrado. return(yy); // retorna o valor passado vezes ele. } //finaliza a função quadrado

#define DEZ 10 //define DEZ como uma constante de valor 10.

int main (void){ //inicialização da função principal. int x, res; //cria as variáveis x e res do tipo inteiro.

Centro profissionalizante de Camaçari – CPC

Estruturas de controle de fluxo  Estruturas de decisão:

  • Instrução ( IF ) ‘se’: Nessa instrução é testada uma determinada condição, se a condição for verdadeira executa uma parte da programação, caso não esteja executa outro trecho.

Estrutura: if (teste lógico) { caso verdadeiro } else{ caso falso }

O teste logico pode ser uma comparação, por exemplo, “x<2”, “valor==10”, “nome[0]!=’s’ ”. E neste caso sendo a comparação verdadeira executa o primeiro bloco do if entre as chaves (caso verdadeiro), senão executa o segundo bloco do else (caso falso).

Exemplo 3: deseja-se fazer um programa onde o usuário digite um valor e o programa retorne se o valor é ímpar ou par. Resolução: Para definirmos se um número é par ou ímpar, basta dividimos por 2 se o resto for 0 o número é par, caso o resto for 1 significa que o número é ímpar. Então:

/* Exercício 3 CPC treinamentos Curso: automação industrial Professor: Joedson Leite */

#include //inclusão da biblioteca padrão de entradas e saídas #include // inclusão da biblioteca padrão

int main (void){ //inicialização da função principal. int valor, resp; //cria a variáveis valor do tipo inteiro printf(“Digite o valor”); //informa ao usuário que ele deve digitar o valor. scanf(“%d”,&valor); //atribui o valor digitado à variável valor. resp = valor%2; //Divide o valor digitado por 2 e armazena o resto em resp. if(resp==1){ //compara se a variável resp é igual a 1. printf(“Impar”); //caso resp seja igual a 1 imprime na tela Impar. } //finaliza o primeiro bloco. else{ //caso resp não seja igual a 1. printf(“Par”); //caso resp não seja igual a 1 imprime na tela Par. } //finaliza o segundo bloco.

Centro profissionalizante de Camaçari – CPC

system(“pause”); // aparece na tela a mensagem pressione qualquer tecla para //continuar.

} //finaliza a função principal

Dentro da estrutura podemos fazer cascata com os if’s:

Exemplo 4: Deseja-se fazer um programa onde o usuário digite a idade e o programa retorne a classificação etária: Abaixo de 12 anos (CRIANÇA); Entre 12 e 18 anos (ADOLESCENTE); Entre 19 e 25 anos (JOVEM); Entre 26 e 45 anos (ADULTO) ;Acima de 45 anos (ANCIÃO).

/* Exercício 4 CPC treinamentos Curso: automação industrial Professor: Joedson Leite */

#include //inclusão da biblioteca padrão de entradas e saídas #include // inclusão da biblioteca padrão

int main (void){ //inicialização da função principal. int idade; //cria a variáveis idade do tipo inteiro

printf(“Digite sua idade”); //informa ao usuário que ele deve digitar o valor. scanf(“%d”,&idade); //atribui o valor digitado à variável idade.

if(idade<12){ //Testa idade se menor que 12 printf(“CRIANCA”); //imprime na tela criançã }else if((idade>=12)&&(idade<=18)){ //testa idade se entre 12 e 18 printf(“ADOLESCENTE”); // imprime na tela adolescente } else if((idade>=19)&&(idade<=25)){ //testa idade entre 19 e 25 printf(“JOVEM”); // imprime na tela jovem } else if((idade>=26)&&(idade<=45)){ //testa idade entre 26 e 45 printf(“ADULTO”); // imprime na tela adulto } else{ //caso nenhuma das outras opções seja verdadeira printf(“ANCIAO”); // imprime na tela ancião }

system(“pause”); // aparece na tela a mensagem pressione qualquer tecla para //continuar. } //finaliza a função principal

Centro profissionalizante de Camaçari – CPC

float v1, v2, res; int escolha;

printf(“Digite dois valores”); scanf(“%f %f”, &v1, &v2); // podemos fazer atribuições múltiplas.

printf (“Escolha a opção desejada \n 1 – SOMA \t 3 – MULTIPLICACAO \n 2 – SUBTRACAO \t 4 – DIVISAO”); // apesar de está em duas linhas devemos digitar tudo //em uma só linha. scanf(“%d”,&escolha);

switch(escolha){ case ‘1’: //caso a escolha for 1 res=v1+v2; printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal. break; case ‘2’: //caso a escolha for 2 res=v1-v2; printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal. break; case ‘3’: //caso a escolha for 3 res=v1*v2; printf(“ A soma eh %.0f “,res); // aparece a resposta sem nenhuma casa decimal. break; case ‘4’: //caso a escolha for 4 res=v1/v2; printf(“ A soma eh %.2f “,res); // aparece a resposta com duas casas decimais. break; default: // Caso a nenhum dos casos seja escolhido. printf(“OPCAO INVALIDA”); } system(“pause”); }

Inicialização de variáveis: int x=10; char letra = ‘j’ float vect [6] = { 1.3, 4.5, 2.7, 4.1, 0.0, 100.1 }; int matrx [3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; char str [10] = { 'J', 'o', 'a', 'o', '\0' }; char str [10] = "Joao"; char str_vect [3][10] = { "Joao", "Maria", "Jose" };  Estrutura de repetição (laços):

Centro profissionalizante de Camaçari – CPC

  • Instrução ( FOR ) “para”

É usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop. Estrutura:

for (inicialização; condição; incremento){ bloco repetido } Inicialização é o valor inicial da variável. A condição será o teste lógico que fará a execução permanecer no laço. Incremento é de quanto em quanto o valor inicial será acrescido até atingiro o limite do teste lógico e parar a execução.

Exemplo 6: Deseja-se fazer um programa em que o usuário digite um valor positivo e o programa retorne todos os valores pares de 0 até o valor digitado.

/* Exercício 6 CPC treinamentos Curso: automação industrial Professor: Joedson Leite */

#include #include

int main (void){ int limite, x; printf(“digite um numero positivo”); scanf(“%d”,&limite); for(x=0; x <= limite; x=x+2){ printf(“ %d \n”,x);

} system(“pause”); }

-Instrução ( WHILE ) “enquanto” Essa instrução faz-se um teste, caso o teste seja verdadeiro é executado o laço ao final do laço é feito novamente o teste e repetido enquanto a condição for verdadeira, a partir do momento que se tornar falsa o laço deixará de ser repetido. Estrutura :

while (condição){ bloco do laço }

Centro profissionalizante de Camaçari – CPC

Vetores e matrizes:

Vetores são variáveis que comportam mais de um campo, índices, como vimos em string que é um vetor de caracteres. Declaramos o tipo a variável e o [tamanho]. Exemplo, char nome[20], onde significa a variável ‘nome’ que um vetor com 20 posições válidas de 0 à 19 e a posição 20 recebe o fim de arquivo EOF “\0”. Já as matrizes são um conjunto de vetores na mesma variável, vetor bidimensional, tridimensional... Sendo assim temos que fornecer as informações de mais de uma dimensão, exemplo, int valor [10][20], neste caso à variável “valor” possui 10 linhas e 20 colunas. É muito importante ressaltar que, nesta estrutura, o índice da esquerda indexa as linhas e o da direita indexa as colunas. Quando vamos preencher ou ler uma matriz no C o índice mais à direita varia mais rapidamente que o índice à esquerda.

Ponteiros

O C é altamente dependente dos ponteiros. Para ser um bom programador em C é fundamental que se tenha um bom domínio deles. Por isto, recomendo ao leitor um carinho especial com esta parte do curso que trata deles. Ponteiros são tão importantes na linguagem C que você já os viu e nem percebeu, pois mesmo para se fazer um introdução básica à linguagem C precisa-se deles. Como Funcionam os Ponteiros Os ints guardam inteiros. Os floats guardam números de ponto flutuante. Os chars guardam caracteres. Ponteiros guardam endereços de memória. Quando você anota o endereço de um colega você está criando um ponteiro. O ponteiro é este seu pedaço de papel. Ele tem anotado um endereço. Qual é o sentido disto? Simples. Quando você anota o endereço de um colega, depois você vai usar este endereço para achá-lo. O C funciona assim. Você anota o endereço de algo numa variável ponteiro para depois usar. Estrutura tipo_do_ponteiro *nome_da_variável;

É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar um valor mas sim um endereço para aquele tipo especificado. Para atribuir um valor a um ponteiro recém-criado poderíamos igualá-lo a um valor de memória. Mas, como saber a posição na memória de uma variável do nosso programa? Seria muito difícil saber o endereço de cada variável que usamos, mesmo porque estes endereços são determinados pelo compilador na hora da compilação e realocados na execução. Podemos então deixar que o compilador faça este trabalho por nós. Para saber o endereço de uma variável basta usar o operador &. Veja o exemplo:

int count=10; int *pt; pt=&count; exemplo com ponteiro: #include int main (void){

Centro profissionalizante de Camaçari – CPC

int num,valor; int p; num=55; p=# / Pega o endereço de num / valor=p; // Valor e igualado a num de uma maneira indireta printf ("\n\n%d\n",valor); printf ("Endereco para onde o ponteiro aponta: %p\n",p); printf ("Valor da variavel apontada: %d\n",*p); system(“pause”); } OBS:. No exemplo, o código %p usado na função printf() indica à função que ela deve imprimir um endereço.

Abrindo e Fechando um Arquivo

O sistema de entrada e saída do ANSI C é composto por uma série de funções, cujos protótipos estão reunidos em stdio.h. Todas estas funções trabalham com o conceito de "ponteiro de arquivo". Este não é um tipo propriamente dito, mas uma definição usando o comando typedef. Esta definição também está no arquivo stdio.h. Podemos declarar um ponteiro de arquivo da seguinte maneira: FILE *p; p será então um ponteiro para um arquivo. É usando este tipo de ponteiro que vamos poder manipular arquivos no C.

  • fopen : Esta é a função de abertura de arquivos. Estrutura: FILE *fopen (char *nome_do_arquivo,char *modo);

O nome_do_arquivo determina qual arquivo deverá ser aberto. Este nome deve ser válido no sistema operacional que estiver sendo utilizado. O modo de abertura diz à função fopen() que tipo de uso você vai fazer do arquivo. A tabela abaixo mostra os valores de modo válidos:

Tipo Significado “r ” Abre um arquivo texto para leitura. O arquivo deve existir antes de ser aberto. “w ” Abrir um arquivo texto para gravação. Se o arquivo não existir, ele será criado. Se já existir, o conteúdo anterior será destruído. “a ” Abrir um arquivo texto para gravação. Os dados serão adicionados no fim do arquivo ("append"), se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente. “r+ ” Abre um arquivo texto para leitura e gravação. O arquivo deve existir e pode ser modificado. “ w+” Cria um arquivo texto para leitura e gravação. Se o arquivo existir, o conteúdo anterior será destruído. Se não existir, será criado. “a+ ” Abre um arquivo texto para gravação e leitura. Os dados serão adicionados no fim do arquivo se ele já existir, ou um novo arquivo será criado, no caso de arquivo não existente anteriormente.

Centro profissionalizante de Camaçari – CPC

caracteres para serem gravados em um arquivo, estes caracteres são armazenados temporariamente em uma área de memória (o "buffer") em vez de serem escritos em disco imediatamente. Quando o "buffer" estiver cheio, seu conteúdo é escrito no disco de uma vez. A razão para se fazer isto tem a ver com a eficiência nas leituras e gravações de arquivos. Se, para cada caractere que fossemos gravar, tivéssemos que posicionar a cabeça de gravação em um ponto específico do disco, apenas para gravar aquele caractere, as gravações seriam muito lentas. Assim estas gravações só serão efetuadas quando houver um volume razoável de informações a serem gravadas ou quando o arquivo for fechado. A função exit() fecha todos os arquivos que um programa tiver aberto.

Lendo e Escrevendo Caracteres em Arquivos

  • putc : é a função de escrita de arquivo. Seu protótipo é: int putc (int ch,FILE *fp); Escreve um caractere no arquivo. O programa a seguir lê uma string do teclado e escreve-a, caractere por caractere em um arquivo em disco (o arquivo arquivo.txt, que será aberto no diretório corrente).

#include #include

int main(){ FILE fp; char string[100]; int i; fp = fopen("arquivo.txt","w"); _/ Arquivo ASCII, para escrita /_ if(!fp){ printf( "Erro na abertura do arquivo"); exit(0); } printf("Entre com a string a ser gravada no arquivo:"); gets(string); for(i=0; string[i]; i++) putc(string[i], fp); _/ Grava a string, caractere a caractere */_ fclose(fp); system(“pause”); }

Depois de executar este programa, verifique o conteúdo do arquivo arquivo.txt (você pode usar qualquer editor de textos). Você verá que a string que você digitou está armazenada nele.

  • getc Retorna um caractere lido do arquivo. Estrutura : int getc (FILE *fp);

Centro profissionalizante de Camaçari – CPC

- feof EOF ("End of file") indica o fim de um arquivo. Às vezes, é necessário verificar se um arquivo chegou ao fim. Para isto podemos usar a função feof(). Ela retorna não-zero se o arquivo chegou ao EOF, caso contrário retorna zero. Estrutura int feof (FILE *fp);

Outra forma de se verificar se o final do arquivo foi atingido é comparar o caractere lido por getc com EOF. O programa a seguir abre um arquivo já existente e o lê, caractere por caractere, até que o final do arquivo seja atingido. Os caracteres lidos são apresentados na tela:

#include #include

int main(){ FILE fp; char c; fp = fopen("arquivo.txt","r"); / Arquivo ASCII, para leitura / if(!fp){ printf( "Erro na abertura do arquivo"); exit(0); } while((c = getc(fp) ) != EOF) / Enquanto não chegar ao final do arquivo / printf("%c", c); / imprime o caracter lido */ fclose(fp); system(“pause”); }

A seguir é apresentado um programa onde várias operações com arquivos são realizadas, usando as funções vistas nesta página. Primeiro o arquivo é aberto para a escrita, e imprime-se algo nele. Em seguida, o arquivo é fechado e novamente aberto para a leitura. Verifique o exemplo.

#include #include #include

void main(){ FILE *p; char c, str[30], frase[80] = "Este e um arquivo chamado: ";