Julia. Les premiers pas.

using Dates

let # portée locale
    d = Dates.now()
    println("Daniel Hagnoul $d\n")
end
Daniel Hagnoul 2020-10-23T15:27:30.419

Variable, println, texte, type

let 
    x = 4
    y = 8
    println("x + y = $(x + y)")

    z = 1.25
    println("z = $z")

    str1 = "Un beau printemps"

    str2 = """Un beau printemps
    par une longue nuit
    étaoilée et froide."""

    println("str1 = $str1")

    println("str2 = $str2")

    println("trouve la position du premier char i dans str2 = $(findfirst(isequal('i'), str2))")
end
x + y = 12
z = 1.25
str1 = Un beau printemps
str2 = Un beau printemps
par une longue nuit
étaoilée et froide.
trouve la position du premier char i dans str2 = 11
let 
    x = Float64(2.589)

    println("x = $x")

    a = parse(Int64, "12")

    println("a = $a")
    
    chr = Char('a')
    
    println("chr = $chr")
    
    str = String("Un beau jour d'hiver !")
    
    println("str = $str ; length str = $(length(str)) ; dernier char de str = $(str[end])")
    
    println("de str[1] à str[6] = $(str[1:6])")
end
x = 2.589
a = 12
chr = a
str = Un beau jour d'hiver ! ; length str = 22 ; dernier char de str = !
de str[1] à str[6] = Un bea
let
    age = 15

    if 6 <= age < 12
        println("Vous avez 6 ans ou plus, mais mons de 12 ans.")
    elseif 12 <= age < 18
        println("Vous avez 12 ans ou plus, mais mons de 18 ans.")
    else
        println("Vous avez 18 ans ou plus.")
    end

    i = 1

    while i < 20
        if (i % 2) == 0
            println("i = $i")
        end
        i += 1
    end

    for j = 1:2, k = 3:2:13
        println((j, k))
    end
end
Vous avez 12 ans ou plus, mais mons de 18 ans.
i = 2
i = 4
i = 6
i = 8
i = 10
i = 12
i = 14
i = 16
i = 18
(1, 3)
(1, 5)
(1, 7)
(1, 9)
(1, 11)
(1, 13)
(2, 3)
(2, 5)
(2, 7)
(2, 9)
(2, 11)
(2, 13)

Arrondir

let 
    x = 1.77715
    y = round(x, RoundNearest; digits = 2)
    println("Float64 : $x ; le même Float64 RoundNearest avec deux décimales : $y")

    y = round(x, RoundUp; digits = 2)
    println("Float64 : $x ; le même Float64 RoundUp avec deux décimales : $y")

    y = round(x, RoundDown; digits = 2)
    println("Float64 : $x ; le même Float64 RoundDown avec deux décimales : $y")
end
Float64 : 1.77715 ; le même Float64 RoundNearest avec deux décimales : 1.78
Float64 : 1.77715 ; le même Float64 RoundUp avec deux décimales : 1.78
Float64 : 1.77715 ; le même Float64 RoundDown avec deux décimales : 1.77

Array

let
    a = [1, 2, 3, 4, 5, 2, 7, 2]

    println("a = $a")
    println("4 est dans a = $(4 in a)")

    splice!(a, 2:1, [8, 9, 10, 11])
    println("a = $a")

    println("nombre d'éléments dans a = $(length(a))")
    println("somme des éléments contenu dans a = $(sum(a))")

    ordres = [sin, cos, tan]

    for n in ordres
        println("$n(pi) = $(n(pi))")
    end

    #= 
        le 2020-10-23, VS_Code_1.50.1 avec l'extension julialang 1.0.8, 
        le débogeur signale une exception.
        Fonctionne bien sur Jupyter.
    =#
    b = [n * m for n in 1:2, m in 2:3]

    println("b = $b")

    f(k) = (k >= 2) ? true : false

    #= 
        le 2020-10-23, VS_Code_1.50.1 avec l'extension julialang 1.0.8, 
        le débogeur signale une exception pour count()
        Fonctionne bien sur Jupyter.
    =#
    println(count(f, [1, 2, 3, 4]))
end
a = [1, 2, 3, 4, 5, 2, 7, 2]
4 est dans a = true
a = [1, 8, 9, 10, 11, 2, 3, 4, 5, 2, 7, 2]
nombre d'éléments dans a = 12
somme des éléments contenu dans a = 64
sin(pi) = 1.2246467991473532e-16
cos(pi) = -1.0
tan(pi) = -1.2246467991473532e-16
b = [2 3; 4 6]
3
let
    #=
        Pour les Arrays, je vous recommande la déclaration explicite
        du type et des dimensions, cela vous évitera bien des erreurs
        lors du déboguage.

        En Julia l'index du premier élément d'un Array est 1 !
    =#

    a = Array{Int64, 1}([5])

    println(a)
    
    push!(a, 7, 8)
    
    println(a)
       
    b = Array{Int64, 1}([11, 22, 33])

    println(b)

    append!(a, b)
    
    println(a)
end
[5]
[5, 7, 8]
[11, 22, 33]
[5, 7, 8, 11, 22, 33]
let 
    a = Array{Int64, 1}([5])
    
    println(a)
    
    c = Array{Int64, 2}([101 201; 102 202; 103 203])

    println(c)

    append!(a, c)

    println(a)
end
[5]
[101 201; 102 202; 103 203]
[5, 101, 102, 103, 201, 202, 203]

Matrice

let
    #=
        Crée et initialise une matrice contenant des Float64 avec 
        une valeur par défaut.

        Dans Array{Float64, 2}, 2 signifie 2D, deux dimensions.

        (undef, (2, 3)) crée et initialise la matrice.

        (2, 3) est un Tuple donnant les dimensions (lignes, colonnes) de l'Array
    =#
    c = Array{Float64, 2}(undef, (2, 3))

    println(typeof(c), "\nc = $c")

    # remplir la matrice avec 1.25
    fill!(c, 1.25)

    println("c = $c", "\nc[1] = ", c[1], "\nc[6] = ", c[6])

    #=
        Numérotation des éléments de 1 à 6, 
        la colonne d'abord :

        [ 1 3 5 ]
        [ 2 4 6 ]
    =#

    c[1] = 1.5
    c[2] = 3.0
    c[3] = 4.5

    println("c = $c", "\nc[1] = ", c[1], "\nc[6] = ", c[6])
end
Array{Float64,2}
c = [0.0 5.9823903e-316 5.0e-324; 5.0e-324 5.0e-324 5.98239036e-316]
c = [1.25 1.25 1.25; 1.25 1.25 1.25]
c[1] = 1.25
c[6] = 1.25
c = [1.5 4.5 1.25; 3.0 1.25 1.25]
c[1] = 1.5
c[6] = 1.25
let 
    a = Array{Int64, 1}([5])
    
    println(a)
    
    c = Array{Int64, 2}([101 201; 102 202; 103 203])

    println(c)

    push!(a, c... )

    println(a)
end
[5]
[101 201; 102 202; 103 203]
[5, 101, 102, 103, 201, 202, 203]

Fractions

let
    # x et y sont des fractions
    x = 3//2
    y = inv(x) # 2//3
    z = 3.0 * y
    println("x = $x\ny = $y\nz = $z")
end
x = 3//2
y = 2//3
z = 2.0

Licence Creative Commons Attribution 2.0 Belgique