Apostila - Programa--o C++
169 pág.

Apostila - Programa--o C++


DisciplinaAnálise Textual9.565 materiais293.977 seguidores
Pré-visualização50 páginas
Da mesma forma foi criada a função fscanf(), que como scanf(), lê um dado 
formatado. A diferença consiste que fscanf() lê um dado de um arquivo e recebe um ponteiro 
para FILE como primeiro argumento. 
Exemplo : 
#include <stdio.h> 
FILE *fptr; 
int size = 0; 
fptr = fopen(\u201cdados.txt\u201d, \u201crw\u201d); 
fscanf(fptr, \u201c%d\u201d, &size); 
fprintf(fptr, \u201c%s %d %f\u201d, \u201cCasa Nova\u201d, 12, 13.45); 
fclose(fptr); 
 
Curso de Linguagem Computacional C/C++ 
________________________________________________________________________________________________ 
Sistemas Industriais Inteligentes \u2013 DAS \u2013 CTC \u2013 UFSC 87 
12.8 Leitura e escrita de valores binários 
Quando desejamos operar com arquivos no modo binário, basta adicionar o caracter \u2018b\u2019 no 
I/O Mode da função open(), como apresentado anteriormente. As funções apresentadas 
anteriormente podem ser usadas para ler e escrever no modo binário, entretanto apresentaremos 
aqui duas novas funções que facilitam este processo: fwrite() e fread(). Estas funções são 
empregadas para escrever/ler os dados armazenados em um bloco de memória (um buffer de 
memória) em um arquivo. Aplicações típicas e na escrita/leitura de dados complexos como matrizes 
e estruturas. 
A função fwrite() toma 4 argumentos. O primeiro é um ponteiro do tipo void que aponta 
para a localização na memória do dado a ser gravado. O segundo argumento é um número inteiro 
que indica o tamanho do tipo de dado a ser gravado. Normalmente, pode-se utilizar o operador 
sizeof() para se obter este valor. O terceiro argumento é um número inteiro que informa a 
fwrite() quantos itens do mesmo tipo serão gravados. O quarto argumento é um ponteiro para a 
estrutura FILE do arquivo onde queremos gravar. 
A função fread() toma também 4 argumentos. O primeiro é um ponteiro void para a 
localização da memória onde serão armazenados os dados lidos. O segundo indica também a 
quantidade de bytes do tipo de dado a ser lido. O terceiro argumento informa a quantidade de itens a 
serem lidos a cada chamada, e o quarto argumento é um ponteiro para a estrutura FILE do arquivo a 
ser lido. 
A função fread() retorna o número de itens lidos. Normalmente este número deve ser 
igual ao terceiro argumento. Se for encontrado o fim do arquivo, o número será menor que o valor 
do terceiro argumento, podendo ser zero caso nenhum dado tenha sido lido. 
As funções fread()e fwrite() trabalham com qualquer tipo de dado, incluindo 
matrizes e estruturas, e armazenam números em formato binário. 
 
Escrita: 
fileptr = fopen(filename, \u201cwb\u201d); 
fwrite(&dados, sizeof(dados),1 ,fileptr); 
Leitura: 
fileptr = fopen(filename, \u201crb\u201d); 
fread(&dados,sizeof(dados),1 ,fileptr); 
Se &quot;filename&quot; for inicializado com \u201cprn\u201d, os dados são enviados a impressora. 
Exemplo: 
fileptr=fopen(filename,\u201drb\u201d); 
while(!feof(fileptr)) 
{ 
 fread(&dados, sizeof(dados),1,fileptr); 
} 
fclose(fileptr); 
12.9 Exercícios 
 
12.1 Escreva um programa que imprima um arquivo na tela de 20 em 20 linhas. O arquivo 
de entrada deve ser fornecido na linha de comando. A cada impressão de 20 linhas, o programa 
aguarda o pressionamento de uma tecla. 
 
Curso de Linguagem Computacional C/C++ 
________________________________________________________________________________________________ 
Sistemas Industriais Inteligentes \u2013 DAS \u2013 CTC \u2013 UFSC 88 
12.2 Escreva um programa que imprima o tamanho de um arquivo em bytes. O nome do 
arquivo deve ser fornecido na linha de comando. 
12.3 Escreva um programa que criptografa um arquivo usando o operador de complemento 
de bit-a-bit (~). Quando o programa é executado para um arquivo já criptografado, o arquivo é 
recomposto e volta ao original. 
 
12.4 Refaça o problema 11.5, agora salvando a lista de livros em um arquivo. Permita que o 
usuário possa retirar um livro desta lista, apagando-o do arquivo, ou adicionar um livro em uma 
posição determinada na lista, reescrendo a lista no arquivo. Utilize o modo texto para a manipulação 
de arquivos. 
 
12.5 Como o exemplo anterior, refaça o problema 11.6 mas agora utilizando o modo binário. 
 
 
 
Curso de Linguagem Computacional C/C++ 
________________________________________________________________________________________________ 
Sistemas Industriais Inteligentes \u2013 DAS \u2013 CTC \u2013 UFSC 89 
13 Programação em C++ 
A linguagem C foi e continua sendo uma das linguagens mais importantes na área da 
informática. Apesar do seu ótimo desempenho em termos de programas otimizados, velozes e 
portáteis sofreu duras críticas com relação à qualidade do código gerado considerando-se outros 
aspectos de relevância da engenharia de software como: legibilidade do código, sua reusabilidade e 
facilidade de manutenção. 
Um programa de computador sempre busca representar uma dada realidade (mundo real ou 
modelo abstrato: matemático) através de uma linguagem de programação. Quando criamos qualquer 
programa simples de computador, estamos na verdade criando um modelo da realidade e usando 
este modelo para analisar e estudar esta realidade. O nível de detalhe com que criamos um 
programa depende diretamente do nível de detalhe necessário para modelar o ambiente de acordo 
com as necessidades impostas pelo usuário. 
Modelar um determinado ambiente complexo utilizando-se somente as estruturas e 
funcionalidades disponíveis por C (linguagem estrutural) é uma tarefa árdua. Por esta razão, alguns 
programadores em C não conseguem muitas vezes entender determinados códigos em C, pois não 
conseguem entender o modelo da realidade gerado por este programa ou a sua estrutura. 
Neste sentido, criou-se uma forma totalmente nova e revolucionária para se modelar e 
simular um ambiente dado (mundo real ou sistema abstrato): a Orientação a Objetos. A Orientação 
a Objetos busca modelar um ambiente utilizando-se dos próprios elementos presentes neste 
ambiente, ou seja, os objetos. Todo ambiente pode ser modelado e simulado a partir de uma 
descrição dos objetos que o compõe e das relações entre eles. 
Por exemplo, suponha que você esteja criando um programa para permitir que um arquiteto 
crie um modelo gráfico de uma sala-de-estar e apresente este modelo ao seu cliente. Empregando a 
metodologia de Orientação a Objetos, primeiramente o arquiteto terá que identificar os objetos que 
compõem a sala-de-estar que, considerando o nível de abstração do seu modelo, devem ser 
descritos. Neste caso, podemos facilmente listar alguns objetos que podem ser definidos: janela, 
porta, parede, sofá, mesa, quadro, tapete, vaso de flores, etc. 
A quantidade de objetos e o nível de detalhe da sua descrição dependerão necessariamente 
do nível de abstração do modelo, ou seja, daquilo que o arquiteto considera importante que esteja no 
modelo. Por exemplo, representar o objeto \u201cmesa\u201d pode significar para um marceneiro definir a sua 
geometria, o tipo de material, o tipo de verniz requerido e o tipo do seu acabamento, enquanto que 
para um arquiteto significa definir a textura da mesa, o tom da sua cor, o seu custo, a durabilidade 
desta, etc. Por isso, é importante ter em mente, as necessidades do seu cliente antes de criar um 
modelo super detalhado e ineficiente. 
Após a definição dos objetos que compõem um dado ambiente, precisamos definir as 
relações entre estes. Por exemplo, precisamos definir que um objeto \u201cporta\u201d e um objeto \u201cjanela\u201d 
estão posicionados sob a mesma parede, ou seja, são propriedades de um terceiro objeto chamado 
\u201cparede\u201d. Assim, como outro objeto \u201cparede\u201d pode não conter uma \u201cjanela\u201d mas um objeto do tipo 
\u201cquadro\u201d. Podemos até criar um objeto chamado \u201csala\u201d que contém todos os objetos presentes na 
sala descrita pelo arquiteto e permitir que este arquiteto venha criar futuramente outros objetos 
como \u201ccozinha\u201d ou \u201cquarto\u201d e possa, assim, modelar toda uma residência. 
Com este breve esclarecimento já apontamos algumas das propriedades vantajosas 
fornecidas pela programação Orientada a Objetos. A linguagem C++ foi criada a partir da 
linguagem C, acrescentando novas estruturas e mecanismos