---
title: "Jupyter Notebook"
author: "[Walmes Marques Zeviani](http://leg.ufpr.br/~walmes)"
output:
  html_document:
    theme: yeti
    highlight: haddock
    fig_caption: yes
    fig_align: center
    toc: true
    toc_dep: 3
    number_sections: true
---

# O Jupyter Notebook

Vários editores podem ser usados para desenvolvimento de
scripts/projetos Python. Basicamente divide-se os editores em IDE
(*integrated development environment*) que são ambientes especializados
de desenvolvimento para uma liguagem ou tipo de atividade e os editores
gerais. Fazem parte do primeiro grupo o Spyder para Python e o RStudio
para R. No segundo grupo tem-se o Emacs, o Vi/Vim, o Virtual Studio,
etc.

O Jupyter Notebook (JN) não é exatamente uma IDE nem um editor geral. O
termo nootbook refere-se ao fato de ser um documento de conteúdo
híbrido, ou seja, não contém apenas código da linguagem de programação
mas mistura ela com texto em prosa, imagens, gráficos, equações e
tabelas. O JN permite escrever e executar fragmentos de código Python em
meio a fragmentos de prosa em linguagem markdown. O resultado é um
documento com prosa e código, útil para entrega de relatórios de análise
de dados por exemplo. Por outro lado, é contraprodutivo desenvolver
código de projetos massivos com o Jupyter Notebook.

O JN roda dentro no navegador de internet. Seu nome decorre da junção de
Julia, Python e R pois as 3 linguagens de programação podem ser usadas
nesse tipo de documento.

# Uso do Jupyter Notebook

O JN vem instalado por padrão no Anaconda. Para usá-lo, basta invocá-lo
do terminal.

```{sh, eval = FALSE}
# Abre o JN com o navegador padrão do SO.
anaconda3/bin/jupyter-notebook
```

A tela inicial do JN mostra os diretórios visiveis a partir do diretório
de onde a aplicação foi invocada. É possível navegar pelos diretório e
abrir arquivos criados com o JN. Caso não haja algum, você pode criá-lo
clicando no botão cascata `New` no canto superior direito. Escolha
`Python` para criar um notebook com fragmentos de Python.

Antes de começar a codificar propriamente, navege pela aplicação pelas
entradas de menu e ícones disponíveis. Esse passeio inicial irá fazer
com que você rapidamente conheça/deduza as funcionalidades do JN. Para
maior agilidade, dê especial atenção as teclas de atalho que são
listadas quando clica-se sobre o ícone do teclado no final da barra de
ferramentas que fica abaixo no menu. Visite este tutorial para mais
detalhes:
<https://towardsdatascience.com/jypyter-notebook-shortcuts-bf0101a98330>.

```{r, echo = FALSE, fig.cap = cap}
cap <- "Tela inicial do Jupyter Notebook com um fragmento de prosa e um de código Python."
knitr::include_graphics("../img/Jupyter-Notebook.png")
```

Documentos do JN possuem a extensão `*.ipynb` de IPython Notebook. Isso
porque o interpretador Python usado é o IPython (I de interativo). Esse
arquivo `*.ipynb` é um arquivo de JSON. Você abrir em qualquer editor de
texto e fazer modificações, caso queira de esteja segudo de fazê-lo sem
comprometer a funcionalidade. O Emacs também edita arquivos `*.ipynb`
conforme descrito aqui: <http://blog.leg.ufpr.br/archives/373>.
