fredag 31. august 2007

Fredag 31/8: Funksjon og presedens

Man leser kap. 4.3 og laget f(x)
  
 Function f (ByVal x As Double) As Double
   Return ( 2*x + x^2 ) / 3 * Math.sqrt (x)
 End Function
og en "klient" som bruker f(.) setter s til 4.0 og t ved bruk av f().
  
  Dim s as Double = 4.0
  Dim t as Double = f(s)
Den sekvensielt arbeidende f() vil jobbe etter presedens og fra venstre mot høyre:
  1. første parantes (fra venstre):
    1. første (og eneste) potensiering (fra venstre): 4.0^2 blir 16.0
    2. første (og eneste) mult. el. div. (fra venstre): 2*4.0 blir 8.0
    3. første (og eneste) pluss el. minus (fra venstre): 8.0 + 16.0 blir 24.0
  2. første mult. el. div. (fra venstre): 24.0 / 3 gir 8.0
  3. neste mult. el. div.: 8.0 * Math.sqrt(4.0)
    1. Math.sqrt(4.0) blir (via funksjonen) 2.0
  4. 8.0 * 2.0 gir 16.0
  5. funksjonen returnerer 16.0
Klienten setter så sin variabel t til 16.0. Verdien av s er fremdeles 4.0. Forskjell mellom ByVal og ByRef er at ByVal gir funksjonen en KOPI av originalen. ByRef gir derimot originalen (en peker dit), som gir funksjonen mulighet til å ENDRE originalen. Fordel med ByRef: Sparer tid og plass hvis parametrene er store (gigabyte med data som skal kopieres hvis en brukte ByVal). Ulempen med ByRef er at klienten risikerer at originalen endres. I lab arbeidet man med 4.3

torsdag 30. august 2007

Oblig 3

Bruk streng typesjekk og lag program som beskrevet. Oppgave 1: Bruker oppgir telefonnummer (f.eks. "+47-71242133"). Plukk ut de tre nummerdelene, og vis de PENT i listboks (f.eks. "47-712-42133"). Oppgave 2: Utvid forrige slik at numrene leses fra en fil hvis bruker oppgir et filnavn. Filen har ett nummer per linje. Oppgave 3: (nytt program) Bruker oppgir navn, dato, antall arbeidstimer og varens pris. Faktura skrives i listbox med navn, dato, arbeidstimer, delekostnader, merverdiavgift (25 %) og totalsum. Bruk formatstreng. Oppgave 4: Gyldige valutakurser leses fra fil (en kurs per linje, f.eks "USD 5.99"). Bruker oppgir pengesum og velger valuta (blant gyldige, f.eks. "EUR"). Omregnet valuta vises. Frist: 14/9.

Torsdag 30/8: Typekasting og valg

Time 1: "Inn med teskje" tenkte nok enkelte da vi viste overgangen mellom tekst (i UI-objekt) og tall (i beregningene):
  Sub Private btnXYZ_Click (...) Handles btnXYZ.Click
    Dim antall as Integer
    Dim enhetspris as Integer = 11
    Dim total as Integer
    antall = CInt (Textbox1.Text)
    total = antall * enhetspris
    Textbox2.Text = CStr (total) & " kr."
  End Sub
Dette kan skrives enklere: Finn to feil i koden under:
  Sub Private btnXYZ_Click (...) Handles btnXYZ.Click
    Textbox2.Text = CStr ( Cint ( Textbox1.Text ) * 
               enhetspris ) ) & " kr."
  End Sub
Time 2: Kap. 5 decisions innledes med rabatteksempel:
  If antall > 100 Then enhetspris = 10 Else enhetspris = 11 End If
kan skrives
  enhetspris = 11  ' skjer hver gang
  If antall > 100 Then enhetspris = 10 End If
Har vi flere rabattmuligheter snevres mulighetene inn nedenfra
  If antall < 100 Then enhetspris = 11
  Elseif antall < 200 Then enhetspris = 10
  Elseif antall < 1000 Then enhetspris = 9
  Else enhetspris = 8 EndIf
(eller ovenfra). Forslag: Skriv reserverte ord i boka (permen) eller notisbok med "lure triks"

mandag 27. august 2007

Mandag 27/8: Tall og strenger

Klassene Integer, Double og String, samt Math. Regler for presedens som under (finn 1 logisk feil):
  skatt = ( inntekt - kostnad ) * skatteprosent
  skatt = inntekt - kostnad * skatteprosent
Sjekket konstanter for {Integer,Double}.{MinValue,MaxValue}. VS ga runtimefeil ved overflow men ikke Divide-by-zero! Typekasting mellom tekst (som i Listbox og Textbox) og tall (som vi regner med) skjer av og til automagisk (og litt forvirrende) i VS, ikke alltid i VB Express (bruk da Cstr, Cdbl og Cint). Lab: Jobbe med kap. 3.4 (strenger).

onsdag 22. august 2007

Fredag 24/8: Variabler, tall og debugger

Foreleste kap. 3.3 om numbers og 3.4 om strings. Muligens 3.5 om input (fra dialogbox) og output (til listbox). Viste debugging (F11). Lab blir å gjenta steg-for-steg fra kap. 3.3 og 3.4, samt gi svar til oppgavene for 3.3 og 3.4. I dag vil det ta mindre tid. Nytt: ClassFronter brukes til innlevering av Oblig!

Torsdag 23/8: Dag 1 med VS

Vil forelese kap. 3.1 og 3.2. Dagens lab (tidkrevende!): Les og gjenta stegvis, det som er vist i kap. 3.1 (bruk VS, start et prosjekt, legg inn enkle UI-kontroller). Gi svar til oppgavene i 3.1 (muntlig eller skriftlig, som dere vil). Deretter tar dere for dere kap. 3.2 (property, event, event-prosedyre), les og gjenta stegvis fra teksten, samt gi svar til oppgavene.

mandag 20. august 2007

Oblig 2

Du skal bli kjent med variabler, og godkjenning forutsetter at du har brukt variabler i alle sammenhenger. Oppgave 1: Lag et program for utregning av grisers levendevekt og slaktevekt. Bonden oppgir brystomfang (cm) som input. Gjeldende formler (for omfang mellom 90 og 104 cm): Slaktevekt = 53 + 1.64 * (brystomfang - 90) kilo. Levendevekt = 80 + 2.71 * (brystomfang - 90) kilo. Lag UI og prosedyrer som regner ut. Oppgave 2: En tannlege tilbyr rensing (kr. 150), fylling (kr. 500), rontgen (kr. 100), samt "diverse" (varierende pris). Lag program som tar imot pasientens navn, hvor mye som er gjort av hver tjeneste (med tekst og pris for "annet"), og skriver ut regning (med sum og totalsum) for pasienten. Oppgave 3 (ved sen levering): Lag program der brukeren oppgir kulediameter i centimeter. Volumet skal vises i desiliter. Frist: Fredag 7/9.

Mandag 20/8

Tjueen (21) studenter. Gjennomgikk kap. 1 og Bli kjent. Tavlen viste lagdelte datasystemer: Brukeren (nederst) kommer i inngripen via hardware (h/w): Input (tastatur, mus o.l.) og output (skjerm, skriver). Operativsystemet er software (s/w) som er politi (godkjenner), samt styrer signalene til rett prosess (brukerprogram som er igangsatt). Vi viste (med taskmgr.exe) prosesser og vektla forskjell mellom program (latente .exe-filer i et lager) og prosess (innlastede instruksjoner som ligger i RAM og hentes en-for-en inn til CPU).

fredag 17. august 2007

Oblig 1

Formål: Gjør deg kjent med redskapet for programmering. Du må ha lest t.o.m. s. 74 og The Group Box Control (s. 472), samt Radio Button Control (s. 474). Oppgave 1: Lag et program der brukeren får ett spørsmål, svarer ved blant svaralternativ og gis beskjed om resultatet.
  • Legg inn velkomsttekst øverst
  • Legg inn selvvalgt spørsmål
  • Legg inn tre selvvalgte svaralternativ (enten radioknapper, klikk, valg fra nedtrekksliste, innskriving)
  • Legg inn forklarende tekst
  • Etter valg, skal brukeren gis beskjed (galt eller rett svar)
  • Vinduet skal ha en knapp for ''avslutt''
  • Du velger farger for bakgrunn, tekst og fonter
Oppgave 2:
  • Lag nytt prosjekt med tittel ''Mitt første program'' og gul bakgrunn
  • Legg til avslutt-knapp (som avslutter programmet)
  • Legg til gruppeboks med tittel ''Velg språk''.
  • Boksen skal ha to valg (radioknapper) med tekst ''engelsk'' og ''norsk'', som (hvis valgt) endrer teksten (i ''avslutt''-knapp) til ''quit'' eller ''avslutt''.
Følg navnereglene for GUI-komponenter (s. 52). Vindu (Form, frm*), Etikett (Label, lbl*), Valgliste (Listbox, lst*), Knapp (Button, btn*), Tekstboks (Textbox, txt*), Gruppeboks (Groupbox, grp*), Radioknapp (Radiobutton, rad*), Avkrysning (Checkbox, chk*) og Nedtrekksliste (Combobox, cbo*). Koden skal skrives ut og forevises assistentene. Siste frist for godkjenning: Fredag 31/8. IN ENGLISH (new Sep 1, 2008): Purpose: Get to know the tool for programming. You must read up to page 74 and The Group Box Control (pg. 472), as well as Radio Button Control (pg. 474). Exercise 1: Make a program that asks the user one question. The user answers by choosing one of several alternatives. The program then informs the user about the result.
  • Add a welcome text in the upper area
  • Add a question text
  • Add three alternatives for answer (you can use radio buttons, click buttons, menus or text fields -- your choice!).
  • Give explanations (use labels)
  • When the user has made a choice, the user receives an information about the result (right or wrong).
  • The window must have an "Exit" button
  • You choose color, fonts and sizes yourself.
Exercise 2:
  • Make a new project entitled "My first program" (yellow background).
  • Add an exit button
  • Add a groupbox entitled "Choose language"
  • The groupbox has two choices (radio buttons), with the text "english" and "norwegian". The exit button shows "quit" or "avslutt" depending on which language is chosen.
Follow the labeling rules for GUI components (pg. 52): (Form, frm*), (Label, lbl*), (Listbox, lst*), (Button, btn*), (Textbox, txt*), (Groupbox, grp*), (Radiobutton, rad*), (Checkbox, chk*) and (Combobox, cbo*). Koden skal skrives ut og forevises assistentene. Siste frist for godkjenning: Fredag 31/8.

Om IBE150 Programmering

Fra http://himolde.studiehandbok.no (formell beskrivelse)
  • Forkunnskap: Kjennskap til datamaskiner.
  • Formål: Gi grunnleggende praktisk kunnskap om programmering slik at en kan utvikle egne enkeltstående (monolittiske) program.
  • Innhold: Det viktigste vil være bygging av program og logikk, med vekt på å forstå variabler og tilordning, datatyper (tall, strenger, tabeller, hash, objekt), typekasting og sammenligning, logiske uttrykk (enkel boolsk algebra) og valg, gjentagelser (løkker), modularisering (prosedyrer, funksjoner, klasser og metoder; overføring av parameter) og rekursjon.De viktigste algoritmer for sortering, fletting og søking beskrives.Teknikker i hendelsesstyrt kjøring blir belyst.Utover det rent programmerings-tekniske, gis enkel opplæring i henting av data (fra brukere, filer og eksterne kilder), presentasjon av data (i grafiske og tekstlige former), samt lagring. Kurset gir ikke opplæring i overordnede metoder for å lage større programsystem.
  • Arbeidskrav (som kreves for adgang til eksamen): En serie obliger med innlevering til gitte frister (samme obliger som i fjor!).
  • Eksamen: 4 t skriftlig. Alle hjelpemidler (trykte og skrevne). Teller 100 %.
  • Pensum: David Schneider, An Introduction to Programming, Prentice-Hall, 2006
I tillegg (detaljer for h'07)
  • Forelesninger: 6 t per uke. Mandag (rom 283), torsdag og fredag (rom 285). Kl. 0815-1000. Etterfulgt av 2 t lab.
  • I tillegg: hjelpelærer-timer med Knut E. Kjersem og Jostein Hestad, delt med IBE100. Detaljer om dette kommer senere.
  • Obliger skal godkjennes av Kjersem eller Hestad innen angitte frister. Det er KODEN som skal forevises og godkjennes (utseendet er lite viktig). Samme obliger som i fjor.
  • Eksamen: 11. Desember, 2007, kl. 0900-1300.
  • Kurset har en epostliste som ALLE MELDER SEG PÅ!
  • Materiell fra tidligere varianter av kurset: INF150 (2006)

Bli kjent

Del 1: Gruppearbeid (to per gruppe) kan skje i rom 009 (omtrent 15 PCer burde holde).
  • Logg inn (som en av de to i gruppen)
  • Start en nettleser (som Firefox, firefox.exe) og finn kursets hjemmeside. Meld dere begge opp til kurset ePostliste (IBE150). Sjekk om dere har tilgang til ClassFronter (og om dere finner IBE150).
  • Start Skriveblokka (notepad.exe, som s. 6 i DS)
  • Start en "explorer" (explorer.exe) og finn din "hjemmemappe" (filserver). Opprett derunder arbeidsmappe (folder, directory) for IBE150 -- den andre (som neppe er innlogget) tar dette ved en senere anledning
  • Skriv inn svar til 1.2 (alle deloppgavene) og lagre som IBE150/oppg1-2.txt
  • Send ePost til hverandre med svaret (som vedlagt fil). Skriv hvem dere er.
  • --- ta en pause ---
  • Skriv i IBE150/oppg1-3.txt med svar til 1.3. Bruk IBE150-mappa istedet for diskett (hvis dere da ikke har minnebrikker med dere). Til 1.3.13: Mappa "Ch09/Pictures" kan ligge under kursinfo (in-kurs/INF150). Let eller bruk en annen mappe.
Del 2: Alene (vel, en kan jo fortsette i gruppe, men alle vil til slutt tvinges gjennom dette alene)
  • PC i rom 009 (eller 070, 076, 075). Logg inn.
  • Start Visual Studio (VS) med sekvensen Startmeny, Programmer, Programvare Informatikk, Visual Studio ....
  • Velg eventuelt en profil (gjerne VS developer)
  • vent ... mye skal ordnes i starten
  • Avslutt og start VS om igjen (det skal starte raskt)
  • Logg ut
Installer eventuelt VB 2005 Express i egen PC (alene). Du finner det selv!

Lure program

  • Taskmanager (taskmgr.exe): Lar deg se prosesser du har i gang, eventuelt slette (avslutte) etter behov
  • Explorer (Utforsker, explorer.exe): Lar deg se og betjene dataressurser (filer, skrivere, kamera, m.m.) som finnes lokalt (din PC) eller andre steder (servere).
  • Notepad (notepad.exe): Skriveblokk av enkleste sort.
  • Nettleser som Firefox (firefox.exe) eller Internet Explorer (iexplore.exe)
  • Visual Studio (devenv.exe)

Hurtigtaster

Windows og de fleste brukerprogram (som VS):
  • Ctrl+Alt+Del: En tre-fingers salutt som starter Winlogon.
  • Ctrl+Esc: Gir startmenyen
  • Windowstast+M: Ikoniserer alle programmene
  • Windowstast+R: Snarvei til Start/Run (Run)
  • Alt+Tab: Aktiverer "neste" av mine igangsatte program
  • Ctrl+C: Kopier det som er markert til et utklippsbuffer
  • Ctrl+V: Kopier fra buffer til der cursor er
  • Ctrl+X: Fjern det som er markert (blir ikke liggende i bufferJo, det blir liggende i buffer!)
  • Ctrl+Z: Angre det siste.
  • Tab og Shift+Tab: Ruller fokus for input
  • Alt+F4: Avslutter prosess (eller Windows)
  • Alt+Shift: "System"meny (nordvestlige ikon i vindusramma!).
  • ... (flere kommer)
Visual Studio:
  • Alt+S: Lagrer koden (*.vb, *.sln etc.) -- VS lagrer også før hver kjøring!
  • DEBUG:
    • F5: start, Shift+F5: stopp,
    • F11: Gå inn i neste, F10: Hopp over neste,
    • F9: sett stoppeplass (breakpoint). Ctrl+Shift+F9: Fjern alle stoppeplasser.
  • F4: Gå til properties (egenskapene til aktiv kontroll)
  • Ctrl-C/X/V og Del brukes (som ellers) for klipp-og-lim o.l.
  • Ctrl+Tab: Hopp mellom faner (fra kode til design til objektbrowser...)
  • Alt/Tools/Options/Fonts endring av skrift (velg "settings for": "All text tool windows")
  • ... (mere kommer)
+ angir at tastene trykkes samtidig.