Commit 29fd53d1 authored by Jomaro Rodrigues's avatar Jomaro Rodrigues

Adicionado todo conteudo até o capitulo 6

parent 73cbaa28
\relax
\catcode `"\active
\select@language{brazil}
\@writefile{toc}{\select@language{brazil}}
\@writefile{lof}{\select@language{brazil}}
\@writefile{lot}{\select@language{brazil}}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Hist\IeC {\'o}rico}{1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Conceitos b\IeC {\'a}sicos}{3}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Estrutura b\IeC {\'a}sica de um programa em C}{3}}
\@writefile{lol}{\contentsline {lstlisting}{exemplos/estrutura.c}{3}}
\@writefile{lol}{\contentsline {lstlisting}{exemplos/estrutura2.c}{4}}
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Vari\IeC {\'a}veis}{4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Nomes de Vari\IeC {\'a}veis}{4}}
\@writefile{lot}{\contentsline {table}{\numberline {2.1}{\ignorespaces Tipos de dados num\IeC {\'e}ricos em C.}}{5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Tipos de Vari\IeC {\'a}veis}{5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.3}Declara\IeC {\c c}\IeC {\~a}o/Inicializa\IeC {\c c}\IeC {\~a}o}{5}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Constantes}{6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}Literais}{6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}Simb\IeC {\'o}licas}{6}}
\@writefile{lol}{\contentsline {lstlisting}{exemplos/constantes.c}{6}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.3}Incluindo bibliotecas}{7}}
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Exerc\IeC {\'\i }cios}{7}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Operadores}{9}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Operador de Atribui\IeC {\c c}\IeC {\~a}o}{9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Operadores Matem\IeC {\'a}ticos}{9}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Un\IeC {\'a}rios}{9}}
\@writefile{lot}{\contentsline {table}{\numberline {3.1}{\ignorespaces Operadores bin\IeC {\'a}rios}}{11}}
\@writefile{lot}{\contentsline {table}{\numberline {3.2}{\ignorespaces Operadores de atribui\IeC {\c c}\IeC {\~a}o compostos}}{11}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Bin\IeC {\'a}rios}{11}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Atribui\IeC {\c c}\IeC {\~a}o Composta}{11}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Operadores Relacionais}{11}}
\@writefile{toc}{\contentsline {section}{\numberline {3.4}Operadores L\IeC {\'o}gicos}{12}}
\@writefile{toc}{\contentsline {section}{\numberline {3.5}Operador Condicional}{12}}
\@writefile{toc}{\contentsline {section}{\numberline {3.6}Exerc\IeC {\'\i }cios}{12}}
This diff is collapsed.
......@@ -14,23 +14,92 @@
\usepackage{verbatim}
\lstset{language=C}
\usepackage{amsmath, amssymb}
\usepackage{textcomp}
\usepackage{lmodern}
\usepackage{color}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mygray}{rgb}{0.5,0.5,0.5}
\definecolor{mymauve}{rgb}{0.58,0,0.82}
\lstset{ %
backgroundcolor=\color{white},
% choose the background color; you must add
%\usepackage{color} or \usepackage{xcolor}
basicstyle=\scriptsize,
% the size of the fonts that are used for the code
breakatwhitespace=false,
% sets if automatic breaks should only happen at whitespace
breaklines=true,
% sets automatic line breaking
captionpos=b,
% sets the caption-position to bottom
commentstyle=\color{mygreen},
% comment style
deletekeywords={...},
% if you want to delete keywords from the given language
escapeinside={\%*}{*)},
% if you want to add LaTeX within your code
extendedchars=true,
% lets you use non-ASCII characters; for 8-bits encodings only,
% does not work with UTF-8
frame=single,
% adds a frame around the code
keepspaces=true,
% keeps spaces in text, useful for keeping indentation of code (possibly
% needs columns=flexible)
keywordstyle=\color{blue},
% keyword style
language=C,
% the language of the code
otherkeywords={*,...},
% if you want to add more keywords to the set
numbers=left,
% where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt,
% how far the line-numbers are from the code
numberstyle=\tiny\color{mygray},
% the style that is used for the line-numbers
rulecolor=\color{black},
% if not set, the frame-color may be changed on line-breaks within
% not-black text (e.g. comments (green here))
showspaces=false,
% show spaces everywhere adding particular underscores; it overrides
% 'showstringspaces'
showstringspaces=false,
% underline spaces within strings only
showtabs=false,
% show tabs within strings adding particular underscores
stepnumber=1,
% the step between two line-numbers. If it's 1, each line will be
% numbered
stringstyle=\color{mymauve},
% string literal style
tabsize=4,
% sets default tabsize to 2 spaces
title=\lstname
% show the filename of files included with
%\lstinputlisting; also try caption instead of title
}
\lstset{literate=
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{}{{\EUR}}1 {£}{{\pounds}}1
{ã}{{\~a}}1 {õ}{{\~o}}1 {ç}{{\,c}}1
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{}{{\EUR}}1 {£}{{\pounds}}1
{ã}{{\~a}}1 {õ}{{\~o}}1 {ç}{{\,c}}1
}
......@@ -65,9 +134,14 @@
\subfile{operadores.tex}
\subfile{io.tex}
\subfile{condicao_repeticao.tex}
\subfile{controle_fluxo.tex}
\backmatter
\end{document}
\ No newline at end of file
\end{document}
\select@language {brazil}
\contentsline {chapter}{\numberline {1}Hist\IeC {\'o}rico}{1}
\contentsline {chapter}{\numberline {2}Conceitos b\IeC {\'a}sicos}{3}
\contentsline {section}{\numberline {2.1}Estrutura b\IeC {\'a}sica de um programa em C}{3}
\contentsline {section}{\numberline {2.2}Vari\IeC {\'a}veis}{4}
\contentsline {subsection}{\numberline {2.2.1}Nomes de Vari\IeC {\'a}veis}{4}
\contentsline {subsection}{\numberline {2.2.2}Tipos de Vari\IeC {\'a}veis}{5}
\contentsline {subsection}{\numberline {2.2.3}Declara\IeC {\c c}\IeC {\~a}o/Inicializa\IeC {\c c}\IeC {\~a}o}{5}
\contentsline {section}{\numberline {2.3}Constantes}{6}
\contentsline {subsection}{\numberline {2.3.1}Literais}{6}
\contentsline {subsection}{\numberline {2.3.2}Simb\IeC {\'o}licas}{6}
\contentsline {subsection}{\numberline {2.3.3}Incluindo bibliotecas}{7}
\contentsline {section}{\numberline {2.4}Exerc\IeC {\'\i }cios}{7}
\contentsline {chapter}{\numberline {3}Operadores}{9}
\contentsline {section}{\numberline {3.1}Operador de Atribui\IeC {\c c}\IeC {\~a}o}{9}
\contentsline {subsection}{\numberline {3.1.1}Operadores Matem\IeC {\'a}ticos}{9}
\contentsline {subsection}{\numberline {3.1.2}Un\IeC {\'a}rios}{9}
\contentsline {subsection}{\numberline {3.1.3}Bin\IeC {\'a}rios}{11}
\contentsline {section}{\numberline {3.2}Atribui\IeC {\c c}\IeC {\~a}o Composta}{11}
\contentsline {section}{\numberline {3.3}Operadores Relacionais}{11}
\contentsline {section}{\numberline {3.4}Operadores L\IeC {\'o}gicos}{12}
\contentsline {section}{\numberline {3.5}Operador Condicional}{12}
\contentsline {section}{\numberline {3.6}Exerc\IeC {\'\i }cios}{12}
......@@ -2,5 +2,296 @@
\begin{document}
\chapter{estrutura de condição e loops}
\section{Formatos}
A instrução if avalia uma expressão e conduz a execução do programa dependendo
do resultado obtido.
Ela utiliza os seguintes formatos:
\begin{itemize}
\item Formato 1:
\begin{lstlisting}
if (expressão)
instrução1;
próxima instrução;
\end{lstlisting}
Quando a expressão é verdadeira, a instrução1 é executada. Quando a expressão
é falsa, a instrução1
não é executada. Em ambos os casos, a próxima instrução é executada.
\item Formato 2:
\begin{lstlisting}
if (expressão)
instrução1;
else
instrução2;
próxima instrução;
\end{lstlisting}
Quando a expressão é verdadeira, a instrução1 é executada e a instrução2
não. Quando a expressão é falsa, a instrução1 não é executada e a instrução2
é. Em ambos os casos, a próxima instrução é executada.
\item Formato 3:
\begin{lstlisting}
if (expressão1)
instrução1;
else if (expressão2)
instrução2;
else
instrução3;
próxima instrução;
\end{lstlisting}
este formato utiliza uma instrução if aninhada.
Se a expressão1 for verdadeira, a instrução1 será executada;
caso contrário, a expressão2 será avaliada.
Se esta for verdadeira, a instrução2 será executada, caso contrário,
a instrução3 será executada.
Em todos os casos, a próxima instrução é executada.
\end{itemize}
Uma instrução if pode controlar a execução de múltiplas instruções através de
uma instrução composta, ou bloco. Um bloco é um conjunto de uma ou mais
instruções delimitadas por chaves. Por exemplo:
\begin{lstlisting}
if (expressao)
{
instrucao1;
instrucao2;
...
instrucaoN;
}
\end{lstlisting}
\begin{lstlisting}
/* Demonstra o uso da instrucao if */
#include <stdio.h>
void main()
{
int x = 10, y = 7;
if (x > y)
{
printf("x e maior que y\n");
printf("O valor de x e %d\n", x);
}
else if (x < y)
{
printf("y e maior que x\n");
printf("O valor de y e %d\n",y);
}
else
printf("x e igual a y");
}
\end{lstlisting}
A saída será:
\begin{verbatim}
x é maior que y
O valor de x é 10
\end{verbatim}
\section*{Exercício}
Faça um programa em C que, dadas as três notas e o número de matrícula de dois
alunos, calcule e imprima a média e o estado de cada aluno conforme a tabela
abaixo:
\begin{table*}
\centering
\begin{tabular}{|l|l|}
\hline Média & Estado \\
\hline < 40 & Reprovado \\
\hline < 70 & Exame Final \\
\hline >= 70 & Aprovado \\
\hline
\end{tabular}
\end{table*}
Feito isto, informe o número de matrícula do aluno com maior e menor média,
respectivamente.
\section{Instrução for}
A instrução for é um ``loop'' que permite repetir um determinado número de
vezes a execução de um bloco contendo uma ou mais instruções. Ela tem a
seguinte estrutura:
\begin{lstlisting}
for(inicial; condição; incremento)
{
instruções;
}
\end{lstlisting}
Neste caso inicial, condição e incremento são expressões válidas em C. Quando
uma instrução for é encontrada durante a execução de um programa, os seguintes
eventos ocorrem:
\begin{enumerate}
\item A expressão inicial é avaliada. Em geral, inicial é uma instrução de
atribuição que inicializa uma variável com um determinado valor.
\item A expressão condição é avaliada. Tipicamente, condição é uma
expressão relacional.
\item Se condição for falsa (ou seja, igual a zero), a instrução for
termina a execução e passa para a instrução seguinte.
\item Se condição for verdadeira (ou seja, não zero), as instruções do for
são executadas.
\item A expressão incremento é avaliada e a execuç~ao volta `a etapa 2.
\end{enumerate}
\begin{lstlisting}
/* Exemplo que demonstra o uso da instrucao for */
#include <stdio.h>
void main ()
{
int contagem;
/* Imprime na tela os numeros de 1 a 10 */
for(contagem = 1; contagem != 10; contagem++)
printf("%d ", contagem);
}
\end{lstlisting}
A saída será:
\begin{verbatim}
1 2 3 4 5 6 7 8 9 10
\end{verbatim}
\section{Instrução while}
A instrução while é um ``loop'' que executa um bloco de instru,cões enquanto
determinada condição permanecer verdadeira. A instrução while utiliza o
seguinte formato:
\begin{lstlisting}
while( condição )
{
instruções;
}
\end{lstlisting}
A condição é qualquer expressão válida em C. Quando a execução do programa
chega a uma instrução while, os seguintes eventos ocorrem:
\begin{enumerate}
\item A expressão condição é avaliada.
\item Se condição for falsa (ou seja, zero), a instrução while é terminada
e a execução passa para a primeira instrução subsequente.
\item Se condição for verdadeira (ou seja, diferente de zero), as
instruções do while são executadas e a execução volta à etapa 1.
\end{enumerate}
\begin{lstlisting}
/* Demonstra o uso da instrucao while */
#include <stdio.h>
void main ()
{
int contagem = 1;
/* Imprime na tela os numeros de 1 a 10 */
while ( contagem != 10 )
{
printf(" %d", contagem);
contagem++;
}
}
\end{lstlisting}
A saída será:
\begin{verbatim}
1 2 3 4 5 6 7 8 9 10
\end{verbatim}
\section{Instrução do...while}
A terceira estrutura de ``loop'' em C é o ``loop'' do...while, que executa um
bloco de instruções enquanto uma determinada condição for verdadeira.
Ao contrário do que fazem os ``loops'' for e while, o ``loop'' do...while testa
a condição no final do ``loop'' e não no início. Ele usa a seguinte estrutura:
\begin{lstlisting}
do {
instruções;
} while (condição);
\end{lstlisting}
No caso, condição é qualquer instrução válida em C. Quando a execução do
programa atinge uma instrução do...while, os seguintes eventos ocorrem:
\begin{itemize}
\item São executadas as instruções do ``loop''.
\item Condição é avaliada. Se for verdadeira, a execução volta ao passo 1,
senão, o ``loop'' é encerrado.
\end{itemize}
\begin{lstlisting}
/* Exemplo que demonstra o uso da instrucao do...while */
#include <stdio.h>
void main ()
{
int contagem = 1;
/* Imprime na tela os numeros de 1 a 10 */
do {
printf(" %d", contagem);
contagem++;
} while ( contagem != 10 );
}
\end{lstlisting}
A saída será:
\begin{verbatim}
1 2 3 4 5 6 7 8 9 10
\end{verbatim}
\section{Exercício}
1. Faça um programa em C para ler números inteiros e determinar se o número
lido é primo, imprimindo o resultado. A execução encerra quando o número lido
for zero, e o programa deve então imprimir o maior e o segundo maior número
primo lido.
2. Faça um programa com uma função para calcular a série de Fibonacci de um
número n qualquer.
A série de Fibonacci (F) é definida da seguinte maneira:
- F(1) = 1
- F(2) = 1
- F(n) = F(n-1)+F(n-2)
3. Escreva um programa em C para calcular o máximo divisor comum e o mínimo
múltiplo comum entre dois números. Abaixo está o diagrama do algoritmo que
calcula o mdc:
4. Escreva um programa em C que seja capaz de converter um número de decimal
para binário e de binário para decimal.
\end{document}
\ No newline at end of file
......@@ -3,4 +3,182 @@
\begin{document}
\chapter{Controle de fluxo do programa}
\section{Instrução break}
A instrução break pode ser colocada dentro de uma repeti,c~ao (for, while ou
do...while) ou ainda dentro
de um switch (veja mais adiante).
Quando a instrução break é encontrada dentro de uma repeti,c~ao, a execu,c~ao da
repeti,c~ao na qual ele
se encontra é encerrada.
\begin{lstlisting}
for(contagem = 0; contagem ! 10; contagem++)
f
if ( contagem == 5 ) /* quando contagem for 5 */
break; /* interrompe o loop */
g
\end{lstlisting}
\section{Instrução continue}
Como a instrução break, a instru,c~ao continue também só pode ser colocada
dentro de um "loop"for,
while ou do...while. Quando uma instrução continue é executada, a próxima
itera,c~ao do loop come,ca
imediatamente, ou seja, as instruções existentes entre a instru,cão continue e o
final do "loop"n~ao s~ao
êxecutadas.
\section{Instrução return}
A instrução return termina a execu,c~ao da fun,c~ao em que se encontra o
programa e faz com que a execu,c~ao
continue na instrução seguinte `a chamada da fun,c~ao. Esta instru,c~ao aceita
um único argumento, que
pode ser qualquer expressão válida em C, cujo valor é retornado.
exemplo:
\begin{lstlisting}
int MAX( int a, int b )
{
if ( a > b )
return(a);
else
return(b);
}
\end{lstlisting}
\section{Função exit()}
A função exit(), que pertence `a biblioteca padr~ao stdlib.h, termina a
execu,c~ao do programa e retorna o
controle ao sistema operacional. Esta função aceita um único argumento do tipo
int, que é passado de
volta ao sistema operacional para indicar o sucesso ou fracasso do programa.
\section{Instrução switch}
A instrução switch é semelhante à instrução if , ou seja, a partir da
avaliação de uma expressão a instrução switch pode realizar diferentes ações e,
ao invés do if, não está restrita a apenas duas ações. A forma geral é a
seguinte:
\begin{lstlisting}
switch (expressão)
{
case gabarito1 :
instruções;
break;
case gabarito2 :
instruções;
break;
...
case gabaritoN :
instruções;
break;
default:
instruções;
}
\end{lstlisting}
Nesta instrução, expressão é qualquer expressão que resulte em um valor
inteiro do tipo long, int, ou char.
A instrução switch avalia a expressão e compara o seu valor com os gabaritos
após cada item case; então:
\begin{itemize}
\item Se for encontrada uma equivalência entre expressão e um dos
gabaritos, a execução é transferida para as instruções subsequentes ao item
case.
\item Se nenhuma equivalência for encontrada, a execução é transferida para
as instruções subsequentes ao item default, que é opcional.
\item Se nenhuma equivalência for encontrada e não houver um item default,
a execução é transferida para a primeira instrução subsequente à chave de
encerramento da instrução switch.
\end{itemize}
Observe que ao término de cada item case aparece uma instrução break.
Na verdade o break é opcional.
Sua funcionalidade é a mesma quando utilizado dentro de repetições, ou seja,
o break faz com que a instrução switch seja terminada.
Se ao final do corpo de comandos de um case não houver um break, todos os
gabaritos abaixo serão
executados até que seja encontrado um break ou seja atingido o final do switch.
\begin{lstlisting}
/* Exemplo do uso da instrucao switch */
#include <stdio.h>
#include <stdlib.h>
void main()
{
char vogal;
printf("Digite uma vogal: \n");
scanf ("%c",&vogal); /* le uma letra */
switch (vogal) {
case 'a':
vogal='e';
break;
case 'e':
vogal='i';
break;
case 'i':
vogal='o';
break;
case 'o':
vogal='u';
break;
case 'u':
vogal='a';
break;
default :
printf("Erro! A letra nao e vogal");
exit(0);
}
printf ("a vogal subsequente e %c \n",vogal);
}
\end{lstlisting}
\section{Exercício}
Esse exercício consiste em desenvolver uma pequena calculadora, com várias
opções que serão selecionadas em um menu.
O menu principal deverá ser o seguinte:
1. Soma n números
2. Multiplica n números
3. Divide a/b
4. Subtração de n números
5. Calcular $a^b$
6. Calcular a média aritmética de $n$ números
7. Sair
Cada opção deverá comportar-se da seguinte forma:
\begin{itemize}
\item requisitar quantos números farão parte da operação (quando
aplicável);
\item requisitar cada entrada;
\item ao final das iterações, imprimir o resultado e aguardar uma tecla;
\item retornar ao menu principal.
\end{itemize}
\end{document}
\ No newline at end of file
#include <stdio.h>
int main()
{
int x = -10;
unsigned int y = 20;
float z = 7.32;
/* Exibe na tela o caractere nova linha e o texto */
printf("Teste de printf\n");
/* Exibe na tela texto, caractere nova linha */
/* e valor de variaveis */
printf("Inteiro: %d\n", x);
printf("Sem Sinal: %u\n", y);
printf("Ponto Flutuante: %f\n", z);
printf("String Alfanumerica: %s\n", "Teste de Printf");
return 0;
}
......@@ -3,4 +3,249 @@
\begin{document}
\chapter{Funções de entrada e saída}
Funções de entrada e saída são aquelas que obtêm informações de uma determinada
entrada (normalmente através da entrada padrão, i.e. teclado) e enviam
informações para uma determinada saída (normalmente para a saída padrão,
i.e. vídeo).
Nesta seção estaremos tratando apenas de funções que trabalham com entrada e
saída padrão, ou seja, obtêm uma informação a partir do teclado e imprimem informações
para o vídeo.
A biblioteca que contêm todas essas funções é a stdio.h.
\section{printf()}
A função printf() é a maneira mais fácil de fazer com que um programa exiba informações na tela. Ela recebe dois argumentos: uma string de formato (obrigatória) e uma lista de argumentos (opcional).
Uma string de formato especifica como a saída da função printf deverá ser formatada. Os três
componentes possíveis de uma string de formato são:
\begin{itemize}
\item Texto literal, que é exibido na tela exatamente como foi incluído na
string de formato.
\item Sequências de escape, que incluem instruções especiais de formatação. Uma sequência de escape consiste de uma barra invertida (\\) seguida de um único caractere. As sequências de escape mais utilizadas estão na tabela ??.
\item Especificadores de formatação, que consistem no símbolo de porcentagem (\%) seguido por um único caractere. Estes especificadores informam à função printf() como interpretar as variáveis que serão impressas. O string de formato deve conter um especificador de formatação para cada variável a ser impressa.
\end{itemize}
\begin{table}
\centering
\begin{tabular}{|l|l|}
\hline \verb|\a| & Sinal Sonoro \\
\hline \verb|\b| & retrocesso (backspace) \\
\hline \verb|\n| & nova linha \\
\hline \verb|\t| & tabulação horizontal \\
\hline \verb|\\| & barra invertida \\
\hline \verb|\?| & ponto de interrogação \\
\hline \verb|\'| & aspa simples \\
\hline \verb|\"| & aspas duplas \\
\hline
\end{tabular}
\caption{Sequências de escape}
\end{table}
\begin{table}
\centering
\begin{tabular}{|l|l|}
\hline especificador & Significado \\
\hline \%c & caractere simples \\
\hline \%d & número inteiro decimal com sinal \\
\hline \%u & número inteiro decimal sem sinal \\
\hline \%s & string alfanumérica \\
\hline \%f & número decimal com ponto flutuante \\
\hline \%e & número em notação científica \\
\hline
\end{tabular}
\caption{Especificadores de formatação}
\end{table}
\lstinputlisting{exemplos/printf.c}
A saída será:
\begin{verbatim}
Teste de Printf
Inteiro: -10
Sem Sinal: 20
Ponto Flutuante: 7.32
String Alfanumerica: Teste de Printf