{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Aula 3 (09/03/2020)\n", "\n", "Objetivo: Ver o interpretador de Julia como uma calculadora poderosa, introduzir a noção de variáveis\n", "\n", "## Começando com o modo interativo do Julia.\n", "\n", "Quem quiser já pode instalar o ambiente de programação, usem esse [[https://julialang.org/][link]]\n", "\n", "Dentro do Julia (após chamar julia na linha de comando), vamos começar com números inteiros:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 + 2" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "120" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "40 * 3" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "42.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "84 / 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notem que nesse caso, houve uma mudança de tipos, pois 84 e 2 são inteiros e o resultado\n", "é um número em ponto flutuante (float)\n", "\n", "Também é possível pedir o resultado inteiro usando o operador div:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "42" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "div(84,2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Também dá para fazer a exponenciação:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2147483648" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2^31" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Expressões mais complexas também podem ser calculadas:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "39" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "23 + 2 * 2 + 3 * 4" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Sim, a precedência de operadores usual também é válida em Julia. Mas, ai\n", "vem a primeira lição de programação: * Escreva para humanos, não para máquinas *" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "23 + (2 * 2) + (3 * 4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Em julia também podemos fazer operações com números em ponto flutuante:\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "73.79" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "23.5 * 3.14" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ou\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "12.5 / 2.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Acima temos mais um exemplo de código escrito para pessoas, ao se escrever\n", "2.0 estamos deixando claro que o segundo parâmetro é um número float.\n", "\n", "É importante saber que números em ponto flutuante tem precisão limitada, logo não se espante com resultados inesperados como abaixo:\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.19999999999999996" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1.2 - 1.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ou\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.30000000000000004" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0.1 + 0.2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ou ainda\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "10e15 + 1 - 10e15" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Um outro operador interessante é o % que faz o resto da divisão\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "4 % 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Variáveis e seus Tipos\n", "\n", "Em Julia também temos o conceito de variáveis, que servem para armazenar os\n", "diferentes conteúdos de dados possíveis." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 7\n", "2 + a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "É importante notar que as variáveis em Julia podem receber novos valores e o tipo\n", "da variável depende do que foi atrubuído inicialmente." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Int64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = 3\n", "a = a + 1\n", "typeof(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Aproveitando o momento, podemos ver que há vários tipos primitivos em Julia, sendo os\n", "principais:\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "String" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "typeof(1)\n", "typeof(1.1)\n", "typeof(\"Bom dia\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Falando em strings, elas são definidas por conjuntos de caracteres entre aspas como:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"Outra String\"" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s1 = \"Olha que legal\"\n", "s2 = \"Outra String\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dá também para fazer operações como strings como concatenação:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"Tenha um Bom dia\"" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s1 = \"Tenha um\"\n", "s2 = \" Bom dia\"\n", "s3 = s1 * s2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ou potência:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"Nao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegasNao vou mais fazer coisas que possam desagradar os meus colegas\"" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"Nao vou mais fazer coisas que possam desagradar os meus colegas\"\n", "s ^ 10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ainda sobre variáveis, há umas regras com relação aos seus nomes, tem que\n", "começar com uma letra, pode ter dígitos e não pode ser uma palavra reservada. É\n", "bom notar que Julia por ser uma linguagem moderna, aceita nomes de caracteres em\n", "unicode, pode exemplo" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "δ = 2 # Para se fazer o delta, deve se digitar \\ seguido de delta, seguido de " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Saída de dados\n", "\n", "Para fazer saídas usam-se dois comandos, print() e o println(), sendo que o primeiro não pula linha e o segundo pula." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello World!\n", "Ola, mundo!\n" ] } ], "source": [ "print(\"Hello \")\n", "println(\"World!\")\n", "println(\"Ola, mundo!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Para evitar que se digitem muitos caracteres, por vezes podemos usar \"açucares sintáticos\"." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 1\n", "x = x + 1\n", "x += 1 # forma equivalente a acima" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.3.1", "language": "julia", "name": "julia-1.3" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.3.1" } }, "nbformat": 4, "nbformat_minor": 2 }