{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "##
Introdução à Lógica de Programação
\n", "###
Um curso prático para estudantes das Ciências da Vida
\n", "---\n", "##
Aula 5. Estruturas de Repetição
\n", "#####
Instrutor: Pedro C. de Siracusa
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Computadores são muito eficientes em realizar tarefas bem definidas e repetitivas. E muito menos suscetíveis a cometer erros de cálculo do que nós humanos.\n", "Nesta aula vamos aprender a inserir **automação** em nossos programas utilizando **estruturas de repetição**.\n", "**Loops** (em português \"laços de repetição\") são estruturas que garantem que uma parte do código seja repetida várias vezes. Existem dois tipos fundamentais de loops: (i) ***for* loops** e (ii) ***while* loops**. Por simplicidade, veremos apenas o primeiro tipo neste curso." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Objetivos. \n", "\n", "Após esta aula você deverá ser capaz de:\n", "* Escrever trechos de código repetitivos usando estruturas de repetição;\n", "* Compreender o conceito de iteração;\n", "* Reconhecer casos de uso de variáveis de iteração e variáveis contadoras;\n", "* Percorrer programaticamente elementos em listas." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Loops e Iterações" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No jargão da computação, chamamos de **loop** uma estrutura contendo código que será executado múltiplas vezes. Cada repetição do loop é chamada **iteração**.\n", "\n", "A estrutura de um loop do tipo \"**for**\" é composta por:\n", "\n", "* uma **variável de iteração** (normalmente chamada `i` ou `j`, mas poderia ser qualquer outro nome, como por exemplo `dinossauro`);\n", "* uma **lista** com os elementos que desejamos percorrer. \n", "\n", "Para exemplificar, vamos construir uma estrutura que imprima no console a frase \"nova iteração\" algumas vezes.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Uma característica da variável de iteração é que ela, a cada iteração, assumirá o valor seguinte na lista percorrida. Podemos então imprimir no console o número de cada nova iteração." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos também percorrer listas com elementos não-numéricos por meio de loops." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Variáveis contadoras** (normalmente chamadas `ctr`) podem ser usadas para armazenar resultados de forma gradativa durante as iterações. Elas são usualmente inicializadas com valor zero e, a cada iteração, são atualizadas (normalmente somando-se 1).\n", "Usando variáveis contadoras podemos, por exemplo, calcular a soma de números em uma lista." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos também usar loops para percorrer strings, como se fossem uma lista de caracteres." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercícios." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ex 1.** Escreva a função `conta_sup` que recebe: uma lista `l` contendo valores numéricos; e um número `limite`. A função deve contar quantos elementos na lista `l` têm valor maior ou igual a `limite`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ex 2.** Escreva a função `busca_max` que recebe uma lista `l` contendo valores numéricos e retorna o valor máximo encontrado nela. O comportamento dessa função é equivalente ao da função `max`. No entanto, não use a função `max` neste exercício." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ex 3.** Escreva uma função `busca_primeiro_sup` que recebe: uma lista `l` contendo valores numéricos; e um número `limite`. A função deve retornar imediatamente assim que encontrar um elemento na lista `l` com valor maior que `limite`. Caso encontre um valor maior que o limtie, este valor deve ser retornado como resultado. Caso contrário, a função deve retornar uma string `\"Não encontrado\"`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ex 4.** Escreva uma função `complementaBases` que recebe como input uma sequência de bases de um fragmento de DNA e retorna as bases complementares." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }