Commit c6199049 authored by Jomaro Rodrigues's avatar Jomaro Rodrigues

Revisão dos 3 primeiros capítulos

parent 1c497909
......@@ -10,10 +10,10 @@
\begin{document}
\maketitle
\frontmatter
\maketitle
\cleardoublepage
......
......@@ -19,7 +19,7 @@ de sua estrutura.
OBS.: Um bloco de código é delimitado por abre e fecha chaves.
Os comentérios são colocados entre /* */.
Os comentérios são colocados entre \verb|/* */| ou após duas barras \verb|//|.
Em um segundo exemplo, temos um programa em C completo. Observe como a estrutura desse
programa é parecida com a apresentada anteriormente.
......@@ -47,10 +47,9 @@ devemos seguir as seguintes regras:
\begin{itemize}
\item
\item O nome pode conter letras, algarismos e o caractere ' ';
\item O primeiro caractere do nome sempre deve ser uma letra ou o caractere ' ';
\item Letras maiúsculas são diferentes de min'usculas;
\item O nome pode conter letras, algarismos e o caractere ` ';
\item O primeiro caractere do nome sempre deve ser uma letra ou o caractere ` ';
\item Letras maiúsculas são diferentes de minúsculas;
\item As palavras-chave da linguagem C não podem ser utilizadas como nomes das variáveis;
\item A escolha de nomes significativos para suas variáveis pode tornar o programa mais claro e fácil de entender.
\end{itemize}
......@@ -58,10 +57,12 @@ devemos seguir as seguintes regras:
Exemplos:
percent /* válido */
y2x5 fg7h /* válido */
double /* inválido: é uma palavra chave */
9winter /* inválido: inicia com algarismo */
\begin{lstlisting}
percent // válido
y2x5_fg7h // válido
double // inválido: é uma palavra chave
9winter // inválido: inicia com algarismo numérico
\end{lstlisting}
\subsection{Tipos de Variáveis}
......@@ -69,15 +70,18 @@ double /* inválido: é uma palavra chave */
As variáveis da linguagem C enquadram-se em uma das seguintes categorias:
ffl Variáveis inteiras, que armazenam valores não-fracionais (ou seja, somente valores inteiros). Há dois tipos de variáveis inteiras:
- variáveis inteiras com sinal, que podem conter valores positivos ou negativos;
- variáveis inteiras sem sinal, que só podem assumir valores positivos.
\begin{description}
\item[Variáveis inteiras] que armazenam valores não-fracionais (ou seja, somente valores inteiros). Há dois tipos de variáveis inteiras:
\begin{description}
\item[variáveis inteiras com sinal] que podem conter valores positivos ou negativos;
\item[variáveis inteiras sem sinal] que só podem assumir valores positivos.
Operações matemáticas entre variáveis inteiras são, normalmente, muito rápidas.
ffl Variáveis de Ponto Flutuante, que contém valores com uma parte fracional (ou seja, n'umeros reais).
\end{description}
\item[Variáveis de Ponto Flutuante] que contém valores com uma parte fracional (ou seja, números reais).
No geral, as operações matemáticas são mais lentas para este tipo de variável.
\end{description}
\begin{table}
\scriptsize
......@@ -96,7 +100,7 @@ No geral, as operações matemáticas são mais lentas para este tipo de variáv
& unsigned short & 2 & 0 a 65.535 \\
Números inteiros sem sinal
& unsigned long & 4 & 0 a 4.294.967.295 \\
N'umero de ponto flutuante com precisão simples
Número de ponto flutuante com precisão simples
& float & 4 & 1,2E-38 a 3,4E38 \\
Número de ponto flutuante com precisão dupla
& double & 8 & 2,2E-308 a 1,8E308\\
......@@ -114,14 +118,16 @@ A declaração deve ter o seguinte formato:
\begin{lstlisting}
tipo NomeVariavel;
\end{lstlisting}
Exemplo:
\begin{lstlisting}
/* tres variaveis inteiras */
int count, number, start;
/* variavel de ponto flutuante inicializada com um valor */
float percent=15.3;
\end{lstlisting}
De acordo com o local no programa onde as variáveis são declaradas, elas se classificam em variáveis
......@@ -158,54 +164,57 @@ constantes que são caracteres, deve-se delimitar o valor com aspas simples.
\subsection{Simbólicas}
Constantes simbólicas são constantes representadas por um nome (s'imbolo) no programa.
Constantes simbólicas são constantes representadas por um nome (símbolo) no programa.
Para utilizar o valor da constante no programa, podemos usar seu nome, exatamente como usar'iamos
Para utilizar o valor da constante no programa, podemos usar seu nome, exatamente como usaríamos
o nome de uma variável. O nome da constante simbólica deve ser especificado somente uma vez, quando
ela é definida. Por exemplo:
\lstinputlisting{exemplos/constantes.c}
A saída será: O perimetro da circunferencia de raio 5 é 31.4159.
A saída será:
\begin{verbatim}
O perimetro da circunferencia de raio 5 é 31.4159.
\end{verbatim}
\subsection{Incluindo bibliotecas}
Uma biblioteca é uma coleção de declarações de funções e constantes,
que pode ser incluída em um programa e que provê uma série de "comandos" novos.
Para incluir uma biblioteca é utilizado a diretiva include.
Para incluir uma biblioteca é utilizado a diretiva
\footnote{Diretivas de pré-processamento serão melhor detalhadas no capítulo ??.}
include.
As sintaxes possíveis são:
ffl Inclusão de uma biblioteca residente em um diretório padrão:
\begin{itemize}
\item Inclusão de uma biblioteca residente em um diretório padrão:
\begin{lstlisting}
#include <nomearq.h>
\end{lstlisting}
ffl Inclusão de uma biblioteca residente no diretório local:
\item Inclusão de uma biblioteca residente no diretório local:
\begin{lstlisting}
#include "nomearq.h"
\end{lstlisting}
\end{itemize}
As diretivas acima incluem
2
As diretivas acima incluem
\footnote{Na realidade, normalmente é realizada a inclusão de um
header(cabeçalho) de uma biblioteca.
Posteriormente este tópico será esclarecido.}
a biblioteca nomearq no programa.
1
Diretivas de pré-processamento serão melhor detalhadas no capítulo ??.
2
Na realidade, normalmente é realizada a inclusão de um header(cabeçalho) de uma biblioteca. Posteriormente este tópico será esclarecido.
\section{Exercícios}
\section*{Exercícios}
1. Para cada variável abaixo, determine a forma equivalente para declarar a mesma variável em C.
......
......@@ -14,11 +14,12 @@ enquadram-se em diversas categorias.
\section{Operador de Atribuição}
O operador de atribuição é o sinal '='.
O operador de atribuição é o sinal `='.
Seu uso em programação é ligeiramente diferente de seu uso na
Matemática normal. Se escrevermos x = y;
em um programa em C, isto significa que o valor de y deve ser atribuído em x,
e não que y é igual a x
Matemática normal. Se escrevermos $x = y;$
em um programa em C, isto significa que o valor de $y$
deve ser atribuído em $x$,
e não que $y$ é igual a $x$
como seria de se esperar. Em uma instrução de atribuição,
o lado direito pode ser qualquer expressão e
o lado esquerdo deve necessariamente ser o nome de uma variável.
......@@ -44,9 +45,14 @@ A linguagem C possui dois operadores matemáticos unários e cinco binários.
Os operadores matemáticos unários recebem este nome porque exigem
apenas um operando, e são os seguintes:
Operador Símbolo Ação Exemplo
Incremento ++ Incrementa o operando em uma unidade ++x, x++
Decremento $\Gamma \Gamma$ Decrementa o operando em uma unidade $\Gamma \Gamma x$, $x\Gamma \Gamma$
\begin{tabular}{|l|l|l|l|}
\hline Operador & Símbolo & Ação & Exemplo \\
\hline Incremento & \verb|++| &
Incrementa o operando em uma unidade & \verb|++x|, \verb|x++| \\
\hline Decremento & \verb|--| &
Decrementa o operando em uma unidade & \verb|--x|, \verb|x--| \\
\hline
\end{tabular}
Exemplos:
......@@ -117,18 +123,21 @@ A saída será:
\subsection{Binários}
Operadores binários são aqueles que exigem dois operandos.
Os operadores binários da linguagem C, que
incluem as operações matemáticas mais comuns, são relacionados na tabela ??
incluem as operações matemáticas mais comuns, são relacionados
na tabela \ref{tab:binop}.
\begin{table}
\begin{table}\label{tab:binop}
\centering
\begin{tabular}{|l|l|l|l|}
Operador & Símbolo & Ação & Exemplo \\
Adição & + & Soma seus dois operandos & x + y \\
Subtração & $\Gamma$ & Subtrai o segundo operando do primeiro & $x \Gamma y$ \\
Multiplicação & * & Multiplica seus dois operandos & x * y \\
Divisão & / & Divide o primeiro operando pelo segundo & x / y \\
Módulo & $\%$ &
\hline Operador & Símbolo & Ação & Exemplo \\
\hline Adição & + & Soma seus dois operandos & x + y \\
\hline Subtração & - & Subtrai o segundo operando do primeiro & x - y \\
\hline Multiplicação & * & Multiplica seus dois operandos & x * y \\
\hline Divisão & / & Divide o primeiro operando pelo segundo & x / y \\
\hline Módulo & $\%$ &
Fornece o resto da divisão do primeiro operando pelo segundo &
x $\%$ y \\
\hline
\end{tabular}
\caption{Operadores binários}
\end{table}
......@@ -141,8 +150,18 @@ O módulo retorna o resto de uma divisão do primeiro operando pelo segundo.
Exemplo:
100 % 9 é igual a 1
10 % 5 é igual a 0
\begin{lstlisting}
printf("%d\n", 100 % 9);
printf("%d\n", 10 % 5);
\end{lstlisting}
tem como saída:
\begin{verbatim}
1
0
\end{verbatim}
\section{Atribuição Composta}
......@@ -152,23 +171,31 @@ operação matemática binária com uma operação de atribuição de valor.
Em geral, estes operadores usam a seguinte sintaxe (sendo op um
operador binário):
\begin{verbatim}
exp1 op= exp2;
\end{verbatim}
que é equivalente a escrever
\begin{verbatim}
exp1 = exp1 op exp2;
\end{verbatim}
Os operadores compostos existem para os cinco operadores matemáticos binários descritos anteriormente, conforme ilustra a tabela ??.
Se você escrever será equivalente a
\begin{table}
\begin{tabular}{|c|c|}
x += y & x = x + y \\
x -= y + 1 & x = x - (y + 1) \\
x *= y & x = x * y \\
x /= y - 3 & x = x / (y - 3) \\
x $\%$= y & x = x $\%$ y \\
\end{tabular}
\caption{Operadores de atribuição compostos}
\centering
\begin{tabular}{|c|c|}
\hline x += y & x = x + y \\
\hline x -= y + 1 & x = x - (y + 1) \\
\hline x *= y & x = x * y \\
\hline x /= y - 3 & x = x / (y - 3) \\
\hline x $\%$= y & x = x $\%$ y \\
\hline
\end{tabular}
\caption{Operadores de atribuição compostos}
\end{table}
\section{Operadores Relacionais}
......@@ -177,17 +204,24 @@ São usados para comparar expressões.
Uma expressão que contenha um operador relacional sempre é
avaliada como verdadeira (1) ou falsa (0).
Os seis operadores relacionais da linguagem C são listados na
tabela ??.
tabela \ref{tab:op-rel}.
Operador Símbolo Pergunta Respondida Exemplo
Igual == Operando 1 é igual ao operando 2? x == y
Maior que ? Operando 1 é maior que o operando 2? x ? y
Menor que ! Operando 1 é menor que o operando 2? x ! y
Maior ou igual a ?= Operando 1 é maior ou igual ao operando 2? x ?= y
Menor ou igual a != Operando 1 é menor ou igual ao operando 2? x != y
Diferente != Operando 1 é diferente do operando 2? x != y
\begin{table}
\centering
\begin{tabular}{|l|l|l|l|}
\hline Operador & Símbolo & Pergunta Respondida & Exemplo \\
\hline Igual & == & Operando 1 é igual ao operando 2? & x == y \\
\hline Maior que & > & Operando 1 é maior que o operando 2? & x ? y \\
\hline Menor que & < & Operando 1 é menor que o operando 2? & x ! y \\
\hline Maior ou igual a & >= & Operando 1 é maior ou igual ao operando 2? & x ?= y \\
\hline Menor ou igual a & <= & Operando 1 é menor ou igual ao operando 2? & x != y \\
\hline Diferente & != & Operando 1 é diferente do operando 2? & x != y \\
\hline
\end{tabular}
\label{tab:op-rel}
\caption{Operadores relacionais}
\end{table}
Tabela 3.3: Operadores relacionais
\section{Operadores Lógicos}
......@@ -196,14 +230,21 @@ Os operadores lógicos
permitem que combinemos duas ou mais expressões relacionais
em uma única expressão, que é avaliada como verdadeira ou falsa.
Os três operadores lógicos da linguagem C são listados na tabela ??.
Operador Símbolo Verdadeiro Quando Exemplo
And \&\& Expressão 1 E expressão 2 são verdadeiras exp1 \&\& exp2
Or jj Expressão 1 OU expressão 2 são verdadeiras exp1 jj exp2
Not ! A expressão é falsa !exp1
Os três operadores lógicos da linguagem C são listados na tabela
\ref{tab:op-log}.
Tabela 3.4: Operadores lógicos
\begin{table}
\centering
\begin{tabular}{|l|l|l|l|}
\hline Operador & Símbolo & Verdadeiro Quando & Exemplo \\
\hline And & \&\& & Expressão 1 E expressão 2 são verdadeiras & exp1 \&\& exp2 \\
\hline Or & || & Expressão 1 OU expressão 2 são verdadeiras & exp1 || exp2 \\
\hline Not & ! & A expressão é falsa & !exp1 \\
\hline
\end{tabular}
\label{tab:op-log}
\caption{Operadores lógicos}
\end{table}
\section{Operador Condicional}
O operador condicional é o 'unico operador ternário (que exige três operandos)
......@@ -226,26 +267,31 @@ z = (x ? y) ? x : y;
\end{lstlisting}
Assim como na matemática, existe diferença na precedência dos operadores em C.
A tabela ?? lista todos os operadores e suas precedências. Sempre que uma expressão é encontrada,
A tabela \ref{tab:op-prec} lista todos os operadores e suas precedências. Sempre que uma expressão é encontrada,
os operadores que têm maior precedência são avaliados antes. Se houver empate, ou seja, dois operandos
com a mesma precedência, será avaliado antes o operador que estiver mais `a esquerda.
Operadores Precedência
! ++ -- 1
* \& / \% 2
+ - j 3
!!=??= 4
== != 5
\&\& 6
jj 7
?: 8
= += -= *= /= %= 9
com a mesma precedência, será avaliado antes o operador que estiver mais à esquerda.
Tabela 3.5: Precedência de operadores
\begin{table}
\centering
\begin{tabular}{|l|l|}
\hline Operadores & Precedência \\
\hline \verb|! ++ --| & 1 \\
\hline \verb|* & / %| & 2 \\
\hline \verb\+ - |\ & 3 \\
\hline \verb|<<= >>=| & 4 \\
\hline \verb|== !=| & 5 \\
\hline \verb|&&| & 6 \\
\hline \verb\||\ & 7 \\
\hline \verb|?| : & 8 \\
\hline \verb|= += -= *= /= %=| & 9 \\
\hline
\end{tabular}
\label{tab:op-prec}
\caption{Precedência de operadores}
\end{table}
\section{Exercícios}
\section*{Exercícios}
1. Escreva as fórmulas e expressões abaixo em linguagem C. Utilize apenas operadores e funções (quando aplicável).
......@@ -253,9 +299,9 @@ a) $a^2 + \frac{b}{c} \times \sqrt{2}$
b) $(A \Phi B) ^ C$
c) C = 400 se A?B
c) C = 400 se A$>$B
d) (A?B ou A=B) e C=30
d) (A$>$B ou A=B) e C=30
e) $\frac{a^2+b^2c^2}{\sqrt{\frac{q}{p} \times \frac{r \times t}{m}}} \times (\sin^2x - \cos^2x)$
......
......@@ -5,7 +5,7 @@
\ProcessOptions\relax
%% Load base
\LoadClass[a4paper]{book}
\LoadClass[a4paper,12pt]{book}
\RequirePackage[brazil]{babel}
......
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