Ohjelmointi 1, syksy 2023, luento08

Olin tällä sivulla luennon aikana Agorassa

Please to interact with this component.

.
Olin tällä sivulla luennon aikana Zoomissa

Please to interact with this component.

.
Olin tällä sivulla videon katsomisen aikana

Please to interact with this component.

.
Katson sivua etukäteen

Please to interact with this component.

.

# runner
# L08

8. luento: ti 26.9.2023 klo 14:15-16:00: Ehtolauseet, String

Pääteohjaukset

Animaatiot

Etsikää monisteesta Animaatio-tekstiä ja suorittakaan niitä!

# ae_keskiarvo

Versionhallinta

Muutamia yleisimpiä git-versiohallinnan komentoja.
Muutamia yleisimpiä git-versiohallinnan komentoja.
# umlGIT
HUOM! Tätä kuvaa ei pidä tulkita UML:än sekvenssikaavioksi!working directoryindex/stagelocal repositoryremote repositoryworking directoryindex/stagelocal repositoryremote repositoryclone <osoite>Annetaan kerran/koneadd --allKun tiedostot muuttuneetcommit -mpushpull or rebaseKun tasataan kaverin kanssafetchmergecheckout HEADcheckoutdiff HEADdiff

Etäsäilytykseen ei muutoksia kannata tallentaa jokaisen sitoutumisen jälkeen, vaan kokonaisuuksina sitten, kun on varma, että kaikki on kunnossa. Tarvittaessa on helpompi peruuttaa paikallisia muutoksia kuin etäsäilytykseen joutuneita muutoksia.

11 Jun 24

Ehtolauseet

# Plugin1
# k13

Kuva 13: if-rakenne vuokaaviona.

if (ehto) 
{
  lause1;
  lause2;
  ...
  lauseN;
}

Kysymyksiä:

# helloeka

Merkkijonot

Aliohjelmakutsuihin EI tule tyyppejä (ellei samalla luoda new:llä uusia olioita, mutta siitä myöhemmin). Olisi 'väärin' kirjoittaa seuraavasti.

y = double Math.Sin(double x); // TÄMÄ ON VÄÄRIN!!! Kutsuun ei tule tyyppejä!

Alla oleva on oikein (olettaen että x on hyvin määritelty).

y = Math.Sin(x);
# jonoja1

Muista!

  • string on muuttumaton (immutable). Vertaa tienviitta. Teksti ei voi muuttua.
  • jos tarvitsee muuttaa sisältöä, niin valinta on StringBuilder. Vertaa vaikka junan info-taulu.

Arvot muistissa

Muistele robotin muistia

Muistissa voisi olla:

osoite 100:
00000000000000000000000000000101000000000000000000000011110111100000000000000000000000000000010100000000000000000000001111100110
...
osoite: 990:
00000101010011010110000101110100011100110110100100000000000000000000010101101101011000010111010001110011011010010000000000000000

Ihmisen olisi tuota aika vaikea lukea ja siksi jaetaan tavuihin (8bit) ja vielä tavu kahtia ja merkitään samalla miten kääntäjä ja ajon aikainen muistinhallinta olisi voinut jakaa muistia:

i:         100     0000 0000  0000 0000  0000 0000  0000 0101    (5)
mj:        104     0000 0000  0000 0000  0000 0011  1101 1110    (990) 
pituus:    108     0000 0000  0000 0000  0000 0000  0000 0101    (5)
mjPienena  112     0000 0000  0000 0000  0000 0011  1110 0110    (998) 
...
           990     0000 0101  0100 1101  0110 0001  0111 0100    (5 'M' 'a' 't')
           994     0111 0011  0110 1001  0000 0000  0000 0000    ('t' 'i')
           998     0000 0101  0110 1101  0110 0001  0111 0100    (5 'm' 'a' 't')
          1002     0111 0011  0110 1001  0000 0000  0000 0000    ('t' 'i')

Tätäkin on vielä hankala lukea, joten usein 4bit jonoa merkitään vastaavalla heksadesimaalisymbolilla:

00 00 00 05 00 00 03 DE 00 00 00 05 00 00 03 E6 ... 05 4D 61 74 74 69 00 00 05 6D 61 74 74 69 00 00

ja jaettuna miten kääntäjä ja muistinallokointi olisi saattanut paikat nimetä:

i:         100     00 00 00 05    (5)
mj:        104     00 00 03 DE    (990) 
pituus:    108     00 00 00 05    (5)
mjPienena  112     00 00 03 E6    (998) 
...
           990     05 4D 61 74    (5 'M' 'a' 't')
           994     74 69 00 00    ('t' 'i')
           998     05 6D 61 74    (5 'm' 'a' 't')
          1002     74 69 00 00    ('t' 'i')

Tätäkin on aika tylsä ajatella näin ja siksi pyrimme piirtämään saman ajatuksen visuaalisemmin:

Draw.io

# t61

vars.js

# matt1
# matt2
# mattianim
# simpleex2
# mattianim2
# lumiukko1
# ae_tolower

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.