\documentclass[apostila.tex]{subfiles} \begin{document} \chapter{Conceitos básicos} \section{Estrutura básica de um programa em C} Apresentamos abaixo os elementos mais comuns em um programa em C, assim como a apresentação geral de sua estrutura. É importante observar que nem todos os elementos são obrigatórios e a ordem de cada declaração não é necessariamente a mesma. \lstinputlisting{exemplos/estrutura.c} OBS.: Um bloco de código é delimitado por abre e fecha chaves. 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. \lstinputlisting{exemplos/estrutura2.c} \section{Variáveis} Uma variável é uma localização para armazenagem de dados na memória do computador. Quando o nome de uma variável aparece em um programa ele está se referindo, na verdade, aos dados armazenados nessa localização. \subsection{Nomes de Variáveis} Para usar variáveis nos programas em C, devemos saber quais nomes podem ser utilizados. Para tanto, devemos seguir as seguintes regras: \begin{itemize} \item O nome pode conter letras, números 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 de fácil compreensão. \end{itemize} Exemplos: \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} As variáveis da linguagem C enquadram-se em uma das seguintes categorias: \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[com sinal] que podem conter valores positivos ou negativos; \item[sem sinal] que só podem assumir valores positivos. \end{description} Operações matemáticas entre variáveis inteiras são, normalmente, muito rápidas. \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}[h!] \scriptsize \begin{tabular}{|p{4cm}|l|l|l|} \hline \textbf{Tipo de Variável} & \textbf{Palavra Chave} & \textbf{Bytes} & \textbf{Valores Válidos} \\ \hline Caracteres & char & 1 & -128 a 127 \\ \hline Números inteiros curtos & short & 2 & -32.768 a 32.767 \\ \hline Números inteiros & int & 4 & -2.147.483.648 a 2.147.483.647 \\ \hline Caracteres não sinalizados & unsigned char & 1 & 0 a 255 \\ \hline Números inteiros curtos sem sinal & unsigned short & 2 & 0 a 65.535 \\ \hline Números inteiros sem sinal & unsigned long & 4 & 0 a 4.294.967.295 \\ \hline Número de ponto flutuante com precisão simples & float & 4 & 1,2E-38 a 3,4E38 \\ \hline Número de ponto flutuante com precisão dupla & double & 8 & 2,2E-308 a 1,8E308\\ \hline \end{tabular} \caption{Tipos de dados numéricos em C.} \end{table} \subsection{Declaração/Inicialização} Antes de poder ser usada por um programa, uma variável deve ser declarada. A declaração de uma variável informa ao compilador o nome e o tipo de uma variável e, opcionalmente, inicializa a variável com um determinado valor. 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 globais (se declaradas fora de qualquer função) ou variáveis locais (se declaradas dentro de uma função). As variáveis globais são válidas em qualquer parte do programa e as variáveis locais apenas dentro do bloco em que foram declaradas. \section{Constantes} Uma constante, da mesma forma que uma variável, é uma localização usada pelo programa para armazenar dados. Ao contrário da variável, porém, o valor armazenado em uma constante não pode ser alterado durante a execução do programa. A linguagem C possui dois tipos de constantes: literais e simbólicas. \subsection{Literais} Constantes literais são os valores digitados diretamente no código-fonte do programa. Segue alguns exemplos de constantes literais: \begin{lstlisting} int count = 20; float tax_rate = 0.28; char letter = 'c'; \end{lstlisting} OBS.: Neste caso, os valores 20, 0.28 e `c' são as constantes literais. Note que para especificar 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ímbolo) no programa. 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á: \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 \footnote{Diretivas de pré-processamento serão melhor detalhadas no apêndice D.2.} include. As sintaxes possíveis são: \begin{itemize} \item Inclusão de uma biblioteca residente em um diretório padrão: \begin{lstlisting} #include \end{lstlisting} \item Inclusão de uma biblioteca residente no diretório local: \begin{lstlisting} #include "nomearq.h" \end{lstlisting} \end{itemize} 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. \section*{Exercícios} 1. Para cada variável abaixo, determine a forma equivalente para declarar a mesma variável em C. a) $p \in N$ b) $q \in Q$ c) $r \in R$ d) $s \in Z$ e) sexo ([M]asc/[F]em) f) tamanho camisa (P/M/G)\\ 2. Qual tipo deveria ser utilizado para uma variável booleana \footnote{Variável que assume Verdadeiro ou Falso.}?\\ 3. Qual a diferença de uma constante declarada através de DEFINE e uma constante declarada utilizando a palavra-chave const?\\ 4. Faça um programa completo em C que declara todas as variáveis do exercício 1.\\ \end{document}