Dagens tema. Perl: Mer om regulære uttrykk Filer Lister og tabeller Kompilering og interpretering (kapittel ) IN 211 Programmeringsspråk
|
|
- Rebekka Bø
- 4 år siden
- Visninger:
Transkript
1 Dagens tema Perl: Mer om regulære uttrykk Filer Lister og tabeller Kompilering og interpretering (kapittel ) Ark 1 av 24 Forelesning
2 Regulære uttrykk i Perl Et regulært uttrykk er et mønster det kan søkes etter (i en gitt tekststreng). Søking I Perl brukes m-operatoren til søking. Hvilken tekst det skal søkes i, angis med =~: if ($t =~ m/per/i) {... ; (Modifikatoren i angir at det ikke skal skilles på små og store bokstaver.) Endring Ofte er man interessert i å bytte ut det man søker etter med en annen tekst. Dette gjøres med operatoren s (for «substitute»): $t =~ s/per/kari/; Forelesning Ark 2 av 24
3 Oppbygging av regulære uttrykk De fleste tegn i et regulært uttrykk matcher seg selv. m/perl/ matcher for eksempel alle tekster som inneholder Perl. Spesialtegn ^ angir starten på teksten $ angir slutten på teksten. matcher et vilkårlig tegn * angir at den tilhørende konstruksjonen må forekomme 0 eller flere ganger + 1 eller flere ganger? 0 eller 1 gang () grupperer deler av mønsteret angir alternativer Forelesning Ark 3 av 24
4 Ved å sette en \ foran et spesialtegn, behandles dette som et vanlig tegn. \ foran en bokstav blir til et spesialtegn: \d vilkårlig siffer \w alfanumerisk tegn (bokstav/siffer/) \s tegn med luft (blank/tabulator/linjeskift/... ) Eksempel Et engelsk desimaltall kan forekomme i flere former, for eksempel: "2", "3.", " 0.7", ".32", men ikke "" (tom), ".", "1.2.3" eller "2.a". Et passende regulært uttrykk er m/^?(\d+\.?\d* \.\d+)$/ Forelesning Ark 4 av 24
5 Sideeffekter Etter et vellykket søk vil $1 inneholde det som passet i første parentessett, $2 det andre, osv. Dermed kan man plukke frem akkurat de deler av teksten man ønsker: if (m/^(side Page):\s*(\d+)\s+(\d+)\s*$/) { $norsk = ($1 eq "Side"); $num1 = $2; $num2 = $3; Forelesning Ark 5 av 24
6 Lesbarhet Det er lett å skrive uleselige programmer i Perl, særlig i forbindelse med regulære uttrykk. Eksempel I programmet psfilter som plukker ut tekst fra en PostScript-fil, finnes følgende kode: while (<>) { $AnyFound = 0; s/\\\(/\x1b/g; s/\\\)/\x1c/g; s/\\\\/\x1d/g; s/\)[lmnoqrst]\(//g if $Dvips; while (s/^([^(]*)\(([^()]*(\([^()]*\))?[^()]*)\)//) { $T = $2; $T =~ s/\\(\d{1,3)/sprintf("%c",oct($1))/eg; print " " x length($1), " $T "; $AnyFound = 1; print "\n" if $AnyFound $Keep; Dette er typisk «bruk og kast»-kode. Forelesning Ark 6 av 24
7 Fil-operasjoner Et program som skal foreta tekstbehandling, må kunne håndtere filer på en enkel måte. Det kan Perl. Åpning av filer for lesning Operatoren open brukes til å åpne filer: open(f, "fil.data"); Filvariable (som F) har ingen spesialtegn først. Man bør alltid sjekke om en fil finnes, og den vanlige måten å gjøre dette på i Perl er med die: open(f, "fil.data") die "Kan ikke lese fil.data.\n"; Forelesning Ark 7 av 24
8 Å lese fra filer I Perl leser man nesten alltid filen linje for linje: $linje = <F>; Linjeskilletegnet («\n») følger med på lasset; den kan fjernes med kallet chomp($linje). Ofte benytter man en løkke for å lese en og en linje: while ($linje = <F>) { print $linje unless $linje eq "\n"; Denne koden kopierer alle ikke-tomme linjer. Hvis alle linjer fra filen er lest, vil <F> returnere undef. Dette kan eventuelt testes med defined. Her vil en slik test være unødvendig undef tolkes uansett som false. Forelesning Ark 8 av 24
9 Åpning av filer for skriving Ved å benytte en «>» foran filnavnet angir vi at filen skal åpnes for skriving: open(fx, ">fil.data") die "Kan ikke lage fil.data.\n"; Å skrive til filer print-setningen brukes også for å skrive til filer: print FX "En test.\n"; Da er det ikke komma etter filvariabelen! Forelesning Ark 9 av 24
10 Å lese og skrive mot programmer Man kan lese fra et program i stedet for fra en fil: open(dir, "ls -l ") die "Klarte ikke kjøre ls.\n"; while ($fil = <DIR>) {... close(dir); Tilsvarende kan man sende utskriften rett til et program: open(printer, " print -pipe") die "Klarte ikke å kjøre print.\n"; print PRINTER "Dette er en utskrift.\n"; close(printer); Forelesning Ark 10 av 24
11 Datastrukturer Perl har kun to typer datastrukturer: lister og tabeller. Lister Perls lister tilsvarer vektorer i Java og C, men er mer fleksible. Antall elementer behøver ikke angis, og kan variere over tid. Listevariable har alltid først i navnet = ("Dag","Anne","Irene","Frøydis"); sort sorterer en liste: sort(@navn) gir = ("Anne", "Dag", "Frøydis", "Irene") shift fjerner første element i listen: shift(@navn) gir = "Dag" Nå har listen kun tre elementer. pop fjerner siste elementet i listen: pop(@navn) gir = "Frøydis" Nå er kun "Anne" og "Irene" Forelesning Ark 11 av 24
12 push legger ett eller flere nye elementer bakerst i listen: push(@navn,"ida") gir = ("Anne","Irene","Ida") Man kan også be om et vilkårlig element i listen: $navn[0] gir = "Anne" Nummereringen starter med 0. NB! Her skal det brukes $ siden det er snakk om ett element. Hakeparentesene ([...]) angir at det er snakk om en liste. Siste element i har indeksen $#navn. Vi kan gå gjennom alle elementene i en liste ved hjelp av foreach: foreach $x (@navn) { print $x; $n++; if ($n%5 == 0) {print "\n"; Forelesning Ark 12 av 24
13 Kontekst Alle vanlige Perl-operatorer kan brukes i to sammenhenger (kontekster): Skalar kontekst er når det forventes én verdi (tall eller tekst), som i $lengde = gir 3 Listekontekst er når det forventes en = sort(@navn) gir = ("Anne","Ida","Irene") Effekten av en operator vil altså avhenge av i hvilken sammenheng den brukes. Vi kan tenke oss at det er to beslektede operatorer med samme navn. Noen ganger kan dette ha en uventet effekt. I setningen push(@liste, <F>); er andre parameter i listekontekst, så alle resterende linjer av F vil bli lest inn og lagt inn Forelesning Ark 13 av 24
14 Tabeller Tabeller («hash»-er) er som lister, men indeksen (nøkkelen) er en tekst i stedet for et heltall. Tabellnavn starter alltid med en %: %alder = ( "Dag" => 49, "Anne" => 43 ); print "Dag er ", $alder{"dag", " år.\n"; vil skrive «Dag er 49 år.» Her er det krøllparentesene ({...) som angir at det er snakk om en tabell. Det er lett å sette inn nye elementer: $alder{"irene" = 18; Nyttige operasjoner for tabeller: keys gir en liste med alle tabellens nøkler i vilkårlig rekkefølge. values gir en liste med alle verdiene. Forelesning Ark 14 av 24
15 Utskrift av en tabell For å skrive ut en tabell, må vi gå gjennom den element for element: foreach $person (sort(keys(%alder))) { print "$person er $alder{$person år.\n."; Dette gir følgende utskrift: Anne er 43 år. Dag er 49 år. Ireneer18år. Forelesning Ark 15 av 24
16 Eksempel Én liste og én tabell er alltid inneholder programmets parametre. %ENV inneholder alle omgivelsesvariablene. Unix-programmet printenv skriver ut definerte omgivelsesvariable: > printenv USER ragnhilk > printenv PRINTER lucida I Perl kan vi skrive en forbedret versjon arg som kan håndtere mer enn én parameter: #! /local/bin/perl -w foreach $arg (@ARGV) { print "$arg = $ENV{$arg\n" if $ENV{$arg; exit 0; Den brukes slik: > arg USER XX PRINTER USER = ragnhilk PRINTER = lucida Forelesning Ark 16 av 24
17 Funksjoner Det er enkelt å lage funksjoner i Perl. Parametre overføres i Lokale variable deklareres med my. sub Sum { my $res = 0; foreach $tall (@_) { $res += $tall; return $res; Funksjoner kan stå omtrent hvor som helst i koden, men plasseres vanligvis sist. Funksjoner kalles med & foran navnet: &Sum(1,2,3,7) gir = 13 Forelesning Ark 17 av 24
18 Den implisitte variabelen $ Variabelen $ er meget spesiell: Hvis vi utelater en variabel der det forventes en, mener vi $. Disse to setningene betyr dermed det samme: print; print $_; Denne forenklingen brukes ofte i forbindelse med løkker: foreach (@_) { $res += $_; En slik «videreutvikling» av et program er typisk for Perl. Forelesning Ark 18 av 24
19 Filer à la Unix-filtre Unix-filtre som cat, head, sort, grep og andre bruker filer på en spesiell måte: cat fil1 fil2 fil3 vil lese de tre angitte filene i rekkefølge. cat uten filparametre vil lese fra standard innfil (som vanligvis er tastaturet). I Perl finnes en egen operator for dette: <>. Perls versjon av cat kan derfor skrives slik: #! /local/bin/perl -w while (<>) { print; exit 0; Dette skjer: 1. Hver linje leses inn i $. 2. print skriver ut linjen. 3. Linjeskilletegnet («\n») følger med inn i $ og skrives dermed ut av print. 4. Til sist avsluttes med statusverdi 0. Forelesning Ark 19 av 24
20 Programmeringsspråket L Dette språket er en miniutgave av Logla som brukes i den siste obligatoriske oppgaven. L har ti heltallsvariable: v0, v1,..., v9. L har følgende setninger: Innlesning:? v x ber brukeren om et tall som plasseres i v x. Utskrift:! v x skriver ut innholdet i v x. Beregning: v x = v y + heltall v x = v y + v z v x = v y - heltall v x = v y - v z Forelesning Ark 20 av 24
21 Eksempel?v1?v2 v3=v1+v2!v3 Programmet leser to tall, beregner summen og skriver den ut. Kjøring > lp1.l Gi verdi til v1: 17 Gi verdi til v2: 127 v3 har verdien: 144 Forelesning Ark 21 av 24
22 Interpretering Et program interpreteres når det finnes et annet program som leser det inn og så simulerer operasjonene. En interpret for L #!/usr/bin/perl -w $filnavn = $ARGV[0]; open (FIL, $filnavn) die "Kan ikke åpne $filnavn\n"; while (defined ($linje = <FIL>)) { chomp($linje); if ($linje =~ /^!v(\d)$/) { print ("v$1 har verdien: $var[$1]\n"); elsif ($linje =~ /^\?v(\d)$/) { print ("Gi verdi til v$1: "); $var[$1] = <STDIN>; chomp($var[$1]); elsif ($linje =~ /^v(\d)=v(\d)([+-])v(\d)$/) { if ($3 eq "+") { $var[$1] = $var[$2] + $var[$4]; else { $var[$1] = $var[$2] - $var[$4]; elsif ($linje =~ /^v(\d)=v(\d)([+-])(\d+)$/) { if ($3 eq "+") { $var[$1] = $var[$2] + $4; else { $var[$1] = $var[$2] - $4; else { die "Forstår ikke linjen:\n$linje"; close FIL die "Kan ikke lukke $filnavn\n"; exit 0; Forelesning Ark 22 av 24
23 Kompilering En kompilator oversetter et program til et annet språk, for eksempel maskinspråk. Eksempel Et lite L-program kan se slik ut:?v1?v2 v3=v1+v2!v3 Når det er kompilert over til Perl kan det se slik ut: #!/usr/bin/perl print "Gi verdi til v1: "; $v1 = <STDIN>; chomp($v1); print "Gi verdi til v2: "; $v2 = <STDIN>; chomp($v2); $v3 = $v1 + $v2; print "v3 har verdien: $v3\n"; Forelesning Ark 23 av 24
24 En kompilator for L til Perl #!/usr/bin/perl -w $filnavn = $ARGV[0]; open (INNFIL, $filnavn) die "Kan ikke åpne $filnavn\n"; open (UTFIL, ">out.pl") die "Kan ikke skrive til out.pl"; print UTFIL "\#!/usr/bin/perl\n"; while (defined ($linje = <INNFIL>)) { chomp($linje); if ($linje =~ /^!v(\d)$/) { print UTFIL ("print \"v$1 har verdien: \$v$1\\n\";\n"); elsif ($linje =~ /^\?v(\d)$/) { print UTFIL ("print \"Gi verdi til v$1: \";\n"); print UTFIL ("\$v$1 = <STDIN>;\n"); print UTFIL ("chomp(\$v$1);\n"); elsif ($linje =~ /^v(\d)=v(\d)([+-])v(\d)$/) { if ($3 eq "+") { print UTFIL ("\$v$1 = \$v$2 + \$v$4;\n"); else { print UTFIL ("\$v$1 = \$v$2 - \$v$4;\n"); elsif ($linje =~ /^v(\d)=v(\d)([+-])(\d+)$/) { if ($3 eq "+") { print UTFIL ("\$v$1 = \$v$2 + $4;\n"); else { print UTFIL ("\$v$1 = \$v$2 - $4;\n"); else { die "Forstår ikke linjen:\n$linje"; close INNFIL die "Kan ikke lukke filen $filnavn\n"; close UTFIL die "Kan ikke lukke filen out.pl"; chmod (0775, "out.pl"); exit 0; Forelesning Ark 24 av 24
Mer om Perl INF3110/4110. Filer og bruk av disse. Lister. Tabeller. Søking og regulære uttrykk. Oppsummering
Mer om Perl Filer og bruk av disse Lister Tabeller Søking og regulære uttrykk Oppsummering Dag Langmyhr,Ifi,UiO: Forelesning 30. august 2004 Ark 1 av 28 Perl Fil-operasjoner Et program som skal foreta
DetaljerIN 211 Programmeringsspråk. Dagens tema: Perl
Dagens tema: Perl Bakgrunn Hvem laget Perl, og hvorfor? Oversikt over Perl Setninger, uttrykk, datatyper, datastrukturer,... Søking og endring av tekst Regulære uttrykk Oppsummering Min personlige vurdering
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerProgrammeringsspråket C
Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen malloc
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 9/1/2005 inf1060 V05 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerLynkurs i shellprogrammering under Linux
Lynkurs i shellprogrammering under Linux Interaktiv bruk av shell Shell/skall er en applikasjon som lar bruker taste inn tekstlige kommandoer til Linux en og en linje om gangen (leser linjer fra stdin).
DetaljerBetinget eksekvering og logiske tester i shell
Betinget eksekvering og logiske tester i shell Betinget eksekvering *? Programmet utfører operasjon(er) bare hvis en logisk betingelse er sann Bash tilbyr to kontrollstrukturer for å kunne gjøre betinget
DetaljerDagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)
Dagens tema Syntaks (kapittel 2.1 + Komp. 47, kap. 1 og 2) 1/19 Forelesning 6 1.10.2003 Litt om kompilering og interpretering En kompilator oversetter et program til et annet språk, for eksempel maskinspråk.
DetaljerLitt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk
Litt om kompilering og interpretering Dagens tema Syntaks (kapittel 2. + Komp. 47, kap. og 2) En kompilator oversetter et program til et annet språk, for eksempel maskinspråk. Et program interpreteres
DetaljerDagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.
Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet
DetaljerKapittel 1 En oversikt over C-språket
Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske
DetaljerArk 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk
Ark 1 av 18 IN 211 Programmeringsspråk Velkommen til programmeringsspråkenes verden IN 211 Forelesning 20.8.2001 Foreleser Ragnhild Kobro Runde E-post: ragnhilk@ifi.uio.no Kontor: 3345 Treffetid: torsdager
DetaljerIN 147 Program og maskinvare
Dagens tema Mer om C Cs preprosessor Allokering av variable Separat kompilering Programmet make Pekere i C Operasjoner på pekere Pekere og vektorer Referanseparametre Pekere til «alt» og «ingenting» Dynamisk
DetaljerBakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?
Kursopplegg Velkommen til INF2100 Bakgrunnen Bakgrunnen for INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får
DetaljerLinux-programmer som bruker regulæruttrykk: grep, sed, awk
Linux-programmer som bruker regulæruttrykk: grep, sed, awk grep * søking i tekstlige data grep [OPTIONS] REGEX [FILE...] Verktøy som finnes i alle Unix-lignende OS Leser en eller flere tekstfiler, eller
DetaljerNyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr
Nyttige Linux-kommandoer Hvordan du kan jobbe mer effektivt Dag Langmyhr Trenger vi kommandovinduer i dag? Svaret er nei for de fleste brukerne, men ikke for ekspertene. Ofte går det fortere å bruke kommandoer
DetaljerVelkommen til INF2100
Kursopplegg Velkommen til INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får man det godkjent? Pause (med registrering
DetaljerVelkommen til INF2100 Jeg er Dag Langmyhr
Velkommen til Jeg er Dag Langmyhr (dag@ifi.uio.no). Bakgrunn for I INF1000 20 har dere lært å rammere, men bare små rammer (< 1000 linjer). Hensikten med er å gi mer rammeringstrening Dagens tema: Hva
DetaljerDagens tema C, adresser og pekere
Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Ark 1 av 26 Adresser Som nevnt tidligere ligger
DetaljerArk 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.
Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Adresser Som nevnt tidligere ligger data og programkode
DetaljerINF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen
INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og
DetaljerProgrammering i C++ Løsningsforslag Eksamen høsten 2005
Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det
DetaljerNorsk informatikkolympiade runde
Norsk informatikkolympiade 2017 2018 1. runde Sponset av Uke 46, 2017 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.
Detaljeri=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4
Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I
DetaljerForelesning inf Java 4
Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette
DetaljerProgrammeringsspråket C Del 2
Programmeringsspråket C Del 2 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 30.08.2005 inf1060 H05 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 30.08.2005
DetaljerINF1000 (Uke 5) Mer om løkker, arrayer og metoder
INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse
DetaljerBeskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015
Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den
DetaljerProgrammeringsspråket C Del 2
Programmeringsspråket C Del 2 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 8/25/10 inf1060
DetaljerProgrammeringsspråket C Del 2
Et eksempel Programmeringsspråket C Del 2 Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no inf1060 1 inf1060 2 Forklaring:
DetaljerAlgoritmer og datastrukturer A.1 BitInputStream
Vedlegg A.1 BitInputStream Side 1 av 8 Algoritmer og datastrukturer A.1 BitInputStream A.1 BitInputStream A.1.1 Instansiering BitInputStream har fire konstruktører og to konstruksjonsmetoder (eng: factory
DetaljerNorsk informatikkolympiade runde. Sponset av. Uke 46, 2017
Norsk informatikkolympiade 2017 2018 1. runde Sponset av Uke 46, 2017 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.
DetaljerINF1020 Algoritmer og datastrukturer
Dagens plan Hashing Hashtabeller Hash-funksjoner Kollisjonshåndtering Åpen hashing (kap. 5.3) Lukket hashing (kap. 5.4) Rehashing (kap. 5.5) Sortering ut fra en hashing-ide (side 66-68) Bøttesortering
DetaljerFilterprogrammer og redirigering av I/O
Filterprogrammer og redirigering av I/O Linux filterprogrammer Mange kommandoer i Linux er tekstbaserte filtre Leser en strøm av tekst / tegn, linje for linje Gjør noe med ( filtrerer ) tekstlinjene Skriver
DetaljerDagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15
Dagens tema Cs preprosessor Separat kompilering av C funksjoner C og minnet Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15 Cs preprosessor Før selve kompileringen går C kompilatoren gjennom
DetaljerDel 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
DetaljerRepetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator
Litt mer om løkker Arrayer le Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i slo Java Repetisjon: operatorene ++ og -- Instruksjon i = i + i = i - Alternativ Prefiks-operator
DetaljerForelesning inf Java 5
Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen
DetaljerLøse reelle problemer
Løse reelle problemer Løse problemer med data fra fil, samt litt mer om funksjoner IN1000, uke6 Geir Kjetil Sandve Mål for uken Få enda mer trening i hvordan bruke løkker, samlinger og beslutninger for
DetaljerINF1000 (Uke 15) Eksamen V 04
INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a
DetaljerINF1000 (Uke 15) Eksamen V 04
INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a
DetaljerForelesning inf Java 5
Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler
DetaljerGJØVIK INGENIØRHØGSKOLE
GJØVIK INGENIØRHØGSKOLE Postboks 191-2801 GJØVIK KANDIDATNUMMER: E K S A M E N FAGNAVN: FAGNUMMER: Programmering i C++ / Pascal / C LO154A, LO151A og LO142A EKSAMENSDATO: 7. juni 1994 TID: 09.00-14.00
DetaljerINF 1000 høsten 2011 Uke september
INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første
DetaljerBlokker og metoder INF1000 (Uke 6) Metoder
Blokker og metoder INF1000 (Uke 6) Metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Are Magnus Bruaset og Arild Waaler En blokk er en samling instruksjoner omgitt av krøllparenteser:
DetaljerINF1000 undervisningen INF 1000 høsten 2011 Uke september
INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første
DetaljerKort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon
Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: fredrso@ifi.uio.no Utdanning: Dataingeniør, 2000 Cand.Scient,
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerDel 4 Noen spesielle C-elementer
Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include
DetaljerUtførelse av programmer, metoder og synlighet av variabler i JSP
Utførelse av programmer, metoder og synlighet av variabler i JSP Av Alf Inge Wang 1. Utførelse av programmer Et dataprogram består oftest av en rekke programlinjer som gir instruksjoner til datamaskinen
DetaljerDagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer
Dagens program Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer Nyttige forklaringer Sikker opprettelse av nye prosesser Hva
DetaljerInnhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java
INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:
DetaljerEksamensoppgaver 2014
Eksamensoppgaver 2014 Først kommer alle de relevante små-oppgavene og deretter den store oppgaven. Oppgave 1 (4 p) a) Hva er verdien til tall etter at følgende kode er utført? tall = (5+3)*2 tall = tall+2
DetaljerDagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.
Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet ut? Variabler,
DetaljerINF Ekstrainnlevering
INF000 - Ekstrainnlevering Temaer på innleveringen: Hele pensum fram til nå. Oppgave E.) Tema: Beslutninger (if/else) Filnavn: Rekkefolge.java a) Lag et program som leser inn tre tall fra brukeren. b)
DetaljerMål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU
1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU 2 Læringsmål og pensum Mål Lære å bruke unntak (Exceptions)
DetaljerØvingsforelesning 5 Python (TDT4110)
Øvingsforelesning 5 Python (TDT4110) Repetisjon av løkker og funksjoner Ole-Magnus Pedersen Oversikt Praktisk Info Gjennomgang av Øving 3 Repetisjon 2 Praktisk info Prosjekter i PyCharm må startes med
DetaljerOppsummering fra sist
1 av 34 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Terje Rydland - IDI/NTNU 2 av 34 Oppsummering fra sist Betingelser i Python: ,
DetaljerOblig4 - forklaringer. Arne og Ole Christian
Oblig4 - forklaringer Arne og Ole Christian Struktur og alle (?) klassene import easyio.*; import java.util.*; class Oblig4 { public static void main (String[] args) { String s1 = "Stasjoner-1.txt"; String
DetaljerLitt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator
Litt mer om uttrykk: ++ og -- INF : Forelesning Løkker og arrayer Mye og viktig stoff. Du MÅ løse oppgaver selv for å lære!. september 6 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for
DetaljerØvingsforelesning 5 Python (TDT4110)
Øvingsforelesning 5 Python (TDT4110) Repetisjon av løkker og funksjoner Ole-Magnus Pedersen Oversikt Praktisk Info Gjennomgang av Øving 3 Repetisjon 2 Praktisk info Prosjekter i PyCharm må startes med
DetaljerOppgaver til kodegenerering etc. INF-5110, 16. mai, 2014
Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet, side 539 a) Se på detaljene i hvorfor
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerInformasjon Prøveeksamen i IN1000 høsten 2018
Prøveeksamen IN1000-INF1001-H18 Informasjon Prøveeksamen i IN1000 høsten 2018 Tid Fra tirsdag 6.11 kl. 14:15 til tirsdag 13.11 kl. 12:00 (Normal eksamenstid er 4 timer) Oppgavene Oppgave 2b og 2c er flervalgsoppgaver.
DetaljerINF Uke 11. Ukeoppgaver oktober 2012
INF1000 - Uke 11 Ukeoppgaver 11 30. oktober 2012 Vanlige ukesoppgaver Oppgavene denne uken omhandler de temaene vi har hatt om til nå. Denne uken er det en del oppgaver om det å manipulere tekst på ulike
DetaljerBakgrunn Språket Perl OO i Perl Perl 6 Oppsummering. Velkommen. Programmeringsspråket. Perl. Ifi
Velkommen Programmeringsspråket Perl Velkommen Perl Perl er et «backronym» for Practical Extraction and Report Language. Velkommen Perl Perl er et «backronym» for Practical Extraction and Report Language.
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF2440 Praktisk parallell programmering Prøveeksamensdag : 26. mai 2014 Tidspunkter: 11.00 Utdeling av prøveeksamen 15:15
DetaljerINF1000 : Forelesning 4
INF1000 : Forelesning 4 Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet
Detaljeri=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4
Repetisjon: nesting av løkker Kort repetisjon av doble (nestede) løkker Mer om D-arrayer Introduksjon til D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk
DetaljerDagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering
Dagens tema Vektorer (array er) Tekster (string er) Adresser og pekere Dynamisk allokering Dag Langmyhr,Ifi,UiO: Forelesning 23. januar 2006 Ark 1 av 23 Vektorer Alle programmeringsspråk har mulighet til
DetaljerFra Python til Java, del 2
Fra Python til Java, del 2 Hvordan kjøre Java? På Ifis maskiner På egen maskin Et eksempel Array-er For-setninger Lesing og skriving Metoder Biblioteket Hva trenger vi egentlig? Å kjøre Java For å kunne
Detaljerløsningsforslag-uke5.txt
INF 1000 LØSNINGSFORSLAG TIL UKEOPPGAVER FOR UKE 5 1) Setningen er kompakt skrivemåte for int[] a; a = new int[50]; hvor den første setningen deklarerer arrayen a, og den andre setningen oppretter et array-objekt
DetaljerEndret litt som ukeoppgave i INF1010 våren 2004
Endret litt som ukeoppgave i INF1010 våren 2004!!!" # # $# ##!!%# # &##!'! Kontroller at oppgavesettet er komplett før du begynner å besvare det. Les gjerne gjennom hele oppgavesettet før du begynner med
DetaljerIN Notat om I/O i Java
IN1010 - Notat om I/O i Java Mathias J.P. Stang, Tuva Kristine Thoresen, Ingrid Grønlie Guren 17. januar 2018 Dette notatet handler om I/O (input/output) i Java, og tar for seg innlesning fra terminal,
DetaljerObligatorisk oppgave 1 INF1020 h2005
Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte
DetaljerFilterprogrammer og redirigering av I/O
Filterprogrammer og redirigering av I/O Linux filterprogrammer Mange kommandoer i Linux er tekstbaserte filtre Leser en strøm av tekst / tegn, linje for linje Gjør noe med ( filtrerer ) tekstlinjene Skriver
DetaljerHvordan en prosessor arbeider, del 1
Hvordan en prosessor arbeider, del 1 Læringsmål Kompilator, interpret og maskinkode CPU, registre Enkle instruksjoner: de fire regnearter Mer informasjon om temaet Internett Lokalnett (LAN) Mitt program
DetaljerDagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29
Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Informasjon om C Den viktigste kilden til informasjon om C (utenom en god oppslagsbok) er
DetaljerInformasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene.
Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 2 av 29 NAME sqrt - square root function
DetaljerINF1000 Eksamen 2014 (modifisert)
INF1000 Eksamen 2014 (modifisert) Oppgave 1 (4 poeng) a) Hva er verdien til tall etter at følgende kode er utført? tall = (5+3)*2 tall = tall+2 b) Anta at følgende programsetninger utføres. Hva skrives
DetaljerHva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }
Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =
DetaljerHva er syntaks? En overskrift i en norsk avis: Dagens tema Grundig repetisjon og utdyping:
Hva er syntaks? En overskrift i en norsk avis: Fanger krabber så lenge de orker Dagens tema Grundig repetisjon og utdyping: Er det i C lov å skrive for (;;) { while () { Syntaks kontra semantikk for å
DetaljerTre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm
Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:
DetaljerOversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon
Oversikt INF1000 Uke 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning Uttrykk
DetaljerIN 147 Program og maskinvare
Dagens tema Operativsystemer Hva er et operativsystem? En meget kort oversikt over operativsystemenes historie Systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer
DetaljerOversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program
Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning
DetaljerOblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59
Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være
Detaljer1,r H øgs kolen i Østfol d
1,r H øgs kolen i Østfol d EKSAMEN Emnekode: ITF22506 Emne: Operativsystemer Dato: 2. juni 2010 Eksamenstid: kl. 9.00 til kl. 13.00 Hjelpemidler: Faglærer: 1. Læreboken "A Practical Guide to Red Hat Linux"
DetaljerFinne ut om en løsning er helt riktig og korrigere ved behov
Finne ut om en løsning er helt riktig og korrigere ved behov Finurlige feil og debugging av kode IN1000, uke5 Geir Kjetil Sandve Oppgave (Lett modifisert fra eksamen 2014) Skriv en funksjon Dersom parameteren
DetaljerMål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU
1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6 Terje Rydland - IDI/NTNU 2 Læringsmål og pensum Mål Lære bruk av inn- og ut-operasjoner
DetaljerTDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter
1 TDT4110 Informasjonsteknologi grunnkurs: Eksempler Kunnskap for en bedre verden Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no Tlf: 735 91845 TDT4105
DetaljerPraktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut
Praktisk informasjon INF (Uke 5) Mer om løkker, arrayer og metoder Oblig er lagt ut Frist 8. februar Kan løses etter denne forelesningen Grunnkurs i programmering Institutt for Informatikk Universitetet
DetaljerPlan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk
Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring
DetaljerLøsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)
Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF1000 - Høst 2011) Variabler, uttrykk, fogreninger (if-else) (kapittel 2 og 4.1-4.2 i læreboka, "Rett på Java" 3. utg.) Mål Få trening i teorien du trenger
DetaljerIN 147 Program og maskinvare
Dagens tema Mer om C Et eksempel til (med diverse forklaringer) Representasjon av tegn og logiske verdier Vektorer Statusverdi Innhenting av definisjoner Inkrementering og dekrementering av variable for-setningen
Detaljer