Wikipendium

Share on Twitter Create compendium Add Language
Edit History
Tools
  • Edit
  • History
  • Share on Twitter

  • Add language

  • Create new compendium
Log in
Table of Contents
  1. Teori
    1. Hardware
      1. Datamaskinen
        1. Minne (RAM)
        2. Mikroprosessoren
          1. Fetch/Execute Cycle
      2. Programvare fra datamaskinens perspektiv
      3. Operativsystemer (OS)
    2. Digital representasjon
      1. Bits og bytes
      2. PandA
      3. Tekst
      4. Tall
      5. Digitalisere multimedia
        1. Bilde
        2. Lyd
    3. Algoritmer
      1. Polya
      2. Løkker
      3. Rekursivitet
      4. Kjøretider
      5. Søkealgoritmer
        1. Sekvensielt søk
        2. Binærsøk
      6. Sortering
        1. Insertion sort
    4. Nettverk
      1. Ord og uttrykk
      2. IP, TCP og protokoller
      3. Personvern
      4. Kryptering
      5. Sikkerhet på WLAN
      6. Brannmurer og beskyttelse
    5. Programvareutvikling
      1. Egenskaper ved programvare
      2. Prosessaktiviteter
      3. Programvareutviklingsmodeller
  2. Python
    1. Variabler
    2. Lister
    3. Dictionaries
    4. Sets
    5. If-statements
    6. Løkker
      1. For-løkke
      2. While-løkke
      3. continue- og break-statement
    7. Funksjoner
      1. return-statement
    8. Filbehandling
      1. Pickle
‹

TDT4110: Informasjonsteknologi grunnkurs

Tags:
  • it-grunnkurs
  • matlab
  • python
  • itgk
+

Teori

Hardware

Datamaskinen

Datamaskinen består (i enkleste fall) av

Hovedkort Motherboard - moderkort, det kortet som forbinder alle komponenter i datamaskinen sammen.
Mikroprosessor Sørger for beregninger
Minne (RAM) Korttidsminne - primærlager
Hard disk Langtidsminne - sekundærlager

Minne (RAM)

Har følgende egenskaper:

  • Diskrete plasseringer som består av 1 byte
  • Adresser
  • Verdier
  • Endelig kapasitet
  • Random access

Mikroprosessoren

En mikroprosessor består av

Control Unit Fysiske implementasjonen av Fetch/Execute sykel, se under. Henter kort sagt instruksjoner fra minnet, og gjennomfører resten av operasjonene i Fetch/Execute-sykelen
Arithmetic/Logic Unit (ALU) Gjennomfører matematikken og logikken
Program Counter (PC) Holder adressen til neste instruksjon i Fetch/Execute Cycle (se under)
Klokke (Clock) Klokken som sier hvor ofte instruksjoner kan startes.
Fetch/Execute Cycle

Det er en femstegs sykel:

Instruction Fetch (IF) Flytter instruksjon fra adressen gitt av PC fra memory unit til control unit
Instruction Decode (ID) ALU settes opp for å gjennomføre instruksjonen.
Data Fetch (DF) Henter data
Instruction Execute (IE) Utfører instruksjoner
Result Return (RR) Returnerer resultat til adressen gitt i ID-steget.

Programvare fra datamaskinens perspektiv

Datamaskinen forstår ikke språk som Python direkte. Den kompilerer (transformerer) til et språk som kalles Assembly. Assembly er et maskinspråk som mennesker også kan lese. Dette kompileres videre til binærkode slik at mikroprosessoren faktisk kan kjøre det.

Python er et eksempel på høynivå programmeringsspråk. Vi skriver gjerne programvare i høynivå programmeringsspråk, fordi det sparer oss for masse tid ettersom det er enklere å jobbe med enn lavnivå språk (som Assembly).

Operativsystemer (OS)

Før os kan lastes, kjøres Basic Input Output System (bios) som klargjør systemet til innlasting av os. Uten programvare kan en datamaskin gjøre svært lite, derfor har man operativsystemer. Et operativsystem er en form for grunnleggende programvare som fordeler ressurser til de programmene man kjører.

Eksempler på operativsystemer er Microsoft Windows, UNIX og ulike varianter av UNIX som f.eks. Linux og Mac OS X.

Digital representasjon

Bits og bytes

Bit En bit er et tall, 0 eller 1. 0 representerer false, 1 true. En streng av bits utgjør et tall i binærtallsystemet.
Byte En gruppe av 8 bits.

PandA

Presence and Absence - logikken er enten sann eller usann. Grunnlaget for digital representasjon.

Tekst

ASCII står for American Standard Code for Information Interchange, og det er et tegnsett, altså en standard for utveksling av tekst mellom datamaskiner. ASCII bruker 7 bit-koder, og har dermed 128 mulige tegn. Dette inkluderer blant annet store og små bokstaver. 1 byte er nok til å lagre et ASCII-tegn.

Det finnes flere andre standarder for tekst, men de er ikke så viktige (i dette faget).

Tall

Datamaskiner lagrer som kjent alt binært, så vi trenger en måte for å lagre andre tall også. En byte er nok til å lagre et heltall <256

IEEE-standarder:

Singe-precision Floating-Point Representtation (32 bit) Sign bit + 8 exponent bits + 23 fractional bits
Double-Precision Floating-Point Representation (64 bit) Sign bit + 11 exponent bits + 52 fractional bits

Første biten angir om det er en positiv eller negativ verdi. To's kompliment vil si det negative heltallet med største absoluttverdi (2^-31) er det minste bit mønsteret. Det negative heltallet med minste absolutt-verdi (-1) er det største bit mønsteret. Floating point er tall som skrives på scientific notation og så bare flyttes tallet til en får et heltall hvor og hvor mye en skal opphøye 10 i.

JavaScript bruker bare Double-Precision og har kun en talltype for både flyttall og helverdier. Dette er ganske uvanlig, men det forklarer hvorfor .9 med 16 9-tall etter kommaet vises eksakt, men at det rundes av til 1 med 17 9-tall bak kommaet.

Digitalisere multimedia

Bilde

Farger kan representeres med RGB, som står for Red Green Blue. RGB er en måte å representere farger ved bit strenger. Hver farge (Red Green Blue) får 8 bits. Jo høyere tall, og mer intens blir den respektive fargen.

Lyd

For å digitalisere lyd må vi ha datapunkter for lydbølgen. For å få dette må vi måle i jevnlige intervaller. Vi kaller det å sample. Antallet samples per sekund kalles sample rate. Høyere rate, jo mer nøyaktig gjengivelse får vi.

Nyquist-regelen sier at vi bør ha en sample rate som er minst det dobbelte av hva mennesker kan høre. Mennesker kan høre ca 20 000 Hz, dermed blir det 40 000 Hz vi bør sample med. Av ulike tekniske årsaker bruker man gjerne 44 100 Hz i stedet. Et sample med lyd tar ca 16 bit i mono (dvs. per sekund tar det 16 bit * 44 100 * 2 ).

ADC er en Analog-to-digital converter og tar en kontinuerlig bølge og sampler den i jevnlige intervaller. Returnerer et binært tall for hvert sample.

DAC er en digital-to-analog converter og lager en elektrisk bølge ved interpolasjon mellom de digitale verdiene. En høyttaler konverterer de elektriske signalene til lyd.

Algoritmer

En algoritme er ordnete sett med entydige, utførbare steg som definerer en terminerende prosess. Algoritmer kan, som programkode, representeres ved pseudokode. Pseudokode er programkode skrevet på en uformell måte, altså ikke i et spesifikt programmeringsspråk, men gjerne et vanlig språk som engelsk eller norsk.

Polya

1)Forstå problemet 2) Utvikle en plan for å løse problemet 3) Utføre planen 4) Evaluere løsningen og hvor nøyaktig den er, samt potensialet dens for å løse andre problemer

Løkker

Løkker er en måte å få datamaskinen til å gjøre en bestemt ting flere ganger. En for-løkke gjør den samme tingen et bestemt antall ganger, mens en while-løkke vil gjøre den samme tingen inntil en gitt forutsetning ikke er tilfredsstilt lenger. Pre-test løkke sjekker kondisjon og utfører instruksjon. Posttest utfører instruksjon minst en gang, før den sjekker kondisjon.

Rekursivitet

Rekursjon er når en metode kaller seg selv, rett og slett. En rekursiv metode har en "base case" som sjekker om dataene som kommer inn har en viss verdi, og returnerer en viss verdi når dette er tilfellet. Som eksempel på dette kan man kikke på binærsøkalgoritmen over.

Kjøretider

Når vi skal sammenligne algoritmer, ser vi på hvor raske de er med store mengder data. For å vise dette bruker vi gjerne Big-O notasjon. Hvis en algoritme har en kjøretid O(n), er n antallet inndata. F.eks. hvis den sorterer en liste med tall, er n antall tall. O(n) sier da at når n er veldig stor (vi har veldig mange tall), vil algoritmen maksimalt måtte "sjekke" alle tallene en gang.

Andre notasjoner som kan brukes er Theta ($\Theta$) og Omega ($\Omega$). Omega gir en nedre grense (minste tiden de vil bruke), mens $\Theta(n)$ betyr at algoritmen både er O(n) og $\Omega(n)$.

Søkealgoritmer

Sekvensielt søk

Går gjennom liste til den finner det den leter etter. Ganske ok hvis det du skal ha ligger langt fremme, men rævva ellers. Kjøretid: O(n)

Binærsøk

Starter på midten. Hvis match, returnerer den funnet. Hvis ikke, går den til midten av den øvre eller nedre delen av lista, avhengig av om elementet var høyere eller mindre enn midten av hele lista. Deler lista slik inntil den finner det den skal ha tak i.

Finner ting ganske greit. Worst case og average kjøretid O(logn) Regnetips: log(lengepådatasett)/log(2) (hvis du bruker 10-er logaritmen) gir hvor mange ganger den må kjøre.

Sortering

Insertion sort

Man sorterer de to første elementene i lista, og setter element for element inn i denne sorterte delen. O(n² ) sammenligninger i gjennomsnitt og i worst case.

Nettverk

Ord og uttrykk

Pakke/packet En delmengde data av bestemt lengde som skal overføres over nettet
Routing Å sende en pakke videre mot målet sitt
Router En dedikert datamaskin som binder nettverk og utfører oppgaven routing
ISP Internet Service Provider, selskaper som Telenor.
WAN Wide Area Networks, større nettverk eid av eks. en ISP
LAN Local Area Network - Lokalt nettverk, eks. hjemme hos deg selv.
VPN Virtual Private Network. Et privat nettverk over Internett, som gjør at man kan tilby eksterne brukere interne privilegier (eks. en med hjemmekontor kan bruke et selskaps interne tjenester.
QoS Quality of service.

IP, TCP og protokoller

En protokoll definerer en mengde regler for kommunikasjon mellom enheter.

Internet Protocol (IP) sørger for at datamaskiner har adresser (32-bit lange), slik at datagram/pakker kan sendes mellom dem. Det er disse adressene som brukes til routing.

Transmission Control Protocol (TCP) opererer sammen med IP, og sørger for feilsjekking og sikker overføring. Har all dataene kommet frem? Trengs noe sendes på nytt? Dette er blant tingene TCP ordner.

Personvern

Authentication
Verifisere identiteten til en person.
Privacy/personvern
Å beholde data konfidensiell.
Spoofing
En gir seg ut for å være noen en ikke er.
Phishing
Forsøker å få tak i sensitiv informasjon ved å utgi seg for å være til å stole på.

Internett er ikke sikkert. For å sikre beskjeder kan man bruke kryptering. Bak dette ligger det matematikk. Dette garanterer likevel ikke sikkerhet, men det gjør dagens nettverk mye sikrere.

Kryptering

For å sikre at kun riktig person kan dekryptere en melding (eller en pakke med data for den saks skyld), benytter man nøkler. Man har en nøkkel for å kryptere, og en for å dekryptere. Nøkkel for å kryptere kalles en public key (offentlig nøkkel), og den man bruker til å dekryptere kalles en private key (privat nøkkel). Dersom person A vil sende en privat melding til person B, kan A få den offentlige nøkkelen til B. A krypterer en melding. Da er det bare B som kan dekryptere den, for det er bare B som har den tilhørende private nøkkelen til den offentlige A brukte for å kryptere. Skal krypteringen gjelde i et større system, kan en enhet gjøre den offentlige nøkkel tilgjengelig for alle de andre enhetene.

Sikkerhet på WLAN

WPA (Wi-Fi Protected Access) Kryptering av trådløs kommunikasjon. Det er i stor grad WPA2 som i dag benyttes
WEP (Wired Equivalent Privacy) Kryptering av trådløs kommunikasjon (ikke lenger sett på som sikker)
SSID Navnet på et trådløst nettverk. Man kan konfigurere nettverket slik at bare enheter som kjenner SSID kan koble seg på

Brannmurer og beskyttelse

En brannmur kan ligge mellom en datamaskin og Internett, eller et helt nettverk og Internett. En administrator konfigurer den med en rekke begrensninger. Brannmuren sjekker innkommende pakker mot begrensningene, og avviser innhold som ikke er tillatt.

En brannmur kan også begrense utgående trafikk. En bruker får ikke nødvendigvis hente ned hva som helst av innhold. Dette gjør at brannmuren også beskytter mot ting som trojanske hester.

Vanlige privatpersoner kan la den trådløse ruteren eller en NAT-boks være brannmur. Man kan også installere programvare som kan fungere som brannmur.

Selskaper kan også bruke et IDS (Intrusion Detection System) til å overvåke trafikk, og sørge for at uregelmessig trafikk undersøkes.

Et DDOS (Distributed Denial of Service)-angrep går ut på at noen sender enormt mange pakker mot en side. Disse kan være vanskelige å ordne opp i, eller unngå, selv med et IDS.

Programvareutvikling

Egenskaper ved programvare

Maintainability / vedlikeholdbarhet Programvare burde skrives slik at man kan videreutvikle det for å møte brukerens behov (som selvsagt stadig endrer seg).
Dependability and security Systemet skal ikke kunne medføre fysisk eller økonomisk skade. Brukere skal ikke ha tilgang til ting de ikke skal ha tilgang til osv.
Effciency Systemet skal ikke kaste bort ressurser som minne og prosessorsykler.
Acceptability Brukeren som skal bruke systemet, må kunne akspetere det og være villig til å bruke det.

Prosessaktiviteter

Programvare-spesifikasjon
Innhente data fra potensielle brukere/markeder, og bygg en kravspesifikasjon. Hvilke funksjoner skal systemet ha?
Programvaredesign og implementasjon
Planlegg systemet ut fra kravene, og skriv kode.
Validering
Gjennomfør ulike typer testing for å se at systemet møter kravene.
Evolusjon
Videreutvikling.

Programvareutviklingsmodeller

Vannfallsmodellen Alt planlegges, så utvikles alt, så testes alt.
Inkrementell utvikling Starter med en implementasjon, og utvikler den inkrementelt for å møte kravspesifikasjonen.
Gjenbruksorientert utvikling Tar i bruk ferdigskrevne komponenter, eller COTS (Commerical off the shelf systems) man setter sammen. Gjenbruk brukes ellers implisitt på mange prosjekter, f.eks. ved at utviklere slår opp kodeeksempler eller bruker ferdigskrevne biblioteker.

Python

Lurer du på noe? Prøv Google. Sjekk for innebygde metoder osv., sjekk dokumentasjonen.

Variabler

Definer en variabel ved å skrive navnet på den, et likhetstegn og verdien.

variabel = verdi

I Python kan du legge en streng til en variabel du har et tall i fra før av, men dersom du for eksempel skal skrive ut en streng til konsoll, og du vil ha med et tall, må du konvertere til riktig datatype. Dette gjøres ved å kalle en konverteringsfunksjon med variabelen som argument, eks. dersom du har at a = 2 og den skal til konsoll sammen med en streng, må du bruke str(a). Da blir det print("Verdien til a er " + str(a)) som skriver 2 til konsoll.

Lister

En liste er rett og slett en liste. Det er nullindeksert, altså er første element nummer 0, ikke nummer 1. Du kan ikke endre verdier på indekser som ikke eksisterer, eksempelvis dersom du har en tom liste, kan du ikke forsøke å hente ut verdien liste[0].

liste = [] # Tom liste
annenListe = [1,2,3] # Liste med elementer 
print(annenListe[0]) # Gir 1, første element i annenListe

Dictionaries

En assosiativ liste, dvs. du kan navngi elementer med strenger, eventuelt la den ha en annen indeksering enn nullindeksiering.

dict = {}
dict["hei"] = "hallo"
print(dict["hei"]) # gir hallo

Merk at dersom du looper over en dictionary med for x in dictionary:-syntaksen, så vil x være nøkkelen, ikke verdien.

Fjerne et element?

del dict[key]

Sets

Et set er en mengde, altså en uordnet samling verdier hvor ingen elementer ligger to ganger. Du kan gjøre matematiske operasjoner på mengdene.

aSet = {1, 2, 3}
anotherSet = {1, 2, 2, 3}
aSet == anotherSet # Returnerer true, fordi 2 vil ikke ligge to ganger i anotherSet

Så når er dette kjekt å ha? Kanskje du har en liste med elementer, og vil fjerne de som ligger flere ganger?

L = [1, 2, 2, 3]
L = set(L) # Fjerner ekstra elementer
L = list(L) # Tilbake til en liste

If-statements

Syntaks

if condition:
    # Gjør dette hvis condition er sann
elif other_condition:
    #gjør noe helt annet 
else: # condition er ikke sann
    # Gjør noe annet

Løkker

For-løkke

Syntaks:

for i in range(x, y):
    # Do stuff

Her vil vi gjøre "Do stuff" antallet ganger fra x til y. Er x 0, og y 10, vil vi gjøre det 10 ganger. i vil være hvilken "gang" den runden som kjører er. Den andre gangen her, vil i være 1 for eksempel (startet fra 0).

Man kan slenge på et tall z bak y i range-metoden. Tallet z vil være hvor stort hopp det skal være for hver iterasjon. Har man ikke med tallet z, vil hoppet være 1.

While-løkke

Syntaks

while condition:
    # Gjør ting til condition blir false.

Husk at noe i while-løkka må kunne gjøre condition false, hvis ikke vil løkka aldri kunne bli ferdig.

continue- og break-statement

break vil bryte ut av løkka. continue vil hoppe til neste iterasjon av løkka.

Funksjoner

Syntaks

def funksjonsnavn(parametere):
    # Do stuff
    return

return-statement

return terminerer kjøringen av funksjonen. Dersom du skriver return 2 vil funksjonen returnere tallet 2. Dvs.:

def aMethod():
    return 2

a = aMethod()
print(a) # Vil vise 2

En funksjon i Python trenger ikke nødvendigvis returnere noe.

Filbehandling

with open('filnavn.txt','parameter') as file:
    #skriv koden din her. Ved bruk av denne trenges ikke fil.close da du bare rykker ut av indenten

De mest nyttige åpne-parameterene er som følger:

Parameter Hva den gjør
a Åpner for appending, setter markøren på slutten av filen
r Åpner for lesing, setter markøren på begynnelsen
w Åpner for skriving. Vil overskrive filen, eller opprette en ny hvis den ikke finnes
r+ Åpner for lesing, lar deg så skrive til slutten av filen
wb Åpner for skriving binært
rb Åpner for lesing binært

Pickle

Pickle brukes for å pickle data og skrive den binært.

import pickle
with open('filnavn.txt','wb') as file: #wb åpne for skriving binært
    db={'somekey':'33'} #oppretter en dictionary
    pickle.dump(db,file) #dumper dictionarien, syntax er pickle.dump(variabelnavn,filvariabel)
with open('filnavn.txt','rb') as file: #rb åpner for lesing binært
    db=pickle.load(filnavn) #importerer binærtdata til db variabelen

Written by

hoanghn Stian Jensen sigveseb odin iverjo torsrex hannenag EspenHa ask Esso
Last updated: Tue, 20 Sep 2022 13:49:03 +0200 .
  • Contact
  • Twitter
  • Statistics
  • Report a bug
  • Wikipendium cc-by-sa
Wikipendium is ad-free and costs nothing to use. Please help keep Wikipendium alive by donating today!