20TD02U_ForAlle_Blooms_Side1_BlandetDrops - itnett/FTD02H-N GitHub Wiki
+++markdown
🎓 Helhetlig Forståelse av Programmeringskonsepter og Læringsutbytte på Masternivå
Denne redegjørelsen tar sikte på å gi en grundig og helhetlig forståelse av sentrale programmeringskonsepter, samt demonstrere hvordan disse kan anvendes, analyseres, evalueres og videreutvikles i tråd med Blooms taksonomi. Ved å kombinere teoretisk innsikt med praktiske eksempler og refleksjoner, vil vi vise et læringsutbytte på masternivå innenfor de definerte områdene.
📜 1. Programstrukturer: Grunnmuren i All Kode
Programstrukturer er de grunnleggende byggesteinene i all kode. De definerer hvordan instruksjoner utføres og hvordan programmet flyter fra én handling til den neste. På et masternivå forventes det at man ikke bare kan huske og forstå disse strukturene, men også anvende, analysere, evaluere og skape med dem.
🔄 Sekvens:
Den enkleste strukturen, hvor instruksjoner utføres i rekkefølge.
🔄 Valg (Seleksjon):
Brukes til å ta beslutninger i koden, typisk med if
, else if
, og else
-setninger. Dette gir programmet muligheten til å utføre ulike handlinger basert på gitte betingelser.
🔄 Gjentakelse (Iterasjon):
Gjentar en blokk med kode flere ganger, enten et bestemt antall ganger (for
-løkker) eller så lenge en betingelse er oppfylt (while
-løkker).
🎨 Illustrasjon - Valg (Seleksjon):
alder = 25
if alder < 18:
print("Du er mindreårig.")
elif alder >= 18 and alder < 67:
print("Du er voksen.")
else:
print("Du er pensjonist.")
🗂 2. Datastrukturer: Organisering av Informasjon
Datastrukturer er måten vi organiserer og lagrer data på i et program. På masternivå forventes det en dyp forståelse av ulike datastrukturer, deres egenskaper og hvordan de kan brukes effektivt i ulike situasjoner.
📚 Arrayer/Lister:
En ordnet samling av elementer, hvor hvert element kan nås via en indeks.
📚 Lenkede lister:
En sekvens av noder, hvor hver node inneholder data og en peker til neste node.
📚 Stakker og køer:
Spesialiserte datastrukturer som følger LIFO (Last In, First Out) og FIFO (First In, First Out) prinsipper.
📚 Trær og grafer:
Hierarkiske og nettverksbaserte datastrukturer som brukes til å representere relasjoner mellom data.
📚 Hashtabeller:
Bruker hash-funksjoner for å lagre og hente data raskt basert på en nøkkel.
🎨 Illustrasjon - Lenket Liste:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = new_node
📦 3. Bibliotek: Gjenbruk av Kode
Biblioteker er samlinger av ferdiglaget kode som kan gjenbrukes i egne programmer. Dette sparer tid og krefter, og lar utviklere fokusere på kjernelogikken i applikasjonen.
requests
-Biblioteket:
🎨 Illustrasjon - Bruk av import requests
response = requests.get('https://www.example.com')
if response.status_code == 200:
print(response.text)
else:
print("Feil ved henting av nettsiden")
🔧 4. Funksjoner og Metoder: Modularisering og Gjenbruk
Funksjoner og metoder er essensielle verktøy for å organisere kode, gjøre den mer lesbar og gjenbrukbar.
🎨 Illustrasjon - Funksjon med Parametere og Returverdi:
def beregn_gjennomsnitt(tall_liste):
"""Beregner gjennomsnittet av en liste med tall."""
if not tall_liste: # Sjekk for tom liste
return None
return sum(tall_liste) / len(tall_liste)
mine_tall = [1, 5, 3, 8, 2]
gjennomsnitt = beregn_gjennomsnitt(mine_tall)
if gjennomsnitt:
print
🏗 5. Objektorientert Programmering (OOP): Modellering av den Virkelige Verden
OOP er et kraftig paradigme som lar oss modellere programmer som samlinger av objekter som samhandler med hverandre.
🎨 Illustrasjon - Arv og Polymorfisme:
class Dyr:
def __init__(self, navn):
self.navn = navn
def lag_lyd(self):
print("Et generisk dyrelyd")
class Hund(Dyr):
def lag_lyd(self):
print("Voff!")
class Katt(Dyr):
def lag_lyd(self):
print("Mjau!")
dyr = [Hund("Fido"), Katt("Pusi"), Dyr("Ukjent dyr")]
for dyr in dyr:
dyr.lag_lyd()
🐞 6. Debugging, Testing og Unntaksbehandling: Sikre Robust Kode
Debugging, testing og unntakshåndtering er kritiske ferdigheter for å sikre at kode fungerer som forventet og er robust mot feil.
🎨 Illustrasjon - Unntakshåndtering:
def del_tall(a, b):
try:
resultat = a / b
except ZeroDivisionError:
print("Feil: Kan ikke dele på null!")
else:
print("Resultatet er:", resultat)
finally:
print("Uansett hva som skjer, vil denne linjen alltid kjøres.")
🔌 7. API-er: Kommunikasjon mellom Systemer
API-er (Application Programming Interfaces) er grensesnitt som lar ulike programmer kommunisere med hverandre.
🎨 Illustrasjon - Bruk av en REST API:
import requests
response = requests.get('https://api.example.com/users')
if response.status_code == 200:
users = response.json()
for user in users:
print(user['name'])
else:
print("Feil ved henting av brukerdata")
🖥 8. GUI: Brukervennlige Grensesnitt
GUI-er (Graphical User Interfaces) er visuelle grensesnitt som lar brukere interagere med et program ved hjelp av grafiske elementer som knapper, menyer og vinduer.
🎨 Illustrasjon - Enkelt GUI med Tkinter:
import tkinter as tk
def hilsen():
navn = navn_input.get()
hilsen_label.config(text="Hei, " + navn + "!")
vindu = tk.Tk()
vindu.title("Enkel hilsen")
navn_label = tk.Label(vindu, text="Navn:")
navn_label.pack()
navn_input = tk.Entry(vindu)
navn_input.pack()
hilsen_knapp = tk.Button(vindu, text="Hils", command=hilsen)
hilsen_knapp.pack()
hilsen_label = tk.Label(vindu, text="")
hilsen_label.pack()
vindu.mainloop()
📝 9. UML: Modellering og Design
UML (Unified Modeling Language) er et visuelt språk for å modellere og designe programvare.
🎨 Illustrasjon - Klassediagram:
+-----------------+ +-----------------+
| Person | | Student |
+-----------------+ +-----------------+
| - navn: String | | - studentnummer: int|
| - alder: int | +-----------------+
+-----------------+
| + snakk() |
+-----------------+
📂 10. Filbehandling: Lagring og Henting av Data
Filbehandling er en viktig del av mange applikasjoner, da det lar oss lagre og hente data permanent.
🎨 Illustrasjon - Lese fra en Tekstfil:
def les_fil(filnavn):
try:
with open(filnavn, 'r') as fil:
innhold = fil.read()
return innhold
except FileNotFoundError:
print(f"Feil: Filen '{filnavn}' ble ikke funnet.")
return None
filinnhold = les_fil("min_fil.txt")
if filinnhold:
print(filinnhold)
🔒 11. Datasikkerhet: Beskyttelse av Informasjon
Datas
ikkerhet er avgjørende for å beskytte sensitive data mot uautorisert tilgang, endring eller ødeleggelse.
🎨 Illustrasjon - Sikker Lagring av Passord:
import hashlib
def hash_passord(passord):
salt = b'mitt_salt' # Bruk et unikt og hemmelig salt
return hashlib.pbkdf2_hmac('sha256', passord.encode(), salt, 100000)
hashed_passord = hash_passord("mitt_passord")
print(hashed_passord)
📡 12. Kommunikasjon mellom Programgrensesnitt: Integrasjon og Datautveksling
I dagens sammenkoblede verden er det sjelden at applikasjoner opererer i isolasjon. De trenger å kommunisere med hverandre, utveksle data og utnytte tjenester fra eksterne systemer. Dette gjøres gjennom API-er (Application Programming Interfaces).
🎨 Illustrasjon - REST API-kall med Python Requests:
import requests
response = requests.post('https://api.example.com/orders', json={'produkt_id': 123, 'antall': 2})
if response.status_code == 201: # Created
order_id = response.json()['id']
print("Ordre opprettet med ID:", order_id)
else:
print("Feil ved opprettelse av ordre:", response.text)
🏆 Læringsutbytte
🎓 Kunnskap:
Kandidaten demonstrerer en dyp og helhetlig forståelse av grunnleggende programmeringskonsepter og verktøy.
🔧 Ferdigheter:
Kandidaten kan ikke bare skrive kode, men også lese, tolke, vedlikeholde og forbedre eksisterende kode.
🌍 Generell Kompetanse:
Kandidaten demonstrerer en evne til å kontinuerlig lære og utvikle seg innen programmering.
🎯 Konklusjon
Gjennom denne redegjørelsen har vi demonstrert en helhetlig forståelse av programmeringskonsepter og læringsutbytte på masternivå. Vi har vist hvordan man kan anvende, analysere, evaluere og skape innenfor ulike områder av programmering, og hvordan disse ferdighetene bidrar til å utvikle kompetente og ansvarlige programvareutviklere. +++