{ "metadata": { "name": "Capitulo4_Lacos" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[Python para Desenvolvedores](http://ricardoduarte.github.io/python-para-desenvolvedores/#conteudo)\n", "===================================\n", "2ª edi\u00e7\u00e3o, revisada e ampliada\n", "-----------------------------------\n", "\n", "Cap\u00edtulo 4: La\u00e7os\n", "=============================\n", "_____________________________\n", "La\u00e7os (*loops*) s\u00e3o estruturas de repeti\u00e7\u00e3o, geralmente usados para processar cole\u00e7\u00f5es de dados, tais como linhas de um arquivo ou registros de um banco de dados, que precisam ser processados por um mesmo bloco de c\u00f3digo.\n", "\n", "For\n", "---\n", "\u00c9 a estrutura de repeti\u00e7\u00e3o mais usada no Python. A instru\u00e7\u00e3o aceita n\u00e3o s\u00f3 sequ\u00eancias est\u00e1ticas, mas tamb\u00e9m sequ\u00eancias geradas por iteradores. Iteradores s\u00e3o estruturas que permitem itera\u00e7\u00f5es, ou seja, acesso aos itens de uma cole\u00e7\u00e3o de elementos, de forma sequencial.\n", "\n", "![Exemplo de la\u00e7o](files/bpypd_diags3.png)\n", "\n", "Durante a execu\u00e7\u00e3o de um la\u00e7o *for*, a refer\u00eancia aponta para um elemento da sequ\u00eancia. A cada itera\u00e7\u00e3o, a refer\u00eancia \u00e9 atualizada, para que o bloco de c\u00f3digo do for processe o elemento correspondente.\n", "\n", "A clausula *break* interrompe o la\u00e7o e *continue* passa para a pr\u00f3xima itera\u00e7\u00e3o. O c\u00f3digo dentro do else \u00e9 executado ao final do la\u00e7o, a n\u00e3o ser que o la\u00e7o tenha sido interrompido por *break*.\n", "\n", "Sintaxe:\n", "\n", " for in :\n", " \n", " continue\n", " break\n", " else:\n", " \n", " \n", "Exemplo:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Soma de 0 a 99\n", "s = 0\n", "for x in range(1, 100):\n", " s = s + x\n", "print s" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "4950\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "A fun\u00e7\u00e3o `range(m, n, p)`, \u00e9 muito \u00fatil em la\u00e7os, pois retorna uma lista de inteiros, come\u00e7ando em `m` e menores que `n`, em passos de comprimento `p`, que podem ser usados como sequ\u00eancia para o la\u00e7o.\n", "\n", "While\n", "-----\n", "Executa um bloco de c\u00f3digo atendendo a uma condi\u00e7\u00e3o.\n", "\n", "Sintaxe:\n", "\n", " while :\n", " \n", " continue\n", " break\n", " else:\n", " \n", " \n", "O bloco de c\u00f3digo dentro do la\u00e7o *while* \u00e9 repetido enquanto a condi\u00e7\u00e3o do la\u00e7o estiver sendo avaliada como verdadeira.\n", " \n", "Exemplo:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Soma de 0 a 99\n", "s = 0\n", "x = 1\n", "\n", "while x < 100:\n", " s = s + x\n", " x = x + 1\n", "print s" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "4950\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "O la\u00e7o *while* \u00e9 adequado quando n\u00e3o h\u00e1 como determinar quantas itera\u00e7\u00f5es v\u00e3o ocorrer e n\u00e3o h\u00e1 uma sequ\u00eancia a seguir." ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "" ], "output_type": "pyout", "prompt_number": 1, "text": [ "" ] } ], "prompt_number": 1 } ], "metadata": {} } ] }