Introduktion till programmering för blivande systemutvecklare (Scala & Java)

0.0(0)
Studied by 0 people
call kaiCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/92

flashcard set

Earn XP

Description and Tags

Övningskort för begrepp och terminologi i introduktionskursen i programmering (Scala och Java) vid Datavetenskap, LTH.

93 Terms

1
New cards

SARA

Akronym för de fyra grundläggande programmeringskoncept som bygger upp all mjukvara: Sekvens, Alternativ, Repetition och Abstraktion.

2
New cards

Kompilator

Ett datorprogram som läser källkod skriven i ett högnivåspråk, kontrollerar den för syntaktiska och semantiska fel samt översätter den till körbar maskinkod eller bytekod.

3
New cards

Kompileringsfel

Ett fel som upptäcks av kompilatorn vid analys av källkoden (t.ex. typfel eller syntaxfel) och som avbryter kompileringen så att ingen körbar kod genereras.

4
New cards

Exekveringsfel (körtidsfel)

Ett fel som inträffar medan programmet körs (t.ex. division med noll eller felaktig indexering), vilket ofta leder till att programmet avbryts med ett undantag och en stack trace.

5
New cards

Virtuell maskin (VM)

En mjukvaruimplementerad abstrakt dator (såsom Java Virtual Machine, JVM) som tolkar abstrakt bytekod och översätter den till den underliggande hårdvarans specifika maskinkod under körning.

6
New cards

Litteral

En notation i källkoden som representerar ett fast, direkt datavärde, exempelvis heltalet 42, flyttalet 42.0, tecknet 'a' eller strängen "hej".

7
New cards

Typinferens (typhärledning)

Kompilatorns förmåga att automatiskt avgöra och tilldela datatyper till variabler och uttryck baserat på deluttryckens typer, utan att programmeraren måste skriva ut typen explicit.

8
New cards

val

Nyckelord i Scala för att deklarera en oföränderlig variabel som endast kan tilldelas ett värde en enda gång vid initialiseringen.

9
New cards

var

Nyckelord i Scala för att deklarera en förändringsbar variabel vars refererade värde kan bytas ut i efterhand med hjälp av tilldelningssatser.

10
New cards

Stränginterpolering

En mekanism där variabler och uttryck kan bäddas in direkt i en stränglitteral med hjälp av ett inledande s-tecken och dollartecken, t.ex. s"Värdet är $x".

11
New cards

Procedur

En funktion som utför en sidoeffekt (såsom en utskrift på skärmen eller en tillståndsändring) men som inte returnerar något meningsfullt resultatvärde, och därmed har returtypen Unit.

12
New cards

Unit

En grundtyp i Scala som motsvarar frånvaron av ett meningsfullt returvärde; dess enda instans representeras av enhetsvärdet ().

13
New cards

De Morgans lagar

Logiska regler för hur booleska uttryck negeras: operatorerna && och || byter plats med varandra samtidigt som samtliga ingående deluttryck och relationer negeras.

14
New cards

Kommandotolk (shell)

Ett textbaserat program (t.ex. Bash eller Zsh) som tar emot kommandon från användaren i en terminal, tolkar dem och instruerar operativsystemet att utföra motsvarande processer.

15
New cards

Datastruktur

En organiserad struktur för samling och hantering av data som kan innehålla flera element, refereras till som en helhet och medge åtkomst till enskilda element.

16
New cards

Vektor (Vector)

En oföränderlig sekvenssamling i Scalas standardbibliotek som har allsidigt god prestanda och möjliggör snabb elementåtkomst över hela sekvensen.

17
New cards

Array

En primitiv, förändringsbar sekvenssamling med fix storlek där elementen lagras i följd i datorns minne, vilket ger mycket snabb indexering men kräver kopiering vid storleksändring.

18
New cards

Range

En sekvenssamling i Scala som representerar ett intervall av heltal (t.ex. skapad med to eller until) där talen inte genereras i minnet förrän de faktiskt efterfrågas.

19
New cards

Algoritm

En ändlig, stegvis och entydig instruktionssekvens som beskriver tillvägagångssättet för att lösa ett givet beräkningsproblem från indata till utdata.

20
New cards

Anropsstack (Call stack)

Datorns minnesutrymme för att hålla reda på aktiva funktionsanrop, där en aktiveringspost (stack frame) skapas vid varje anrop och tas bort när funktionen returnerar.

21
New cards

Stack trace

En fellista över anropsstacken vid ett körtidsfel som visar den exakta anropskedjan med klasser, metoder, källkodsfiler och radnummer där felet inträffade.

22
New cards

Äkta funktion (Pure function)

En funktion som alltid producerar samma resultat för samma argument, saknar observerbara sidoeffekter och är referentiellt transparent.

23
New cards

Högre ordningens funktion

En funktion som tar en eller flera funktioner som argument och/eller returnerar en funktion som sitt resultatvärde (t.ex. map, filter och reduceLeft).

24
New cards

Anonym funktion (Lambda)

Ett namnlöst funktionsvärde som definieras direkt som ett uttryck med syntaxen (parametrar) => uttryck och kan skickas som argument eller tilldelas en variabel.

25
New cards

Platshållarsyntax

En kortform för anonyma funktioner i Scala där ett understreck _ representerar en parameter som endast används en enda gång i funktionskroppen.

26
New cards

Predikat

En funktion som tar ett eller flera argument och returnerar ett sanningsvärde av typen Boolean (används ofta för villkor och filtrering).

27
New cards

Namnanrop (Call-by-name)

En anropsteknik deklarerad med => före parametertypen där evalueringen av argumentet fördröjs och sker på nytt varje gång parameternamnet refereras i kroppen.

28
New cards

Värdeanrop (Call-by-value)

Standardmetoden för funktionsanrop där argumentuttrycket evalueras en enda gång innan det överförs och binds till parametern vid funktionsanropet.

29
New cards

Stegad funktion (Curry-funktion)

En funktion uppdelad i flera parameterlistor som kan appliceras partiellt på en delmängd av listorna för att returnera en ny funktion som tar resterande parametrar.

30
New cards

Closure

Ett funktionsobjekt som kapslar in och behåller referenser till variabler från sin omgivande namnrymd utanför funktionens eget lokala block.

31
New cards

Rekursiv funktion

En funktion som anropar sig själv för att lösa mindre delproblem och som måste definiera en explicit returtyp samt ett basfall där rekursionen avbryts.

32
New cards

Singelobjekt (Singleton object)

Ett objekt i Scala deklarerat med nyckelordet object som existerar i exakt en instans och allokeras automatiskt i minnet vid första referens.

33
New cards

Attribut

En variabel (deklarerad med val eller var) som tillhör ett objekt eller en klass och definierar en del av dess interna tillstånd.

34
New cards

Metod

En funktion (deklarerad med def) som är medlem i en klass eller ett objekt och har direkt tillgång till objektets attribut och tillstånd.

35
New cards

Tillstånd (State)

Den samlade uppsättningen av aktuella värden hos alla attribut i ett objekt vid en given tidpunkt under programmets körning.

36
New cards

Inkapsling (Encapsulation)

Objektorienterad princip där ett objekts interna datarepresentation döljs för omvärlden med nyckelord som private, så att tillståndet endast manipuleras via ett väldefinierat gränssnitt.

37
New cards

Principen om enhetlig access

Språkprincip i Scala som innebär att avläsning av ett attribut (val/var) och anrop av en parameterlös metod (def) skrivs med identisk syntax, vilket tillåter ändring av implementationen utan påverkan på klientkoden.

38
New cards

Tupel

En oföränderlig datastruktur som grupperar ett bestämt antal element av potentiellt olika datatyper med hjälp av parenteser, t.ex. (Int, String).

39
New cards

Typalias

Ett deklarerat alternativt namn för en befintlig datatyp med nyckelordet type (t.ex. type Pt = (Int, Int)), vilket ökar kodens läsbarhet och abstraktionsgrad.

40
New cards

Fördröjd initialisering (lazy val)

En variabeldeklaration vars initialiseringsuttryck evalueras först när variabeln refereras för första gången, varefter värdet sparas för framtida referenser.

41
New cards

Extensionsmetod (extension)

En metod deklarerad med nyckelordet extension som gör det möjligt att i efterhand lägga till nya metoder på en befintlig typ så att de kan anropas med punktnotation.

42
New cards

Jar-fil

Ett komprimerat filarkivformat (Java Archive) som samlar kompilerade .class-filer, bibliotek och resursfiler i en enhetlig fil för enkel distribution.

43
New cards

Classpath

En parameter eller miljövariabel som definierar den lista av kataloger och jar-filer där kompilatorn och JVM söker efter kompilerade klasser under översättning och körning.

44
New cards

Klass (Class)

En mall eller ritning deklarerad med class som definierar attribut och metoder för att skapa flera oberoende instanser av samma typ.

45
New cards

Konstruktor

Den programkod i en klass som exekveras vid instansiering för att allokera minnesutrymme och initialisera objektets attributvärden.

46
New cards

Kompanjonsobjekt (Companion object)

Ett singelobjekt deklarerat i samma källkodsfil och med samma namn som en klass, vilket delar fullständiga privata åtkomsträttigheter med klassen.

47
New cards

Fabriksmetod (Factory method)

En metod (ofta apply i ett kompanjonsobjekt) som skapar och returnerar instanser av en klass utan att anroparen explicit behöver anropa klassens konstruktor direkt.

48
New cards

Case-klass (Case class)

En specialiserad klass i Scala deklarerad med case class som automatiskt tilldelas publika val-attribut, innehållslikhet, mönstermatchningsstöd, en copy-metod och en läsbar toString.

49
New cards

Referenslikhet vs. Innehållslikhet

Referenslikhet (eq) undersöker om två referenser pekar på exakt samma objekt i minnet, medan innehållslikhet (==/equals) kontrollerar om objekten innehåller samma data oavsett adress.

50
New cards

null

Ett litteralt värde i JVM som indikerar att en referensvariabel inte pekar på någon allokerad instans i minnet, vilket orsakar NullPointerException vid åtkomst.

51
New cards

Topptyp (Any)

Den yttersta bastypen i Scalas typsystem som alla andra typer direkt eller indirekt ärver ifrån, och som definierar metoder som toString, equals och hashCode.

52
New cards

Bottentyp (Nothing)

En typ längst ned i Scalas typhierarki som är subtyp till alla andra typer, saknar instanser och representerar beräkningar som inte avslutas normalt (t.ex. kastade undantag).

53
New cards

Mönstermatchning (Pattern matching)

En språkkonstruktion med match och case som undersöker ett värde mot en sekvens av mönster, dekonstruerar data och exekverar den första matchande grenen.

54
New cards

Gard (Guard)

Ett booleskt villkor som läggs till med if i en case-gren i ett match-uttryck och som måste utvärderas till true för att grenen ska väljas.

55
New cards

Förseglad typ (sealed)

En modifierare framför en trait eller klass som förbjuder subtypning utanför den egna källkodsfilen, vilket möjliggör för kompilatorn att varna vid ofullständiga mönstermatchningar.

56
New cards

Option

En förseglad datatyp i Scala för typsäker hantering av potentiellt saknade värden, representerad av antingen instansen Some[T] (värde finns) eller objektet None (värde saknas).

57
New cards

Undantag (Exception)

Ett objekt som representerar ett fel eller en avvikande händelse under exekveringen och som avbryter det normala kodflödet tills det fångas i ett try-catch-block.

58
New cards

Try

En funktionell samlingstyp i scala.util som kapslar in en beräkning som kan kasta undantag och resulterar i antingen Success[T] vid lyckad körning eller Failure[T] vid fel.

59
New cards

Sekvensalgoritm

En algoritm som manipulerar eller analyserar ordnade dataelement i en sekvens enligt de vanliga mönstren: Kopiering, Uppdatering, Transformering, Filtrering, Sökning, Sortering och Registrering (KUTFSSR).

60
New cards

Linjärsökning

En sökalgoritm med tidskomplexitet O(n)O(n) som sekventiellt granskar element från sekvensens början till dess att det eftersökta elementet påträffas eller samlingen tar slut.

61
New cards

Registrering

En algoritmisk metod för att räkna frekvenser eller kategorisera förekomster av dataelement genom att uppdatera räknare i en array eller nyckel-värde-tabell.

62
New cards

Enumeration (enum)

En datatyp i Scala 3 definierad med enum som består av en sluten mängd namngivna värden (case) med bestämd ordningsföljd och inbyggda metoder som values och ordinal.

63
New cards

Matris (Matrix)

En tvådimensionell datastruktur med rader och kolumner som i Scala ofta implementeras som en nästlad samling av samlingar, t.ex. Vector[Vector[T]] eller Array[Array[T]].

64
New cards

Typparameter

En platshållare för en abstrakt datatyp som deklareras inom hakparenteser [T] i generiska klasser eller metoder och binds till en konkret typ vid användning.

65
New cards

Typradering (Type erasure)

Den process i JVM där information om generiska typparametrar raderas under kompileringen, vilket innebär att typargument inte kan undersökas direkt vid körtid utan speciella hjälpmekanismer.

66
New cards

Mängd (Set)

En oordnad samling av unika element som inte kan innehålla dubbletter och som är optimerad för mycket snabba medlemskapskontroller.

67
New cards

Nyckel-värde-tabell (Map)

En samling bestående av unika nycklar som var och en är associerad med ett värde, vilket medger direkt och snabb uppslagning av värdet baserat på nyckeln.

68
New cards

Multimap

En specialiserad tabellstruktur där varje nyckel är associerad med en samling av värden (ofta ett Set) så att flera värden kan lagras under samma nyckel.

69
New cards

Serialisering och Deserialisering

Serialisering innebär att omvandla objekt i minnet till en lagringsbar sekvens av byte eller tecken; deserialisering innebär att återskapa objekten i datorns minne från denna sekvens.

70
New cards

Commit

En sparad och tidsstämplad ögonblicksbild av ändringar i ett Git-arkiv (repository) som förses med en unik SHA-hash och ett förklarande commit-meddelande.

71
New cards

Sammanfogningskonflikt (Merge conflict)

En situation i ett versionshanteringssystem där ändringar från två grenar överlappar på samma rader i en fil, vilket kräver att utvecklaren löser konflikten manuellt.

72
New cards

Arv (Inheritance)

En mekanism i objektorienterad programmering där en subtyp ärver attribut och metoder från en supertyp med nyckelordet extends, vilket etablerar en ”är-en”-relation.

73
New cards

Komposition

En designprincip där ett komplext objekt byggs upp genom att hålla referenser till andra objekt som attribut (en ”har-en”-relation), vilket ofta ger lösare koppling än arv.

74
New cards

Trait

En abstrakt typ i Scala deklarerad med trait som kan innehålla både abstrakta och konkreta medlemmar samt parametrar, och som kan mixas in i flera klasser.

75
New cards

Subtypspolymorfism

Principen att en variabel med en viss statisk supertyp vid körtid kan referera till instanser av godtyckliga subtyper och därmed uppträda i flera olika former.

76
New cards

Dynamisk bindning

Mekanismen vid metodanrop där den faktiska metodimplementation som körs avgörs dynamiskt vid körtid baserat på objektets körtidstyp, snarare än variabelns statiska typ.

77
New cards

Överskuggning (Override)

Att i en subklass ersätta en ärvd konkret medlems implementation med en ny implementation, vilket i Scala kräver det explicita nyckelordet override.

78
New cards

Inmixning (Mix-in)

Möjligheten i Scala att ärva från flera traits samtidigt genom att lista dem separerade med kommatecken efter extends, vilket tillför flera oberoende egenskaper till en klass.

79
New cards

Anonym klass

En namnlös klass som skapas och instansieras direkt med new följt av ett trait- eller klassnamn och ett kodblock som implementerar eventuella abstrakta medlemmar.

80
New cards

Algebraisk datatyp (ADT)

En datatyp sammansatt av produkt-typer (”och”-strukturer, t.ex. case-klasser med flera fält) och summa-typer (”eller”-strukturer, t.ex. förseglade traits eller enums med disjunkta fall).

81
New cards

Typgräns (Type bound)

Villkor för generiska typparametrar där en övre gräns [T

82
New cards

Kovarians

En subtypsrelation för generiska typer markerad med prefixet + (t.ex. [+A]) som innebär att om T <: U så gäller även F[T] <: F[U].

83
New cards

Kontravarians

En subtypsrelation för generiska typer markerad med prefixet - (t.ex. [-A]) som kastar om subtypsförhållandet så att om T <: U så gäller F[U] <: F[T].

84
New cards

Invarians

Den egenskap hos en generisk typkonstruktor utan variansprefix där F[T] och F[U] är orelaterade subtyper oavsett arvsrelationen mellan T och U (nödvändigt för förändringsbara strukturer).

85
New cards

Egentyp (Self type)

En typdeklaration i en trait (t.ex. self: SuperType =>) som garanterar att traiten endast kan mixas in i klasser som också implementerar SuperType, utan att traiten explicit ärver den.

86
New cards

Givet värde (given) och Kontextparameter (using)

En mekanism i Scala 3 där parametrar märkta med using automatiskt tilldelas passande värden deklarerade med given utifrån aktuell namnrymd baserat på deras typ.

87
New cards

Ad hoc-polymorfism (Typklass)

En polymorfismteknik där funktioner anpassas till olika typer utan subtypsarv genom att kompilatorn framkallar typspecifika implementationer (typklasser) via kontextparametrar.

88
New cards

Binärsökning

En sökalgoritm med tidskomplexitet O(log⁡(n))O(\log(n)) som kräver en sorterad samling och upprepat halverar sökområdet genom att jämföra sökelementet med elementet i mitten.

89
New cards

Insättningssortering (Insertion sort)

En sorteringsalgoritm med tidskomplexitet O(n2)O(n^2) som itererar genom elementen och stegvis placerar varje nytt element på rätt position i en växande sorterad delsekvens.

90
New cards

Faltning (Convolution)

En matematisk matrisoperation inom bildbehandling där en mindre faltningskärna multipliceras elementvis över en bilds intensitetsmatris och summeras för att skapa filtrerade bildeffekter.

91
New cards

Tråd (Thread)

En självständig exekveringssekvens (instans av Thread) som körs jämlöpande med andra trådar och delar datorns processortid och gemensamma minne.

92
New cards

Future

En asynkron abstraktion i scala.concurrent som representerar resultatet av en bakgrundsberäkning som exekveras i en trådpool och blir tillgänglig vid en senare tidpunkt.

93
New cards

Autoboxning (Autoboxing)

Den automatiska typkonvertering som kompilatorn utför i Java mellan en primitiv datatyp (såsom int) och dess motsvarande wrapper-klass (såsom Integer) vid behov.