Commit 871baef5 authored by Jomaro Rodrigues's avatar Jomaro Rodrigues

revisão do capítulo 7

parent b794568b
/* Calcula a divisao de dois numeros */
// Calcula a divisao de dois numeros
#include <stdio.h>
#include <stdlib.h>
float divisao(float a, float b); /* Prototipo da função */
float divisao(float a, float b); // Prototipo da função
void main()
......@@ -11,18 +11,20 @@ void main()
printf("O valor da divisao de %f por %f e: %f.\n", x, y, divisao(x,y));
}
float divisao(float a, float b) /* Definicao da funcao */
float divisao(float a, float b) // Definicao da funcao
{
float div;
if (b != 0) /* Se b for nao nulo */
// Se b for nao nulo
if (b != 0)
{
div = a / b; /* faz a divisao */
// faz a divisao
div = a / b;
return(div);
}
else /* Se b for nulo */
else // Se b for nulo
{
/* Imprime mensagem de erro e aborta execucao */
// Imprime mensagem de erro e aborta execucao
printf("Divisao por zero!\n");
exit(1);
}
......
......@@ -2,6 +2,7 @@
\begin{document}
\chapter{Funções}
Uma função é uma seção independente de código em C, designada por um nome,
......@@ -14,10 +15,12 @@ O protótipo da função fornece ao compilador uma descrição de uma função q
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. O protótipo sempre termina com
`;'.
serão passados para a função e opcionalmente o nome dos argumentos.
O protótipo sempre termina com `;'.
tipo de retorno nome funcao (tipo arg1,..., tipo argN);
\begin{lstlisting}
tipo_de_retorno nome_funcao (tipo1 arg1,..., tipoN argN);
\end{lstlisting}
\section{Definição}
......@@ -33,12 +36,13 @@ instrução return deve ser incluída para retornar um valor compatível com o
tipo de retorno especificado.
\begin{lstlisting}
tipo de retorno nome funcao (tipo arg1,..., tipo argN)
tipo_de_retorno nome_funcao(tipo1 arg1, ..., tipoN argN)
{
instruções;
}
\end{lstlisting}
\subsection{Tipo de retorno}
Especifica o tipo de dado que a função deverá retornar ao programa
......@@ -46,8 +50,8 @@ 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}
int func1(...) /* retorna um tipo int */
void func2(...) /* não retorna dados */
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
......@@ -58,14 +62,15 @@ originou a chamada. O valor de retorno de uma função é o valor da expressão.
\begin{lstlisting}
int func1(...)
{
int x; /* declaracao da variavel */
... /* demais instrucoes */
int x; // declaracao da variavel
... // demais instrucoes
...
return x*2; /* retorna x*2 */
return x*2; // retorna x*2
}
\end{lstlisting}
\subsection{Nome da função}
Pode ser qualquer nome, contanto que siga as regras adotadas para atribuir
......@@ -116,11 +121,14 @@ Depois de chamar por valor(): x = 2, y = 4, z = 6
Depois de chamar por ref() : x = 0, y = 0, z = 0
\end{verbatim}
Obs.:
\& - 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.
\begin{description}
\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}
* - Acessa o conteúdo de tal endereço de memória.
\section{Exemplo de função}
......@@ -128,10 +136,10 @@ sobre esta variável realizadas na função são permanentes.
\section{Exercícios}
\section*{Exercícios}
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,
sendo que n é o parâmetro desta função.
sendo que n é o parâmetro desta função.
\end{document}
\ No newline at end of file
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