Commit 88659332 authored by João Denis Rodrigues's avatar João Denis Rodrigues

Revisão dos capitulos 12 e 16

parent c2c8432f
......@@ -19,7 +19,10 @@ FILE *fp;
\section{Funções para manipulação de arquivos}
\begin{table}
Veja a lista das funções mais comuns na tabela \ref{tab:mais_usada}. Todas as funções apresentadas estão na biblioteca
stdio.h.
\begin{table}[htb]
\centering
\begin{tabular}{|l|l|}
\hline Função & Operação \\
......@@ -38,11 +41,10 @@ FILE *fp;
\hline remove() & Apaga o arquivo \\
\hline
\end{tabular}
\caption{Funções mais usadas}
\caption{Funções mais usadas}\label{tab:mais_usada}
\end{table}
Veja a lista das funções mais comuns na tabela ??. Todas as funções apresentadas estão na biblioteca
stdio.h.
\vspace{5cm}
\section{EOF}
......@@ -59,9 +61,9 @@ FILE * fopen(char *nome_do_arquivo, char *modo);
\end{lstlisting}
Esta função abre um arquivo e retorna um ponteiro de arquivo. O primeiro argumento é o nome do
arquivo. O segundo é uma string de formatos, listados na tabela ??.
arquivo. O segundo é uma string de formatos, listados na tabela \ref{tab:modo_acesso}.
\begin{table}
\begin{table}[htb]
\centering
\begin{tabular}{|l|l|}
\hline Modo & Significado \\
......@@ -85,9 +87,10 @@ arquivo. O segundo é uma string de formatos, listados na tabela ??.
\hline "a+t" & Acrescenta dados ou cria um arquivo texto para leitura/escrita \\
\hline
\end{tabular}
\caption{Modos de acesso a arquivo}
\caption{Modos de acesso a arquivo}\label{tab:modo_acesso}
\end{table}
\vspace{4.5cm}
Exemplo:
\begin{lstlisting}
......@@ -150,16 +153,18 @@ Exemplo:
\subsection{Exercícios}
\label{page_exer1}
\label{subsec:exer1}
1) Escreva um programa que leia palavras digitadas pelo usuário enquanto ele não digitar ``fim'' e que
escreva estas strings em um arquivo chamado strings.dat.
O programa deverá gravar o final de cada string, ou seja, o caracter `\\0'.
O programa deverá gravar o final de cada string, ou seja, o caracter `\textbackslash 0'.
2) Escreva um programa que abra o arquivo strings.dat criado pelo programa do exercício anterior e
imprima as strings armazenadas na tela.
A cada vez que for encontrado um final de string, o programa deverá quebrar a linha (imprimir o
caracter `\\n').
caracter `\textbackslash n').
\section{Função feof()}
......@@ -245,11 +250,11 @@ A função fgets lê uma string do arquivo fp especificado. A função fgets lê
caractere de nova linha seja lido ou tamanho-1 caracteres sejam lidos. Se uma nova linha é lida, o caracter
nova linha será adicionado ao final da string str.
Toda string lida por fgets é terminada pelo caracter nulo \\0.
Toda string lida por fgets é terminada pelo caracter nulo `\textbackslash 0'.
\subsection{Exercícios}
Resolva os dois exercícios da seção ??, na página ??, mas agora utilizando as funções fgets e fputs ao
Resolva os dois exercícios da seção \ref{subsec:exer1}, na página \ref{page_exer1}, mas agora utilizando as funções fgets e fputs ao
invés de getc e putc.
Nesse caso, não se preocupe em gravar o caracter nulo.
......@@ -303,7 +308,7 @@ Exemplo
\subsection{Exercícios}
1) Escreva um programa que armazena dados digitados pelo usuário em uma estrutura cliente e grava
êsta estrutura em um arquivo enquanto o campo código não for 0.
esta estrutura em um arquivo enquanto o campo código não for 0.
\begin{lstlisting}
struct cliente {
......@@ -340,7 +345,7 @@ Onde fp é um ponteiro para um arquivo no qual deseja-se ler ou escrever.
Apresente um código utilizando fprintf e fscanf ao invés de fwrite e fread que seja equivalente ao código
abaixo:
\vspace{50 mm}
\lstinputlisting{exemplos/arquivos_exercicio1.c}
\section{Função fseek()}
......@@ -356,12 +361,12 @@ int fseek (FILE *fp, long numbytes, int origem);
Onde fp é um ponteiro para um arquivo, numbytes, é o número de bytes, a partir da origem, necessários
para se conseguir a posição corrente e origem é uma das constantes definidas em stdio.h listadas na tabela
??.
\ref{tab:const_posi}.
Observe que, através da função fseek, é possível posicionar a leitura/escrita para o início do arquivo
(fseek(fp, 0, SEEK.SET)), tornando-a equivalente à função rewind.
(fseek(fp, 0, SEEK\_SET)), tornando-a equivalente à função rewind.
\begin{table}
\begin{table}[htb]
\centering
\begin{tabular}{|l|l|l|}
\hline Origem & Nome da Constante & Valor \\
......@@ -370,7 +375,7 @@ Observe que, através da função fseek, é possível posicionar a leitura/escri
\hline Fim do arquivo & SEEK\_END & 2 \\
\hline
\end{tabular}
\caption{Constantes de posição}
\caption{Constantes de posição}\label{tab:const_posi}
\end{table}
Se a função fseek retornar zero, indica que houve sucesso na chamada à função fseek. Um valor
......@@ -382,11 +387,11 @@ FILE *fp;
char ch;
if ((fp=fopen("teste", "rb")) == NULL){
printf ("o arquivo não pode ser aberto"n");
printf ("o arquivo não pode ser aberto\n");
exit (1);
}
fseek(fp, 234, SEEK SET); // pode-se trocar o SEEK SET por 0
fseek(fp, 234, SEEK_SET); // pode-se trocar o SEEK SET por 0
ch = getc(fp); // lê o 235o caracter
// ...
......@@ -418,10 +423,10 @@ O funcionamento do programa deverá ser o seguinte:
número de soma da questão (que deverá ser sempre uma potência de 2).
\end{itemize}
A matriz texto opcao é uma matriz bidimensional, que será indexada por 0..n para determinar o
A matriz texto\_opcao é uma matriz bidimensional, que será indexada por 0..n para determinar o
número da opção, e para cada opção deverão ser alocados 128 bytes para entrar com a string.
Por final, o programa deve requisitar que seja digitado o valor da soma correta.
Por final, o programa deve requisitar que seja digitado o valor da soma\_correta.
Depois de terminada a entrada de dados, o programa deverá armazenar a estrutura em um arquivo
chamado ``questoes.dat'' e perguntará ao usuário se deseja gravar mais questões.
......
......@@ -8,7 +8,7 @@
\section{O que é uma operação bit-a-bit}
Uma operação bit-a-bit é, basicamente, uma operaç~ao lógica aplicada sobre cada bit de um número
Uma operação bit-a-bit é, basicamente, uma operação lógica aplicada sobre cada bit de um número
inteiro.
Entende-se por operações lógicas AND, OR, NOT, XOR e SHIFT's.
......@@ -61,15 +61,6 @@ basta iniciar a representação do número com 0x (zero x).
Exemplo:
\begin{table}
\centering
\begin{tabular}{lrl|l|l}
0 \verb\&\ 0 = 0 & Ex: & Dec. & Hex. & Binário \\
0 \verb\&\ 1 = 0 & & 31503 & 0x7b0f & 0111 1011 0000 1111 \\
1 \verb\&\ 0 = 0 & \verb|&| & 16277 & 0x3f95 & 0011 1111 1001 0101 \\
1 \verb\&\ 1 = 1 & & 15109 & 0x3b05 & 0011 1011 0000 0101 \\
\end{tabular}
\end{table}
\begin{lstlisting}
......@@ -101,7 +92,18 @@ linguagem C permite que usemos o operador errado em muitos casos sem apontar o e
\section{Operador \& (AND)}
O operador \verb\&\ executa uma operação E (AND) lógica em cada um dos bits dos operandos. Observe o
quadro na figura ??.
quadro na figura \ref{tab:and}.
\begin{table}[htb]
\centering
\begin{tabular}{lrl|l|l}
0 \verb\&\ 0 = 0 & Ex: & Dec. & Hex. & Binário \\
0 \verb\&\ 1 = 0 & & 31503 & 0x7b0f & 0111 1011 0000 1111 \\
1 \verb\&\ 0 = 0 & \verb|&| & 16277 & 0x3f95 & 0011 1111 1001 0101 \\
1 \verb\&\ 1 = 1 & & 15109 & 0x3b05 & 0011 1011 0000 0101 \\
\end{tabular}
\caption{Regras do Operador \&}\label{tab:and}
\end{table}
À esquerda temos a tabela-verdade para o operador \verb\&\ : o bit de resultado é 1 somente quando ambos
os bits dos operandos forem 1.
......@@ -163,10 +165,10 @@ terá o 3º bit com o valor 1.
O operador \verb\^\ executa uma operação OU EXCLUSIVO (XOR) entre cada um dos bits dos operandos.
Genericamente, dados n operandos, o resultado de uma operação XOR entre os n operandos será 1 se, e
somente se, o número de operandos que assumem valor 1 é impar.
\begin{table}
\\
\begin{table}[htb]
\centering
\begin{tabular}{||l||rlll}
\begin{tabular}{lrl|l|l}
0 \verb\^\ 0 = 0 & Ex: & Dec. & Hex. & Binário \\
0 \verb\^\ 1 = 1 & & 31503 & 0x7b0f & 0111 1011 0000 1111 \\
1 \verb\^\ 0 = 1 & \verb\^\ & 16277 & 0x3f95 & 0011 1111 1001 0101 \\
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment