diff --git a/hw.c b/hw.c index 59b7de7..009d2e1 100644 --- a/hw.c +++ b/hw.c @@ -3,7 +3,8 @@ /* ---- Technical equipment (Technické vybavení) --------------------- */ NetLesson hw_lessons[HW_LESSONS] = { - { .n_slides = HW_SLIDES, .unit_page = "hwunit1", .ex_page = "hwex1" }, + { .n_slides = HW_SLIDES, .unit_page = "hwunit1", .ex_page = "hwex1" }, + { .n_slides = HW2_SLIDES, .unit_page = "hwunit2", .ex_page = "hwex2" }, }; void hw_rail_theme_reset(void); @@ -256,7 +257,7 @@ void hw_add_node(GtkFixed *fixed, int index) { GtkWidget *name; char *text; static const char *unit_keys[HW_LESSONS] = { - "hw_unit1" + "hw_unit1", "hw_unit2" }; card = gtk_button_new(); @@ -763,3 +764,113 @@ GtkWidget *build_hw_unit1_exercise_page(void) { return build_hw_mcq_page(0, "hwunit1", "hw_ex1_title", "hw_quiz1_head", qs, hints, 6); } + +GtkWidget *build_hw_unit2_page(void) { + static const NetSlide slides[HW2_SLIDES] = { + { + "1 / 6 • Přehled", "Historie počítačů", + "Generace se dělí podle klíčové technologie své doby.", + { + "1. Předchůdci – do 30. let 19. století", + "2. Nultá generace – 1938–1944", + "3. První generace – 1944–1955", + "4. Druhá generace – 1955–1964", + "5. Třetí generace – 1964–1971", + "Další snímky shrnují znaky jednotlivých generací.", + NULL, + }, + }, + { + "2 / 6 • 0. generace", "Počítače 0. generace (1938–1944)", + "Tip: počítačů bylo málo a často sloužily armádě.", + { + "Existovalo jen několik počítačů na světě.", + "Většinou měly vojenský účel.", + NULL, + }, + }, + { + "3 / 6 • 1. generace", "Počítače 1. generace (1944–1955)", + "Klíčový objev: elektronka", + { + "Objev elektronky umožnil tuto generaci.", + "Ještě neexistoval software v dnešním smyslu.", + "Data a programy se zadávaly pomocí děrných štítků.", + NULL, + }, + }, + { + "4 / 6 • 2. generace", "Počítače 2. generace (1955–1964)", + "Klíčový objev: tranzistor", + { + "Objev tranzistoru nahradil elektronky.", + "Používala se hlavní externí paměť.", + "Počítače měly menší rozměry než v 1. generaci.", + NULL, + }, + }, + { + "5 / 6 • 3. generace", "Počítače 3. generace (1964–1971)", + "Klíčový objev: integrovaný obvod", + { + "Objev integrovaného obvodu.", + "Stále se používala hlavní externí paměť.", + "Rozměry počítačů se dál zmenšovaly.", + NULL, + }, + }, + { + "6 / 6 • 4. generace", "Počítače 4. generace", + "Klíčové: programovatelné mikroprocesory", + { + "Nastupují programovatelné mikroprocesory.", + "1972 – první počítačová hra", + "1973 – první disketa", + "1979 – první CD", + NULL, + }, + }, + }; + + return build_hw_unit_page(&hw_lessons[1], "hw_unit2", "hw_unit2_sub", + slides, HW2_SLIDES); +} + +GtkWidget *build_hw_unit2_exercise_page(void) { + static const ChoiceQ qs[] = { + {"Kdy probíhala nultá generace počítačů?", + {"1938–1944", "1944–1955", "1955–1964", "1964–1971"}, 4, 0}, + {"Co bylo typické pro počítače 0. generace?", + {"Byly v každé domácnosti", "Jen několik kusů, často vojenský účel", + "Měly mikroprocesory", "Používaly CD"}, + 4, 1}, + {"Která technologie patří k 1. generaci?", + {"Tranzistor", "Elektronka", "Integrovaný obvod", "Mikroprocesor"}, + 4, 1}, + {"Čím se zadávaly data v 1. generaci?", + {"USB fleškou", "Děrnými štítky", "CD", "Disketou"}, 4, 1}, + {"Která technologie patří k 2. generaci?", + {"Elektronka", "Tranzistor", "Mikroprocesor", "CD"}, 4, 1}, + {"Která technologie patří k 3. generaci?", + {"Elektronka", "Tranzistor", "Integrovaný obvod", "Disketa"}, + 4, 2}, + {"Co je typické pro 4. generaci?", + {"Jen děrné štítky", "Programovatelné mikroprocesory", + "Jen vojenské použití", "Žádný software"}, + 4, 1}, + {"Kdy vznikla první počítačová hra (podle lekce)?", + {"1964", "1972", "1973", "1979"}, 4, 1}, + }; + static const char *hints[] = { + "Nultá generace: 1938–1944", + "Jen několik počítačů, většinou vojenský účel", + "1. generace – objev elektronky", + "1. generace – děrné štítky", + "2. generace – objev tranzistoru", + "3. generace – integrovaný obvod", + "4. generace – programovatelné mikroprocesory", + "1972 – první počítačová hra", + }; + return build_hw_mcq_page(1, "hwunit2", "hw_ex2_title", "hw_quiz2_head", + qs, hints, 8); +} diff --git a/i18n.c b/i18n.c index d14000f..495af02 100644 --- a/i18n.c +++ b/i18n.c @@ -290,6 +290,13 @@ const TrEntry tr_ui[] = { "Quiz: computer architecture"}, {"hw_quiz1_head", "Kvíz k architektuře počítače", "Quiz on computer architecture"}, + {"hw_unit2", "Historie počítačů", "History of computers"}, + {"hw_unit2_sub", "6 snímků o generacích počítačů a pak kvíz.", + "6 slides about computer generations, then a quiz."}, + {"hw_ex2_title", "Kvíz: historie počítačů", + "Quiz: history of computers"}, + {"hw_quiz2_head", "Kvíz k historii počítačů", + "Quiz on the history of computers"}, {NULL, NULL, NULL} }; @@ -937,6 +944,19 @@ const TrEntry tr_content[] = { {"Operační paměť uchovává program i data", NULL, "Main memory stores both the program and data"}, {"Byl tvůrcem teorie her", NULL, "He created game theory"}, + {"Nultá generace: 1938–1944", NULL, "Zeroth generation: 1938–1944"}, + {"Jen několik počítačů, většinou vojenský účel", NULL, + "Only a few computers, mostly for military use"}, + {"1. generace – objev elektronky", NULL, + "1st generation – invention of the vacuum tube"}, + {"1. generace – děrné štítky", NULL, "1st generation – punch cards"}, + {"2. generace – objev tranzistoru", NULL, + "2nd generation – invention of the transistor"}, + {"3. generace – integrovaný obvod", NULL, + "3rd generation – integrated circuit"}, + {"4. generace – programovatelné mikroprocesory", NULL, + "4th generation – programmable microprocessors"}, + {"1972 – první počítačová hra", NULL, "1972 – first computer game"}, {NULL, NULL, NULL} }; diff --git a/main.c b/main.c index f77d7c3..ea2d990 100644 --- a/main.c +++ b/main.c @@ -174,6 +174,8 @@ void activate(GtkApplication *app, gpointer user_data) { gtk_stack_add_named(main_stack, build_hwmap_page(), "hwmap"); gtk_stack_add_named(main_stack, build_hw_unit1_page(), "hwunit1"); gtk_stack_add_named(main_stack, build_hw_unit1_exercise_page(), "hwex1"); + gtk_stack_add_named(main_stack, build_hw_unit2_page(), "hwunit2"); + gtk_stack_add_named(main_stack, build_hw_unit2_exercise_page(), "hwex2"); { typedef GtkWidget *(*NetBuilder)(void); static const struct { diff --git a/maturita.h b/maturita.h index 513c5fc..09434f9 100644 --- a/maturita.h +++ b/maturita.h @@ -59,8 +59,9 @@ #define NET10_SLIDES 3 #define NET_LESSONS 10 #define HW_UNITS 10 -#define HW_LESSONS 1 +#define HW_LESSONS 2 #define HW_SLIDES 3 +#define HW2_SLIDES 6 typedef enum { THEME_CATPPUCCIN = 0, @@ -763,6 +764,8 @@ void hw_lessons_apply_lang(void); GtkWidget *build_hwmap_page(void); GtkWidget *build_hw_unit1_page(void); GtkWidget *build_hw_unit1_exercise_page(void); +GtkWidget *build_hw_unit2_page(void); +GtkWidget *build_hw_unit2_exercise_page(void); void draw_chip_icon(GtkDrawingArea *area, cairo_t *cr, int width, int height, gpointer data); void net_lesson_notes_ensure(NetLesson *L);