From b90161ce63aec18935db632c2d9a5494f3ed71f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santanch=C3=A8?= Date: Thu, 18 Mar 2021 11:40:37 -0300 Subject: [PATCH 1/2] feat (notebook): input/output example --- notebook/pt/c01basico/entrada-saida.ipynb | 47 +++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 notebook/pt/c01basico/entrada-saida.ipynb diff --git a/notebook/pt/c01basico/entrada-saida.ipynb b/notebook/pt/c01basico/entrada-saida.ipynb new file mode 100644 index 0000000..ddcfb25 --- /dev/null +++ b/notebook/pt/c01basico/entrada-saida.ipynb @@ -0,0 +1,47 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exemplos de Entrada e Saída" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello World!\n" + ] + } + ], + "source": [ + "#include \n", + "\n", + "int main()\n", + "{\n", + " printf(\"Hello World!\\n\");\n", + "}" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "C", + "language": "c", + "name": "c" + }, + "language_info": { + "file_extension": ".c", + "mimetype": "text/plain", + "name": "c" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 3528336be451a772e095396570a62b5e2db88472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santanch=C3=A8?= Date: Thu, 18 Mar 2021 12:09:26 -0300 Subject: [PATCH 2/2] feat (notebook): example refinement --- binder/postBuild | 8 +- .../s01exercicios/emprestimo01.ipynb | 113 +----------------- 2 files changed, 5 insertions(+), 116 deletions(-) diff --git a/binder/postBuild b/binder/postBuild index 576acb1..17334ad 100644 --- a/binder/postBuild +++ b/binder/postBuild @@ -1,9 +1,9 @@ -# Git Jupyter Lab extension -jupyter labextension install @jupyterlab/git -jupyter serverextension enable --py jupyterlab_git +# Git Jupyter Lab extension +# jupyter labextension install @jupyterlab/git +# jupyter serverextension enable --py jupyterlab_git # Github Jupyter Lab extension -jupyter labextension install @jupyterlab/github +# jupyter labextension install @jupyterlab/github # Building everything jupyter lab build diff --git a/notebook/pt/c51oo/s01emprestimo/s01exercicios/emprestimo01.ipynb b/notebook/pt/c51oo/s01emprestimo/s01exercicios/emprestimo01.ipynb index bf5d695..0fac4c9 100644 --- a/notebook/pt/c51oo/s01emprestimo/s01exercicios/emprestimo01.ipynb +++ b/notebook/pt/c51oo/s01emprestimo/s01exercicios/emprestimo01.ipynb @@ -1,112 +1 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Exercício do Empréstimo\n", - "\n", - "![Enunciado](poo01-orientacao-objetos-exercicio-financiamento.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exercício Parte 1 - Escrevendo um Módulo\n", - "\n", - "Dado o problema descrito, escreva um programa que calcule as parcelas de um empréstimo para os seguintes valores:\n", - "* S: 200\n", - "* N: 5\n", - "* J: 1%" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exercício Parte 2 - Escrevendo um Módulo\n", - "\n", - "Reescreva o código acima de forma que seu programa faça uso de uma função que seja responsável pelo cálculo de uma parcela X do empréstimo." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exercício Parte 3 - Minimizando os Parâmetros\n", - "\n", - "Modifique o módulo para que o cliente (que chama a função) use o mínimo de parâmetros possíveis. Para isso a sua função precisa estar ciente do estado corrente do empréstimo, ou seja, ela precisará saber qual a próxima parcela que ela precisa calcular sem que lhe seja informado, para isso:\n", - "* evite informar recorrentemente como parâmetros dados sobre as características do empréstimo;\n", - "* evite usar informações de controle (e.g., parcela corrente) como parâmetro." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exercício Parte 4 - Minimizando os Parâmetros\n", - "\n", - "Partindo da Solução 2, modifique a forma como você representa o empréstimo, de forma que a função que calcula a próxima parcela receba um único parâmetro." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Exercício Parte 5 - Múltiplos Empréstimos\n", - "\n", - "Considere que há múltiplos empréstimos que podem ser controlados em paralelo. O seu programa deve ser capaz de informar as parcelas de mais de um empréstimo, mantendo um controle para cada empréstimos separadamente. Você deve decidir se deve modificar o programa principal, a função ou ambos para atender esse requisito da melhor forma possível." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "C", - "language": "c", - "name": "c" - }, - "language_info": { - "file_extension": ".c", - "mimetype": "text/plain", - "name": "c" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} +{"metadata":{"kernelspec":{"display_name":"C","language":"c","name":"c"},"language_info":{"file_extension":".c","mimetype":"text/plain","name":"c"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Exercício do Empréstimo\n\nEm um financiamento com juros compostos e número de parcelas fixas parte-se dos seguintes parâmetros:\n* `S` - valor da primeira parcela\n* `N` - número de parcelas\n* `J` - percentual de juros mensal\n\nA primeira parcela a ser paga do financiamento é sempre igual a `S`. A partir daí é feita uma atualização mensal da parcela, em que cada nova parcela é calculada a partir da parcela do mês anterior, conforme a fórmula:\n\n> #### Parcelamês = Parcelamês-1 * (1 + `J` / 100)\n\nO financiamento encerra quando as `N` parcelas são pagas.\n\nExemplo:\n* `S`: 200\n* `N`: 5\n* `J`: 1%\n\nParcelas do financiamento:\n`200`; `202`; `204.02`; `206.06`; `208.12`","metadata":{}},{"cell_type":"markdown","source":"## Exercício Parte 1 - Escrevendo um Módulo\n\nDado o problema descrito, escreva um programa que calcule as parcelas de um empréstimo para os seguintes valores:\n* `S`: 200\n* `N`: 5\n* `J`: 1%","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Exercício Parte 2 - Escrevendo um Módulo\n\nReescreva o código acima de forma que seu programa faça uso de uma função que seja responsável pelo cálculo de uma parcela X do empréstimo. Utilize as boas práticas de modularização que você aprendeu, evitando dependências do módulo com o programa principal.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Exercício Parte 3 - Minimizando os Parâmetros\n\nModifique o módulo para que o cliente (que chama a função) use o mínimo de parâmetros possíveis. Para isso a sua função precisa estar ciente do estado corrente do empréstimo, ou seja, ela precisará saber qual a próxima parcela que ela precisa calcular sem que lhe seja informado, para isso:\n* evite informar recorrentemente como parâmetros dados sobre as características do empréstimo;\n* evite usar informações de controle (e.g., parcela corrente) como parâmetro.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Exercício Parte 4 - Minimizando os Parâmetros\n\nPartindo da Solução da Parte 2, modifique a forma como você representa o empréstimo, de forma que a função que calcula a próxima parcela receba um único parâmetro.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Exercício Parte 5 - Múltiplos Empréstimos\n\nConsidere que há múltiplos empréstimos que podem ser controlados em paralelo. O seu programa deve ser capaz de informar as parcelas de mais de um empréstimo, mantendo um controle para cada empréstimo separadamente. Você deve decidir qual das soluções tomará como ponto de partida, se deve modificar o programa principal, a função ou ambos para atender esse requisito da melhor forma possível.\n\nPor exemplo, suponha os seguintes dois empréstimos em paralelo:\n\n### Empréstimo 1\n* `S`: 200\n* `N`: 5\n* `J`: 1%\n\n### Empréstimo 2\n* `S`: 500\n* `N`: 7\n* `J`: 2%\n\nA saída esperada é:\n~~~\nEmprestimo 1: parcela 1 eh 200.00\nEmprestimo 2: parcela 1 eh 500.00\nEmprestimo 1: parcela 2 eh 202.00\nEmprestimo 2: parcela 2 eh 510.00\nEmprestimo 1: parcela 3 eh 204.02\nEmprestimo 2: parcela 3 eh 520.20\nEmprestimo 1: parcela 4 eh 206.06\nEmprestimo 2: parcela 4 eh 530.60\nEmprestimo 1: parcela 5 eh 208.12\nEmprestimo 2: parcela 5 eh 541.22\nEmprestimo 2: parcela 6 eh 552.04\nEmprestimo 2: parcela 7 eh 563.08\n~~~\n\nO exemplo mostra dois empréstimos, mas a estrutura deve ser genérica o suficiente para controlar N empréstimos em paralelo.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]} \ No newline at end of file