Commit 95050c98 authored by Vytor Calixto's avatar Vytor Calixto 👾

Espaçamento de tabelas no capítulo de funcões

parent 0ba173b1
......@@ -5,17 +5,17 @@
\chapter{Funções}
Uma função é uma seção independente de código em C, designada por um nome,
que realiza uma tarefa específica e, opcionalmente,
Uma função é uma seção independente de código em C, designada por um nome,
que realiza uma tarefa específica e, opcionalmente,
retorna um valor ao programa que a chamou.
\section{Protótipo}
O protótipo da função fornece ao compilador uma descrição de uma função que
será definida posteriormente no programa. O protótipo inclui o tipo de
retorno, que indica o tipo de variável que a função retornará.
O protótipo da função fornece ao compilador uma descrição de uma função que
será definida posteriormente no programa. O protótipo inclui o tipo de
retorno, que indica o tipo de variável que a função retornará.
Além disso, ele inclui também o nome da função, os tipos de variáveis dos argumentos que
serão passados para a função e opcionalmente o nome dos argumentos.
serão passados para a função e opcionalmente o nome dos argumentos.
O protótipo sempre termina com `;'.
\begin{lstlisting}
......@@ -24,17 +24,19 @@ tipo_de_retorno nome_funcao (tipo1 arg1,..., tipoN argN);
\section{Definição}
A definição da função é a função propriamente dita.
A definição contém as instruções que serão executadas.
A primeira linha de uma definição de função, chamada de cabeçalho da função,
A definição da função é a função propriamente dita.
A definição contém as instruções que serão executadas.
A primeira linha de uma definição de função, chamada de cabeçalho da função,
deve ser idêntica ao protótipo da função, com exceção do ponto-e-vírgula final.
Os nomes das variáveis usadas como argumentos devem necessariamente
Os nomes das variáveis usadas como argumentos devem necessariamente
ser incluídos no cabeçalho. A seguir vem o corpo da função, contendo as
instruções que a função executará contidas num bloco.
instruções que a função executará contidas num bloco.
Se o tipo de retorno da função não for void, uma
instrução return deve ser incluída para retornar um valor compatível com o
instrução return deve ser incluída para retornar um valor compatível com o
tipo de retorno especificado.
\vspace*{\fill}
\begin{lstlisting}
tipo_de_retorno nome_funcao(tipo1 arg1, ..., tipoN argN)
{
......@@ -45,8 +47,8 @@ tipo_de_retorno nome_funcao(tipo1 arg1, ..., tipoN argN)
\subsection{Tipo de retorno}
Especifica o tipo de dado que a função deverá retornar ao programa
que a chamou. O tipo pode ser qualquer dos tipos válidos em C ou um
Especifica o tipo de dado que a função deverá retornar ao programa
que a chamou. O tipo pode ser qualquer dos tipos válidos em C ou um
tipo definido pelo programador. A função pode não retornar nenhum valor.
\begin{lstlisting}
......@@ -54,9 +56,9 @@ int func1(...) // retorna um tipo int
void func2(...) // não retorna dados
\end{lstlisting}
Para retornar um valor a partir de uma função, é usada a palavra-chave return
seguida por uma expressão válida em C. Quando a execução atinge a instrução
return, a expressão é avaliada e o valor é transmitido para o programa que
Para retornar um valor a partir de uma função, é usada a palavra-chave return
seguida por uma expressão válida em C. Quando a execução atinge a instrução
return, a expressão é avaliada e o valor é transmitido para o programa que
originou a chamada. O valor de retorno de uma função é o valor da expressão.
\begin{lstlisting}
......@@ -65,7 +67,7 @@ int func1(...)
int x; // declaracao da variavel
... // demais instrucoes
...
return x*2; // retorna x*2
}
\end{lstlisting}
......@@ -73,39 +75,39 @@ int func1(...)
\subsection{Nome da função}
Pode ser qualquer nome, contanto que siga as regras adotadas para atribuir
nomes de variáveis em C. O nome da função deve ser único e é sempre
Pode ser qualquer nome, contanto que siga as regras adotadas para atribuir
nomes de variáveis em C. O nome da função deve ser único e é sempre
aconselhável usar um nome que reflita a finalidade da função.
\subsection{Corpo da função}
É delimitado por chaves e colocado imediatamente após o cabeçalho da função.
Quando uma função é chamada, a execução começa no início do corpo e termina
(retornando ao programa de origem) quando uma instrução return é encontrada
É delimitado por chaves e colocado imediatamente após o cabeçalho da função.
Quando uma função é chamada, a execução começa no início do corpo e termina
(retornando ao programa de origem) quando uma instrução return é encontrada
ou quando a execução chega ao final do bloco.
Podemos declarar variáveis dentro do corpo de uma função. Estas variáveis
são chamadas de variáveis locais, significando que são privativas desta
função e distintas de outras variáveis com o mesmo nome que possam ter sido
declaradas em outras partes do programa. A declaração destas variáveis deve
Podemos declarar variáveis dentro do corpo de uma função. Estas variáveis
são chamadas de variáveis locais, significando que são privativas desta
função e distintas de outras variáveis com o mesmo nome que possam ter sido
declaradas em outras partes do programa. A declaração destas variáveis deve
ser feita antes de qualquer instrução.
\section{Chamada de funções}
\subsection{Chamadas por valor}
Quando uma variável é passada para uma função pelo valor, a função tem
acesso ao valor da variável, mas não à própria variável original.
Portanto, as instruções contidas na função não podem modificar o valor da
Quando uma variável é passada para uma função pelo valor, a função tem
acesso ao valor da variável, mas não à própria variável original.
Portanto, as instruções contidas na função não podem modificar o valor da
variável original.
\subsection{Chamadas por referência}
Neste caso a função recebe o endereço de memória (uma referência) do
parâmetro, ao invés do valor do parâmetro. Desta forma, a função pode alterar
Neste caso a função recebe o endereço de memória (uma referência) do
parâmetro, ao invés do valor do parâmetro. Desta forma, a função pode alterar
o valor da variável mediante a utilização deste endereço.
Tanto a função quanto o programa devem ser informados de que um parâmetro é
chamado por referência utilizando os operadores \& (para passar um endereço)
Tanto a função quanto o programa devem ser informados de que um parâmetro é
chamado por referência utilizando os operadores \& (para passar um endereço)
e * (para receber um endereço).
exemplo:
......@@ -114,7 +116,7 @@ exemplo:
A saída será:
A saída será:
\begin{verbatim}
Antes de chamar por valor() : x = 2, y = 4, z = 6
Depois de chamar por valor(): x = 2, y = 4, z = 6
......@@ -124,7 +126,7 @@ Depois de chamar por ref() : x = 0, y = 0, z = 0
Obs.:
\begin{description}
\item[\&] Passa o endereço de memória da variável passada por parâmetro e,
\item[\&] Passa o endereço de memória da variável passada por parâmetro e,
portanto, as modificações sobre esta variável realizadas na função são permanentes.
\item[*] Acessa o conteúdo de tal endereço de memória.
\end{description}
......@@ -140,7 +142,7 @@ Obs.:
1. Transforme o programa que detecta se um número é primo em uma função.
2. Escreva uma função que gera e imprime os primeiros n números primos,
2. Escreva uma função que gera e imprime os primeiros n números primos,
sendo que n é o parâmetro desta função.
\end{document}
\ No newline at end of file
\end{document}
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