Exercícios do capítulo 6

Exercício 6-1

function compare(x,y)
    if x > y
        1
    elseif x < y
        -1
    else
        0
    end
end
julia> compare(10,5)
1

julia> compare(10,-5)
1

julia> compare(-10,-5)
-1

julia> compare(-10,-10)
0

Exercício 6-2

Use desenvolvimento incremental para escrever a função hipotenusa que returna o comprimento a hipotenusa de um triângulo retângulo a partir do comprimento dos catetos.


# hipotenusa 2 entradas e uma saída
function hipotenusa(a,b)
    return 0.0
end

function hipotenusa(a,b)
     = a*a
     = b*b
    
    return 0.0
end


function hipotenusa(a,b)
     = a*a
     = b*b

     =  + 
    return 
end


function hipotenusa(a,b)
     = a*a
     = b*b
    
     =  + 
    return sqrt()
end


hipotenusa(a,b) = sqrt(a*a + b*b)

(observe que existe a função hypot na biblioteca padrão da Julia)

[]

Exercícios do capítulo 05

Exercício 5-1

Como exercício, desenhe o diagrama de pilha (stack diagram) da função printn chamado com s = "Hello" e n = 2.

function printn(s, n)
    if n  0
        return
    end
    println(s)
    printn(s, n-1)
end
printn s = "Hello"
n = 2
printn s = "Hello"
n = 1
printn s = "Hello"
n = 0
function do_n(f, n, args...)
    if n <= 0
        return
    end
    f(args...)
    do_n(f, n-1, args...)
end

Exemplo:

julia> do_n(println, 10, "Uma linha")
Uma linha
Uma linha
Uma linha
Uma linha
Uma linha
Uma linha
Uma linha
Uma linha
Uma linha
Uma linha

Exercício 5-2

A função Julia time retorna a hora atual no meridiano de Greenwich em segundos desde primeiro de janeiro de 1970.

[]

Exercícios do capítuo 3

Exercício 3-1

Programa original:

function printlyrics()
    println("I'm a lumberjack, and I'm okay.")
    println("I sleep all night and I work all day.")
end

function repeatlyrics()
    printlyrics()
    printlyrics()
end

repeatlyrics()

Mova a última linha do programa para o topo de modo que a chamada de função apareça antes das definições. Execute o programa e veja a mensagem de erro que obtemos.

O que acontece quando executamos o programa original:

 pjabardo@vazao80 > julia script.jl
I'm a lumberjack, and I'm okay.
I sleep all night and I work all day.
I'm a lumberjack, and I'm okay.
 I sleep all night and I work all day.

Movendo para o topo a última linha, temos o seguinte script:

[]

Caos determinísico e gráficos impressionantes com Makie

Existem muitas opções para gerar gráficos em Julia. A maior parte das soluções envolve encapsular algum outro ambiente. Mas existe pelo menos um pacote nativo do Julia: Makie. Este pacote faz mais do que simplesmente plotar gráficos bonitinhos: é um framework de visualização interativa (entre outras coisas). Logo faço um post sobre o Makie e pretendo escrever um tutorial para iniciantes.

Aqui quero mostrar algumas visualizações impressionantes. Aqui tem um vídeo muito bom explicando o famoso efeito borboleta. Este vídeo usou Julia e o pacote Makie com resultados impressionantes:

[]

Vídeo da aula 2

O vídeo da aula 2 está aqui

Caracteres unicode

No começo da era dos computadores, seu uso principal era calcular coisas. Mas logo se percebeu que o uso do computador poderia ser muito maior. Uma das necessidades era representar texto no computador. A solução encontrada foi atribuir um número a cada caracter. Naturalmente cada fabricante usou uma codificação diferente. Então resolveram padronizar isso e surgiu o ASCII que codificava os caracteres usando 7 bits. Infelizmente isso era suficiente para os caracteres usados em informática e os caracteres da língua inglesa.

[]

Exercícios da aula 01 - capítulos 1 e 2

Na segunda aula vou fazer uma recapitulação.

Vamos começar pelo capítulo 1.

Exercícios do capítulo 1

Exercício 1-1

Este exercício consiste em brincar com a sintaxe básica de Julia. Eu fiz um screencast com estas brincadeiras. Não é um vídeo no senso comum da palavra. Eu usei uma ferramenta chamada asciinema caso alguém tenha interesse.

asciicast

Exercício 1-2

  1. Quantos segundos há em 42 minutos e 42 segundos? julia> 42*60 + 42 2562

    []