A legtöbben befejezték a Párizsi látnivalókat. Legközelebb ellenőrizzük csak a végét, és megyünk tovább.
(Ketten majdnem végeztek a Paprikával.)
NMSZC Szent-Györgyi Albert Technikum (Balassagyarmat) - 2022-23/12B1 csoport 'programozás' órai anyagai
A legtöbben befejezték a Párizsi látnivalókat. Legközelebb ellenőrizzük csak a végét, és megyünk tovább.
(Ketten majdnem végeztek a Paprikával.)
Átismételtük a Nyomtatást, elkezdtük a Párizsi látnivalókat, itt fejezzük be.
Nyomtatás feladat megoldása megoldókulccsal.
A w3schools Forms oldalának tanulmányozása.
Átnéztük a megoldást, átismételtük a tudnivalókat. Köv. órán megoldjuk.
Átvettünk minden tudnivalót a témában, linkek az előző bejegyzésben.
Gratulálok a szalagavatóhoz! Szépek, ügyesek voltatok.
A múlt hétre kiadott feladatok gondolom még nincsenek készen teljesen. Akinek nincs, az fejezze be őket.
Aki készen van, lélekben készüljön a webes feladat-megoldásra, esetleg a két feladatsor webes feladataival ismerkedjetek. Ott van a megoldás, nem lehet baj.
A reszponzivitás újdonság, ehhez először a következő oldalakat olvassátok el, nézzétek át (ez mindenképp órai feladat, ha a webesig mindennel készen vagy):
reszponzív weboldal készítés (magyar)
w3schools responsive web design css
w3schools responsive web design html
Elemér és Máté az előző két feladatsort végig oldja meg (a hálózat nélkül persze). Ha marad időtök, a múltkor kiadott javascriptes anyaggal haladjatok tovább.
Remélem, sikerült előrehaladni az előző feladatsorral. Ha még nincs kész, először azt fejezzétek be.
Innen le tudjátok tölteni a 2017. őszi informatika ismeretek érettségi feladatsort. Ez egy régebbi ípusú feladatsor, nincs benne ablakos program írás, az adatbázis feladat teljesen külön sorszám alatt szerepel, hosszabb, viszont csak lekérdezés van benne. (És a web is könnyebb, de azzal most még nem kell foglalkoznod.)
Jó munkát!
A programozás konzolos és ablakos részt, végül az adatbázis feladatot kell megoldani, ebben a sorrendben.
A konzolos részben a beolvasást és a sorok kiírását mindenki oldja meg, a többi opcionális.
Ha a megoldásban ismeretlen módszereket találsz, ne ijedj meg, mindent többféleképpen meg lehet oldani.
Segítsetek egymásnak, és ha kész vagytok, ellenőrizzétek a megoldókulccsal a megoldásokat.
Elemér és Máté is ezzel a feladatsorral kezdjen, ti végig írjátok meg a programozás-konzolos feladatot.
Átismételtünk néhány témát az SQL jegyzetből, és vettük a DELETE, INSERT INTO, UPDATE parancsokat. Majdnem végig megoldottuk az adatbázis feladatot.
Készen vagyunk, átnéztük a Sudokus érettségi feladatsort is.
class1.cs
MainWindow.xaml.cs
MainWindow.xaml
Elkezdtük a programot megírni, együtt folytatjuk.
Aki nincs kész, házi feladat befejezni. Köv. órán ellenőrizzük részletesen, jövő kedden dolgozat ebből a két adatbázisból.
Ellenőriztük a múlt órai feladatsort (az utolsóra még visszatérünk). Röpdolgozat lesz a termék adatbázisból két óra múlva.
Termék adatbázis
1. Listázd ki a képernyőre a termék kódját, és árát a termék neve szerinti csökkenő sorrendben.
2. Listázd ki a képernyőre a csoport nevét, és a termék nevét, adj alias neveket a mezőknek.
3. Listázd ki a képernyőre az első 5 termék csoportnevét és a termék nevét.
4. Listázd ki a képernyőre azoknak a termékeknek a nevét, amelyekben szerepel az s betű és az ára 3000 és 30000 között van (beleértve a két értéket is).
5. Írd ki a képernyőre a csoportonkénti legolcsóbb termék csoportnevét, és a termék árát.
6. Listázd ki a képernyőre termékcsoportonként (a termék csoportneve jelenjen meg) a maximális árat.
6. Listázd ki a képernyőre azokat a termékeket, amelyet kódja nagyobb 1500-nál, kisebb 5000-nél, és a nevükben szerepel a monitor szó, vagy a kártya szó.
Az SQL jegyzetet folyamatosan kell tanulni.
Következő órákon várható gyakorlati számonkérés (de nem a következő órán).
Megoldás:
1. Listázd ki a képernyőre a termék kódját, és árát a termék neve szerinti csökkenő sorrendben.
SELECT termékkód, termék_ár FROM termékek ORDER BY terméknév DESC
2. Listázd ki a képernyőre a csoport nevét, és a termék nevét, adj alias neveket a mezőknek.
Select terméknév AS "termék", csoportnév AS "csoport" FROM termékcsoportok INNER JOIN termékek ON termékek.csoport_azonosító = termékcsoportok.csoport_azonosító
3. Listázd ki a képernyőre az első 5 termék csoportnevét és a termék nevét.
Select csoportnév, terméknév
FROM termékcsoportok INNER JOIN termékek
ON termékek.csoport_azonosító = termékcsoportok.csoport_azonosító
limit 5
4. Listázd ki a képernyőre azoknak a termékeknek a nevét, amelyekben szerepel az s betű és az
ára 3000 és 30000 között van (beleértve a két értéket is).
select terméknév
from termékek
where terméknév like "%s%"
AND (termék_ár>=3000 AND termék_ár<=30000)
5. Írd ki a képernyőre a csoportonkénti legolcsóbb termék csoportnevét, és a termék árát..
SELECT csoportnév, MIN(termék_ár)
FROM termékek INNER JOIN termékcsoportok
ON termékek.csoport_azonosító = termékcsoportok.csoport_azonosító
GROUP BY termékcsoportok.csoportnév
6. Listázd ki a képernyőre termékcsoportonként (a termék csoportneve jelenjen meg) a maximális árat.
SELECT csoportnév, MAX(termék_ár) FROM termékek INNER JOIN termékcsoportok ON termékek.csoport_azonosító = termékcsoportok.csoport_azonosító GROUP BY termékcsoportok.csoport_azonosító
7. Listázd ki a képernyőre azokat a termékeket, amelyet kódja nagyobb 1500-nál, kisebb 5000-nél,
és a nevükben szerepel a monitor szó, vagy a kártya szó.
select terméknév, termékkód
from termékek
where (terméknév like "%kártya%" OR terméknév like "%monitor%")
AND (termékkód>1500 AND termékkód<5000)
Helyettesítés lesz, ezt a feladatlapot kell megoldanod a Termék adatbázisra.
1.
Listázd ki a képernyőre a termék kódját, és árát a termék neve szerinti csökkenő
sorrendben.
2.
Listázd ki a képernyőre a csoport nevét, és a termék nevét, adj alias
neveket a mezőknek.
3.
Listázd ki a képernyőre az első 5 termék csoportnevét és a termék nevét.
4.
Listázd ki a képernyőre azoknak a termékeknek a nevét, amelyekben
szerepel az s betű és az ára 3000 és
30000 között van (beleértve a két értéket is).
5.
Írd ki a képernyőre a csoportonkénti legolcsóbb termék csoportnevét, és a
termék nevét árát.
6.
Listázd ki a képernyőre termékcsoportonként (a termék csoportneve
jelenjen meg) a maximális árat.
6.
Listázd ki a képernyőre azokat a termékeket, amelyet kódja nagyobb 1500-nál,
kisebb 5000-nél, és a nevükben szerepel a monitor
szó, vagy a kártya szó.
Megtanultuk az INNER JOIN-t, és befejeztük a Termék adatbázis feladatlapját, kiegészítettük további feladatokkal.
A group by-t még megtanultuk. A termék adatbázis utolsó feladatával folytatjuk legközelebb.
A Termék adatbázissal továbbmentünk, aztán visszatértünk az SQL jegyzethez, itt tartunk:
Az üzletkötők átlagfizetése: SELECT AVG (sal) FROM amp WHERE job = ’SALESMAN’;
A XAMPP-ot innen töltheted le. Házi feladat feltelepíteni és kipróbálni az ÁRU adatbázist.
Megoldottuk az Áru adatbázishoz tartozó feladatsort.
Elkezdtük a Termék adatbázist.
1. feladat
SZÁMÍTOTT MEZŐK LÉTREHOZÁSA - eddig jutottunk el, aztán elkezdtük a gyakorlatot. Elkészítettük az ÁRU adatbázist, beimportáltuk az adatokat is.
Az sql jegyzetet drive-on megosztva eléred. Az order by-ig jutottunk el.
Ellenőriztük a Horgászatot, írtunk témazárót, és megterveztük a Fesztiválok adatbázist. Aki nincs kész, annak házi feladat befejezni. Köv. órán röpdolgozat egy hasonló feladatból.
Elkezdtük az első adatbázis-tervezési feladatunkat Dia-val megtámogatva, excelben. Itt folytatjuk.
Az elméletből 1 hét múlva témazáró
Indextáblát készítettünk.
Próba röpdolgozat volt, a kérdéseit házi feladat otthon kidolgozni.
A logikai adatmodellek következnek a jegyzetben.
Házi feladat az eddigieket megtanulni.
Eljutottunk az anomáliák végéig, és elkezdtünk adatbázist tervezni.
Ötletek:
Szakember-kereső adatbázis
Ennek a feladatnak az első megoldása mindenkinek megvan a digifüzetében. Itt most közzéadom olyan optimalizált verzióját, amiben mindenre találsz példát.
Önvezető autók
Napjainkban az önvezető autók egyre gyorsabban fejlődnek, több neves cég is fejleszt ilyeneket. Ebben a feladatban a rájuk vonatkozó adatokat kell feldolgoznia.
Az adatokat a lenti keretben találja. Az állomány soronként tartalmazza az autók következő adatait egymástól pontosvesszővel elválasztva:
- azonosító (gyártó és modellszám)
- teljesítmény (lóerő)
- tömeg (tonna)
- gyorsulás (hány másodperc alatt gyorsul 100 km/h-ra)
- a vezetőnek hányszor kellett beavatkozni a vezetésbe 10.000 km-en
A fájlban 9 autó adatai vannak.
Tesla Model S P90D;760;2,20;3;3 Volvo XC90;889;2,90;4;14 Volkswagen GO989;1378;3,66;5;6 Audi Q525;772;2,40;2;3 Mercedes Benz898;739;2,20;3;9 Google Drive 18;752;2,55;4;11 Delphi Magic 428B;1194;3,00;3;4 Bosch Doom300;700;2,09;4;6 Nissan Cherry 100;725;3,1;3;7 |
Például a Tesla Model S P90D autó 760 lóerős teljesítményű, 2,2 tonna tömegű, 3 másodperc alatt gyorsul 100 km/órára és a 10.000 km-es tesztvezetésen 3-szor volt szükség humán beavatkozásra.
using System;
using System.Collections.Generic;
using System.IO;
namespace autokOOP
{
class auto
{
public string azonosito { get; set; } //property (tulajdonság/jellemző)
//a fentit a prop tab-tab módszerrel könnyen elő lehet hívni
//de így is lehetne egyszerűbben:
//public string azonosito;
public int loero { get; set; }
public double tomeg { get; set; }
public int gyorsulas { get; set; }
public int beavatkozas { get; set; }
public auto(string sor) //konstruktor, példányosításkor automatikusan végrehajtódik
{
string[] atmeneti = sor.Split(';');
azonosito = atmeneti[0];
loero = Convert.ToInt32(atmeneti[1]);
tomeg = Convert.ToDouble(atmeneti[2]);
gyorsulas = Convert.ToInt32(atmeneti[3]);
beavatkozas = Convert.ToInt32(atmeneti[4]);
}
public override string ToString() //virtuális metódus
{
return $"{azonosito,-18} | {loero,4} lóerő | {tomeg,4} t | {gyorsulas,2} mp | {beavatkozas,2}* kellett beavatkozni";
//így is jó:
//Console.WriteLine("{0,-18} | {1,4} lóerő | {2,4} t | {3,2} mp | {4,2}* kellett beavatkozni", azonosito, loero, tomeg, gyorsulas, beavatkozas);
}
//ez így egyszerűbb:
public void kiir()
{
Console.WriteLine($"{azonosito,-18} | {loero,4} lóerő | {tomeg,4} t | {gyorsulas,2} mp | {beavatkozas,2}* kellett beavatkozni");
}
}
class Program
{
static int leggyorsabb3(List<auto> a)
{
int kiIndex = 0;
int min = a[0].gyorsulas;
for (int i = 1; i < a.Count; i++)
{
if (min > a[i].gyorsulas)
{
min = a[i].gyorsulas;
kiIndex = i;
}
}
return kiIndex;
}
static void legkevesbeOnallo4(List<auto> a)
{
int kiIndex = 0;
int max = a[0].beavatkozas;
for (int i = 1; i < a.Count; i++)
{
if (max < a[i].beavatkozas)
{
max = a[i].beavatkozas;
kiIndex = i;
}
}
Console.WriteLine($"\nA legkevésbé önálló autó:\n{a[kiIndex]}");
}
static double atlag5(List<auto> a)
{
double osszTomeg = 0;
for (int i = 0; i < a.Count; i++)
{
osszTomeg += a[i].tomeg;
}
return osszTomeg / a.Count;
}
static void Main(string[] args)
{
List<auto> autok = new List<auto>(); //példányosítás
//2.Az adatokat olvassa be fájlból és tárolja el egy listában.
foreach (var item in File.ReadAllLines("autok.txt"))
{
autok.Add(new auto(item));
}
Console.WriteLine("Kiírás 4 módszerrel\n1. kiírás\n");
//Összes kiírása:
foreach (var i in autok)
{
Console.WriteLine(i);
}
Console.WriteLine("\n2. kiírás");
foreach (var i in autok)
{
Console.WriteLine(i.ToString());
}
Console.WriteLine("\n3. kiírás");
for (int i = 0; i < autok.Count; i++)
{
Console.WriteLine(autok[i].ToString());
}
Console.WriteLine("\n4. kiírás");
for (int i = 0; i < autok.Count; i++)
{
autok[i].kiir();
}
//3.Írja ki a képernyőre a minta szerint a leggyorsabb autó adatait.
//(Az a leggyorsabb, ami a legkevesebb idő alatt gyorsul 100 ra.)
//A feladatot függvénnyel kell megoldani.
int index = leggyorsabb3(autok);
Console.WriteLine($"\nLeggyorsabb autó:\n{autok[index]}"); //virtuális metódussal
Console.WriteLine($"\nLeggyorsabb autó once more:");
autok[index].kiir();
//4.Írja ki a képernyőre a minta szerint a legkevésbé önálló autó azonosítóját.
//(Az a legkevésbé önálló, amelynél a legtöbbet kellett beavatkozni a vezetésbe.)
//Metódust kell használni.
legkevesbeOnallo4(autok);
//6.Írja ki a képernyőre az autók átlag tömegét, függvénnyel.
Console.WriteLine("Az autók átlag tömege: {0:0.00}", atlag5(autok));
Console.WriteLine("Az autók átlag tömege once more: {0}", Math.Round(atlag5(autok),2));
//7.Írja ki a képernyőre, és egy új fájlba autónként a következő adatokat szóközzel elválasztva:
//sorszám(a feldolgozás sorrendjében automatikusan generált), tömeg kg-ban. (1 tonna = 1000 kg).
//Nem kötelező metódust használni.
Console.WriteLine("Fájlba írás 1. verzió");
List<string> ki = new List<string>();
for (int i = 0; i < autok.Count; i++)
{
ki.Add($"{i + 1}. {autok[i].tomeg * 1000} kg");
Console.WriteLine(ki[i]);
}
File.WriteAllLines("tomeg1.txt", ki);
Console.WriteLine("Fájlba írás 2. verzió");
StreamWriter sw = new StreamWriter("tomeg2.txt");
string kiirando = string.Empty;
for (int i = 0; i < autok.Count; i++)
{
kiirando = $"{i + 1}. {autok[i].tomeg * 1000} kg";
//egyszerűbben:
//kiirando = i + 1 + ". " + autok[i].tomeg * 1000 + " kg";
sw.WriteLine(kiirando);
Console.WriteLine(kiirando);
}
sw.Close();
Console.Write($"\nA program bezárásához nyomjon meg egy billentyűt...");
Console.ReadLine();
}
}
}
Adatbázis: vizsgaremek adatbázisának befejezése teljesen készre, dokumentáció kiegészítése, befejezése. Vizsgaremek felületének megvalósítá...