\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[unicode]{hyperref}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{listings}
\usepackage{longtable}
\date{\today}
\title{}
\author{}
\begin{document}

\begin{longtable}{|l|}
\hline
 \\ 
\hline
 
\end{longtable}



\subsection{\texorpdfstring{Código da função}{Codigo da funao}}
\label{sec:codigo_da_funao}
\lstset{frame=single}
\begin{lstlisting}

##### ANOVA DE MONTE CARLO

anova.MC=function(dados,n){ 
  
     aleat=function(dados){                                             # função que faz as permutações
           mc=dados                                                      # crio o objeto que receberá as permutações, idêntico aos dados originais
           mc$resp=rep(NA,length(dados$resp))                            # retiro os valores originais
           for(j in 1:length(unique(dados$bloco))){                      # número de blocos
               mc$resp[mc$bloco==j]=sample(dados$resp[dados$bloco==j])   # permutação dos valores encontrados
                                                   }  
           return(summary(aov(resp~A*B+Error(bloco/(A*B)),mc))[5][[1]][[1]][[4]][1:3]) # extração e cálculo de F
                          }

     result=data.frame(A=rep(NA,n),B=rep(NA,n),A.B=rep(NA,n))       # crio o objeto que receberá os valores de F

     for(i in 1:n){                          # número de permutações
                   result[i,]=aleat(dados)   # gero n valores de F
                  }

     real=summary(aov(resp~A*B+Error(bloco/(A*B)),data=dados))[5][[1]][[1]][[4]][1:3] # extração e cálculo de F dos dados reais
     
     p=data.frame(fatores="p",
                  A=(length(result[result[,1]>=real[1],1])+1)/(n+1),   # probabilidade de se encontrar o efeito do fator A ao acaso
                  B=(length(result[result[,2]>=real[2],2])+1)/(n+1),   # o mesmo para o fator B               
                  A.B=(length(result[result[,3]>=real[3],3])+1)/(n+1)  # e idem para a interação A:B
                 )
     return(p)

                        }   # fim da função        


# Testando...

anova.MC(dados,99)

\end{lstlisting}



\end{document}
