Ohjelmointi 1, syksy 2022, luento 18

# L18

18. luento: ti 25.10.2022 klo 14:15-16:00: Tiedoston lukeminen ja käsittely

# git

Luentoesimerkkien haku versionhallinnasta

  • siirry hakemistoon johon haluat esimerkit

  • ekalla kertaa (tai jos olet ennen su 23.10 hakenut niin tuhoa vanha)

    git clone https://gitlab.jyu.fi/tie/ohj1/2022s/esimerkit.git .

    jatkossa samassa hakemistossa

    git pull
  • kopsi tuo hakemisto tai ainakin sinua kiinnostava alihakemisto toiseen paikkaan

  • periaatteessa tuonne syntyneen solutionin voi avata sellaisenaankin, mutta jos siihen tekee muutoksia, niin seuraavalla pull-komennolla tulee helposti konflikti

Mitä osataan?

Kurssin aikana sinun on tarkoitus oppia seuraavia asioita (osaamisen taso sovelletulla Bloomin asteikolla: 1=muistaa, 2=ymmärtää, 3=osaa soveltaa, 4=osaa analysoida, 5=osaa arvioida, 6=osaa luoda)

Siirrä alla osaamisesi (punainen pallukka) aina sitä vastaavalle kohdalle. Keltainen ruutu on tavoite johon tulisi päästä kurssin lopuksi. Ruksaa ensin muokkaa.

# goaltable2

Please to interact with this component.

Osattava asia123456
Rakenteisen ohjelmoinnin perusajatus o
Algoritminen ajattelu o
C#-kielen perusteet o
Peräkkäisyys o
Muuttujat o
Aliohjelmat ja funktiot o
Parametrin välitys o
Ehtolauseet o
Silmukat o
Taulukot o
Tiedostot ohjelmasta käytettynä o
Olioiden käyttö o
Yksikkötestit (TDD) o
Debuggerin käyttö o
Lukujärjestelmät, ASCII-koodi o
Rekursio o
Dokumentointi ja sen lukeminen o

Konvoluutio-demon malliohjelma

  • Demo 9, B1-3 harjoittelu
  • konvo.jar
    • lataa ja aja
      • java -jar konvo.jar
      • laita yläreunassa olevalle riville kuvan www-osoite ja lokaalilla levyllä olevan kuvan koko tiedostopolku
      • valitse kuinka monta kertaa mikäkin maskimatriisin ajetaan
      • paina Aja muunnokset

Filtteri

Filtteri on ohjelma, joka lukeee standardi syötettä (standard input, stdin) ja tekee riveille jotakin ja tulostaa sen standarditulosvirtaan (standard out, stdout).

# isoksi

Tyypillisesti filtteriohjelmia ajetaan komentoriviltä ja niitä sovelletaan johonkin tiedostoon. Esimerkiksi tiedosto voisi olla:

# kissa

Esimerkiksi syöte voidaan antaa suuntaamalla tulos jostakin tiedostosta:

# shell

Edellä

dotnet-run

on erikseen TIMiin tehty komento, jotta käännetty ohjelma voidaan ajaa. Omassa koneessa vastaava tehtäisiin

dotnet run <kissa.txt

jos ohjelma on käännetty VisualStudiolla ja ollaan projektin hakemistossa tai sitten ohjelma pitää kääntää komentoriviltä

Tällöin ajetaan:

./Isoksi.exe <kissa.txt

Ohjelmalle voidaan putkittaa toisen ohjelman tulos, esim grep etsii tiedostosta rivit joilla toteutuu haluttu regular expresstion. Eli jos haluttaisiin muuttaa isoksi vain rivit joilla aluneprin esiintyy pienellä kirjoitettu kissa, se voitaisiin tehdä:

# shell2

Vastaavasti jos haluttaisiin näkyviin vain rivit, joissa muunnoksen jälkeen lukee KISSA, voitaisiin muunnos ajaa ensin ja sitten tehdä grepillä etsiminen:

# shell3

Hyvin yleistä on myös suunnata filtterin tulos tiedostoon:

# shell4
# shell5
# shell6

Tiedoston käsittely tiedostona

# tiedostoisoksi
# kotustxt
# kainoisoksi

Hirsiauta

  • demo9 tehtävänä
  • tarkoitus auttaa hirsipuun pelaamisessa

Demoihin käytettyjen aikojen laskeminen

  • Aika.cs - esimerkki, jossa yhdistetään kahden erilaisen tiedoston sisältöä
  • Syksyn 2019 videot: Osa 1 MP4 alkuperäinen
  • Exceliin:
    • copy/paste syntynyt tiedosto
    • lisätään rpist,raika (round)
    • aluelle nimeksi data
    • filtteriksi
    • lisätään pivot data-alueesta
    • riveiksi demo ja rpist
    • sarkkeiksi raika
    • sisällöksi count(raika)

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