{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Aula de primeiro de Abril ##\n", "\n", "A ideia da aula de hoje é de se mostrar que há outra forma de se fazer um número arbitrário de repetições sem usar recursão, mas com o uso de laços.\n", "\n", "O primeiro a ser visto é o __while__ ou seja enquanto, na sua forma básica ele é da seguinte forma\n", "\n", "while condição\n", "\n", " comandos\n", "\n", "end\n", "\n", "Ou seja, enquando a condição for válida, os comandos são executados.\n", "Vamos a um exemplo:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "function regressiva(n)\n", " while n > 0\n", " print(n, \" \")\n", " n = n - 1\n", " end\n", " println(\"Fim\")\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Claro que a condição de parada pode ser mais complexa e o número de comandos dentro do corpo do __while__ pode ser variado, e sim, nada impede de se ter um __while__ dentro de outro __while__" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "regressivalenta (generic function with 1 method)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function regressivalenta(n)\n", " while n > 0\n", " print(n, \" \")\n", " i = 10\n", " while i > 0\n", " print(\"tic \")\n", " i = i - 1\n", " end\n", " println(\"...\")\n", " n = n - 1\n", " end\n", " println(\"Fim\")\n", "end" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5 tic tic tic tic tic tic tic tic tic tic ...\n", "4 tic tic tic tic tic tic tic tic tic tic ...\n", "3 tic tic tic tic tic tic tic tic tic tic ...\n", "2 tic tic tic tic tic tic tic tic tic tic ...\n", "1 tic tic tic tic tic tic tic tic tic tic ...\n", "Fim\n" ] } ], "source": [ "regressivalenta(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Para continuar, vamos refazer os mesmos exercícios da aula anterior, agora usando o __while__. São eles:\n", "* Verificar se um número é primo\n", "* Imprimir os n primeiros primos\n", "* Imprimir os n primeiros primos de Mersenne" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Escolha um dos exercícios de repetição das aulas anteriores para fazermos com o __while__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como vocês devem ter percebido um while que começa em 1 e vai até $n$, de um em um é muito usual. Logo há um comando que resume isso, o __for__\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "for j = 1:5\n", " println(j)\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Historicamente, o __for__ foi criado para acompanhar operações com vetores e matrizes, mas é usado em diversas situações atualmente. Em Julia o comando __for__ voltou as origens\n", "\n", "Agora escolha um exercício para resolvermos com o __for__ :)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Há dois comandos usados em laços, o __break__ e o __continue__ vamos ver como eles funcionam no __for__ abaixo:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "3\n", "5\n", "7\n", "9\n", "11\n" ] } ], "source": [ "for i in 1:20\n", " if i % 2 == 0\n", " continue\n", " end\n", " println(i)\n", " if i > 10\n", " break\n", " end\n", "end\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mas, notem que o uso de __continue__ e __break__ nem sempre ajuda a entender o código." ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.1.1", "language": "julia", "name": "julia-1.1" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.1.1" } }, "nbformat": 4, "nbformat_minor": 2 }