Lehen kontrola dela eta,
|
|
Informatika, |
Lehen kontrola dela eta,
|
|
Informatika, |
Eratostenes (antzinako grezieraz: Ἐρατοσθένης; K.a. 276 inguru - K.a. 195 inguru) matematikari, geografo, kirolari, poeta eta astronomo greziarra izan zen. Alexandriako Liburutegia famatuaren zuzendari izendatu zuten eta aurkikuntza ugari egin zituen, hala nola, latitude eta longitude sistema. Eratostenes ezaguna da Lurraren zirkunferentzia kalkulatzen lehen greziarra izan zelako, eta zehaztasun harrigarriz kalkulatu zuen.
Aspalditik ezagutzen zen eguzkiaren ibilera ortzian desberdina dela urtearen aro batetik bestera. Udan punturik altuena hartzen du eguzkiak eta neguan punturik baxuena, udako solstizioa (ekainak 21) eta neguko solstizioa (abenduak 21) data garrantzitsuak ziren garai bateko gizakiarentzat eta aintzinatik ospatzen ziren.
Eguzkiaren ibilera ortzian dela eta, dakigunez, objektuek sortzen duten itzalaren neurria oso desberdina da urteko aroaren arabera. Itzalik laburrena udako solstizioan ematen da eguerdiko eguzkia gorengoko puntuan dagoelako, eta itzalik luzeena neguko solstizioan eguerdiko eguzkia behe-behean dagoelako.
Alexandriako Liburutegian zegoela, Siena hiriari (gaur egun Aswan) buruzko behaketa-txosten bat aurkitu zuen Eratostenesek, non esaten baitzen udako solstizioaren eguneko eguerdian objektuek (obeliskoek adibidez) ez zutela itzalik sortzen eta putzuen hondoan eguzkiaren argia ikus zitekeela. Izan ere, Siena hiria Alexandriatik 843 kilometro hegoaldera kokatua, Kantzer Tropikoaren lerroaren gainean dago (egia esan, tropikotik oso hurbil dago) eta eguzkiaren izpiek lurrarekiko elkarzut jotzen dute Kantzer Tropikoan udako solstizioan.
Bestalde, udako solstizioaren egunean (ekainaren 21ean) Alexandrian objektuek itzala ematen zuten, urteko itzalik txikiena baina neurtzeko modukoa. Eratostenesek udako solstizioaren egunaren eguerdian sortzen zen itzalaren neurria hartu zuen eguzkiaren izpien angelua kalkulatu ahal izateko, 7º 12' gutxi gorabehera. Eratostenesek neurtu zuen 7º 12' angelua graduetan emanik 7º+(12/60)º = 7,2º dira.
Eratostenesek uste zuen Lurra esferikoa zela eta itzalen desberdintasun horretan erreparatuz frogatu zuen Lurra ezin zitekeela izan laua. Baina, α=7,2º angeluarekin batera, Alexandria eta Siena arteko D distantzia behar zuen Eratostenesek planetaren dimentsioak zehazteko.
Ez dago oso argi nola lortu zuen Eratostenesek hiri bien arteko distantzia, baina 5.000 estadio (1 estadio = 184 m) atera zitzaion; seguruenik salerosketan ibilitako merkatariek emandako informazioari esker estimatu zuen distantzia hori Eratostenesek.
Datu hauekin, eta suposatuz lurra guztiz esferikoa dela ondoko emaitzak lortzen dira:
Lurraren zirkunferentzia = 5.000·(360/7,2) = 250.000 estadio = 250.000·(184/1.000) = 46.000 Km
Lurraren erradioa = 46.000/(2·3,14) = 7.325 Km
Gaur egun dakigu Lurraren erradioa 6.370 Km-koa dela eta esan daiteke Eratostenek kalkulatutako 7.325 Km-ko erradioa zehaztasun handiko lorpena izan zela, errorea %15ekoa delako. Emaitza harrigarria kontutan izanik bere tresna bakarrak makilak, sokak, pisuak eta oinarrizko matematika izan zirela, ahaztu gabe neurketa horiek duela 2.200 urte inguru egin zituela.
Amaitzeko, hona hemen Carl Sagan astronomoaren azalpenak non adierazten digun Lurraren azala ezin daitekeela izan laua:
Demagun itsasoaren ondoan gaudela eta urrunera, zeruertzera, begiratzen dugula. Zenbat kilometrotara batzen dira zerua eta itsasoa? Beste modu batez galdetuta: Zenbat kilometrotara dago ostertza edo zeruertza?
Irudia ikusi, non h aldagaia eta R konstantea datuak diren eta d distantzia lortu nahi den:
{
Datuak:
rAltuera aldagaia, metrotan emandako altuera
R konstantea, lurraren erradioa 6370 Km
Ezezaguna:
rDistantzia aldagaia, lortu nahi den distantzia kilometroetan
}
PROGRAM OstertzaKilometroetan ;
CONST
R = 6370 ;
VAR
rAltuera, rDistantzia : Real ;
BEGIN
WriteLn('//////////////////////////////////////') ;
WriteLn ;
Write('Eman beatokirean altuera metroetan: ':30) ;
ReadLn(rAltuera) ;
rDistantzia := sqrt(sqr(rAltuera) + 2*rAltuera*R*1000) ;
WriteLn ;
WriteLn('Ostertzaren distantzia = ':22, rDistantzia:0:2, ' m') ;
WriteLn('Ostertzaren distantzia = ':22, rDistantzia/1000:0:5, ' Km') ;
WriteLn ;
WriteLn('//////////////////////////////////////') ;
ReadLn ;
END.
Josteko makina nola dabilen erakusten duen bideoa:
A slow motion look at an industrial sewing machine is probably the best way to understand how this kind of machine works [explanation + animation: https://t.co/tvONyxZXpZ] [source and full video: https://t.co/cm2LZNTFda] pic.twitter.com/ig18Z7vcGw
— Massimo (@Rainmaker1973) October 30, 2019
Josteko makina nola dabilen erakusten duen animazioa:
As a kid I always wondered how a sewing machine actually worked.
— Christian Knudsen (@chrbknudsen) January 6, 2019
I'm just going to stare at this the rest of the day... pic.twitter.com/VyECEafAln
Josteko makina nola dabilen erakusten duen animazioa:
LOVE this little animation of how a sewing machine works! click to enter for a chance to #win #OrganicSeptember https://t.co/3VMcJb2uyp pic.twitter.com/Xldk75n4Nl
— AGreenerLifeForUs.com (@OurGreenerLife) September 24, 2016
Josteko makina nola dabilen erakusten duen animazioa:
If u have ever wondered how a sewing machine works - here is a grt animation to show u.. pic.twitter.com/LCpC6MrxkN
— Ramta Jogi (@hitri04) March 3, 2015
Animazio honek erakusten du nola eraikitzen ziren zubiak Europan XIV. mendean:
14 century bridge construction in Europe pic.twitter.com/qejaXlgQFO
— GÄR-19 🌲🇦🇺 (@arurkuo) October 14, 2020
Etxe bateko ataria, zein tunel bat, zein katedral bat eraikitzeko teknika erakusten da:
This video shows the versatility of the Zipper truck system which helps create tunnels with openings very quickly with no permanent support work [full video: https://t.co/4gE5ElO9IO] pic.twitter.com/2YevNXgQrt
— Massimo (@Rainmaker1973) December 10, 2020
Argazki hau "Life" aldizkarian argitaratu zen 1961ean, NASAren Espazioko Lasterketa (Race for Space) garai hartan nolakoa zen jakiteko. Arbela izugarria zen espazio-ontzien ibilbideen inguruko kalkulu luze guztietan sartzeko. Horregatik, eskailerak!
Ordenagailuek arbel izugarriak ordezkatu dituzte orain. Argazki honek ez du "voila" unerik agerian uzten, zientzialariek inoiz ez luketelako nahi beren kalkulu arrakastatsuak jendaurrean jartzea batez ere lehiaketa dagoenean.
La carrera por el espacio, en el año 1961
Estos científicos de la NASA están calculando complejas trayectorias de naves espaciales utilizando un cálculo largo y tedioso. Como no había computadoras, todo su trabajo tendría que hacerse en una pizarra. El tablero está lleno de tantos cálculos que se necesitan escaleras largas para llenar todo el espacio.
De manera realista, las ecuaciones en este tablero probablemente sean solo ecuaciones genéricas que se publicarían en una revista. Durante la carrera por el espacio, ¡los científicos no hubieran querido que sus cálculos reales fueran publicados en la revista Life!
Kaxa erraldoi hau ez da makina bat, altzari bat edo leku batetik bestera garraiatzen ari den ordenagailua.
5 megabyteko memoria duen disko gogorra da. Biltegiratze kopuru hori eta disko gogorraren tamaina izugarri hori elektronika zaharrari dagokio (ikusi http://museodeelectronica.blogspot.com/p/blog-page_2380.html). Biltegiratze hau hilean 3.000 dolarrean errentan eman zuen enpresak (gaur egun, inflazioarekin 30.000 dolarren baliokidea den kopurua).
Horren aldean, egunero 32 gigabyte baino gehiago eraman ditzakegu gure telefonoetan. IBMren 5 MB-ko biltegiratzeak 6 argazki inguru bakarrik eduki ditzakeen arren, hori ez litzateke oso lagungarria izango egungo selfie mugagabeen belaunaldian (batez ere memoria hori aldean eraman beharko bagenu).
Esta enorme caja contiene un disco duro IBM de 5MB, en el año 1956.
Hoy en día, las computadoras portátiles y los teléfonos son tan delgados y livianos que podemos recogerlos con una sola mano. Los primeros discos duros, sin embargo, eran mucho más pesados y ocupaban mucho más espacio. En esta fotografía, al menos cuatro hombres luchan por maniobrar el disco duro en un camión. El modelo de IBM podría almacenar 5 MB, lo que equivale a aproximadamente 6 imágenes. ¡Una empresa podría arrendar el almacenamiento por $ 3.200 al mes, lo que probablemente rondaría los $ 30.000 en la actualidad si se tiene en cuenta la inflación!
CASE-OF batean aukeratzailea balio diskretua izango da beti:
Yo: he programado estas tres opciones para que puedas elegir y todo sea más sencillo.
— Fulano Magnético 🇪🇸 (@fulanomagnetico) August 6, 2020
El usuario: pic.twitter.com/xDn85AGwvR
Kontagailu mekaniko batek zenbaketa bitarra nola burutzen duen:
How a mechanical binary counter works. pic.twitter.com/KI875l9VzD
— Universal Curiosity (@UniverCurious) December 10, 2020
| Koord. | E-1 | E-2 | H / K /B | Aldaketaren Araua | |
| (12, 10) | 0 | 1 | 0 / 1 / 7 | B > Hx3 | 7 > 0x3 |
| (1, 1) | 0 | -1 | 2 / 1 / 5 | B < Hx3 | 5 < 2x3 |
| (16, 18) | -1 | 1 | 3 / 0 / 5 | B >= 4 | 5 >= 4 |
| (10, 1) | 1 | 0 | 3 / 2 / 3 | H+K > B | 3+2 > 3 |
![]() |
![]() |
Lehen faseko Biziaren Jokoa simulazioaren programa abiapuntua delako, berreskura dezagun Windows sistema baterako, lehen faseko programa exekutagarria:
|
Lehen faseko Biziaren Jokoa simulazioaren programa abiapuntua delako, berreskura dezagun Macintosh sistema baterako, lehen faseko programa exekutagarria:
|
1., 2. eta 3. urratsen argibidea
Array laguntzailearen datu-mota:
trdDataHerria = RECORD sDataBat: tsKate10 ; sHerriBat END ; tardDatakHerriak = ARRAY[1..MUGA] OF trdDataHerria ;
Array laguntzailearen aldagaiak:
ardDataHerriak : tardDataHerriak ; Hasiera-hasiera batean, dena hutsik dago:
Lehen data-herri [2020-03-29|Arizkun] bikoterako,
ardDatakHerriak arraya aztertu
ondoren arazorik ez dagoelako:
Bigarren data-herri
[2020-03-29|Hondarrabia] bikoterako,
ardDatakHerriak arraya aztertu
eta datu berriak direlako:
Hirugarren data-herri
[2020-05-01|Hondarrabia] bikoterako,
ardDatakHerriak arraya aztertu
eta datu berriak direlako, Hondarrabia herriko daturik badago baina dauden fitxategien izenak 2020-03-29_Hondarrabia.dat, 2020-03-30_Hondarrabia.dat, 2020-03-31_Hondarrabia.dat, 2020-04-01_Hondarrabia.dat eta 2020-04-02_Hondarrabia.dat direlako arazorik ez dago bikote honekin:
Laugarren data-herri [2020-03-31|Arizkun] bikoterako,
ardDatakHerriak arraya aztertu
eta ez onartu fitxategien kointzidentziak egongo direlako (adibidez: dagoeneko 2020-03-31_Arizkun.dat fitxategia badago C:\Herriak karpetan, eta ardDatakHerriak arrayaren informazioa arakatuz jakiterik dago).
Ez onartu, baina nola erantzun? Ezezkoan, programak zer egin behar duen
zuei utziko dizuet erabakitzen (posibilitate desberdinak daude: batzuk
hobeak eta astunagoak programatzeko, beste batzuk errazagoak
programatzeko baina eskasagoak programaren malgutasunaren aldetik).
Laugarren saiakera horren osteko egoera hirugarrenekoa litzateke:
|
(* -------------------------------------------------------- *)
(* DATU-BASEA: C:\Herriak\2020-03-29_DB.dat fitxategia eta *)
(* bere barnean *)
(* fitxategi hauen *)
(* edukia: *)
(* *)
(* C:\Herriak\2020-03-29_Arizkun.dat *)
(* C:\Herriak\2020-03-30_Arizkun.dat *)
(* C:\Herriak\2020-03-31_Arizkun.dat *)
(* C:\Herriak\2020-04-01_Arizkun.dat *)
(* C:\Herriak\2020-04-02_Arizkun.dat *)
(* C:\Herriak\2020-03-29_Hondarrabia.dat *)
(* C:\Herriak\2020-03-30_Hondarrabia.dat *)
(* C:\Herriak\2020-03-31_Hondarrabia.dat *)
(* C:\Herriak\2020-04-01_Hondarrabia.dat *)
(* C:\Herriak\2020-04-02_Hondarrabia.dat *)
(* -------------------------------------------------------- *)
PROGRAM BiziarenJokoa_II_A_Azp3 ;
USES
SysUtils ; { FileExists erabiltzeko }
CONST
X_MAX = 20 ;
Y_MAX = 20 ;
LAGIN3x3 = 3 ;
MUGA = 45 ;
TYPE
taiTaula = ARRAY[0..X_MAX+1, 0..Y_MAX+1] OF Integer ;
taaiTaulak = ARRAY[1..5] OF taiTaula ;
tFitxategiTaulaBat = FILE OF taiTaula ;
tsKate99 = STRING[99] ;
tsKate30 = STRING[30] ;
tsKate11 = STRING[11] ;
tsKate10 = STRING[10] ;
trdDataHerria = RECORD
sDataBat: tsKate10 ; (* array laguntzailerako *)
sHerriBat: tsKate30 ;
END ;
tardDatakHerriak = ARRAY[1..MUGA] OF trdDataHerria ; (* array laguntzailerako *)
tasDatak = ARRAY[1..5] OF tsKate10 ;
taiLagin = ARRAY[1..LAGIN3x3, 1..LAGIN3x3] OF Integer ;
taaiLaginak = ARRAY[1..5] OF taiLagin ;
trdDatuak = RECORD
aaiLaginak: taiLagin ;
asDatak: tasDatak ;
END ;
trdInformazio = RECORD
rdDatuak: trdDatuak ;
sHerria: tsKate30 ;
sKalifikazioa: tsKate11 ;
END ;
tDBfitxategi = FILE OF trdInformazio ;
{ ------------------------- Programa Nagusia ------------------------- }
VAR
//aiTaula1, aiTaula2, aiTaula3, aiTaula4, aiTaula5 : taiTaula ;
aaiTaulak : taaiTaulak ;
iDataHila, iDataEgun, k : Integer ;
sData : tsKate10 ;
sHerria : tsKate30 ;
sDataHerriFitxIzen, sFitxIzenDB : tsKate99 ;
ardDatakHerriak : tardDatakHerriak ; (* data-herri bikotearen datu berriak kontrolatzeko array laguntzailea *)
iDatakHerriakLuzera : Integer ; (* array laguntzailearen luzera MUGA=45 *)
cErantz : Char ;
BEGIN
WriteLn ;
WriteLn ;
{ ================================================================= }
{ 2020KO DATA BATEKO HERRIEN DATUAK ESKURATU }
{ ------------------------------------------ }
{ Data bateko herrien datu-basea sortu aurretik datuak jasoko dira. }
{ 2020ko data bat teklatuaren bitartez hartu eta hainbat herriren }
{ izenak emango ditu erabiltzaileak, herri bakoitzari datu sorta }
{ bat dagokio (22x22ko bost array) eta bost taula horiekin bost }
{ fitxategi lortulo dira, taula bakoitzetik fitxategi bat. 22x22ko }
{ taulen edukia balio osoak dira eta proiektuaren I zatian bezala, }
{ lehen taula random bitartez betetzen da eta beste lau taulak }
{ pandemiaren hedapena simulatzen duten arauak aplikatuta; baina }
{ proiektuaren I zatian ez bezala, 22x22ko taulak ez dira 5 aldagai }
{ izango, baizik aaiTaulak izeneko array baten elementuak, hau da, }
{ bost array karratu biltegitzen dituen array lineala. Bost taulen }
{ array horri esker eskuratuko dira herriari dagozkion datuen bost }
{ fitxategiak. }
{ }
{ Programaren hasiera hau izan daiteke, non azpiprogramen ardurak }
{ hauek diren: }
{ }
{ fnboEgunEgokia funtzio bolearrak hile baterako eman den egunaren }
{ zenbakia ondo dagoen kontrolatzen duen }
{ fnsDataEraiki funtzioak data karaktere-kate bezala itzultzen du }
{ fnboHerriBerriaDa funtzio bolearrak asHerrienZerrenda arraya ara- }
{ katzen du teklatuz emandako herria datu-basean }
{ birritan ez gordetzeko }
{ TaulaBatArrayanGorde prozedurari esker bost egunen aaiTaulak }
{ arraya betetzen da (lehen eguna random bidez }
{ eta beste lauak pandemia hedatzeko arauez) }
{ BostFitxategiSortu prozedurak, aurreko informazioan oinarrituta, }
{ izen hauetako fitxategiak sortuko ditu, esate }
{ baterako: 2020-03-29_Arizkun.dat }
{ 2020-03-30_Arizkun.dat }
{ 2020-03-31_Arizkun.dat }
{ 2020-04-01_Arizkun.dat }
{ 2020-05-02_Arizkun.dat }
{ ================================================================= }
REPEAT
Write('Datuak noiz hasi ziren hartzen? 2020ko zein hiletan: ') ;
ReadLn(iDataHila) ;
UNTIL (iDataHila >= 1) AND (iDataHila <= 12) ;
REPEAT
Write('2020ko ', fnsHilabetea(iDataHila),'ren eguna eman: ') ;
ReadLn(iDataEgun) ;
UNTIL fnboEgunEgokia(iDataEgun, iDataHila) ;
sData := fnsDataEraiki(iDataHila, iDataEgun) ;
iDatakHerriakLuzera := 0 ;
REPEAT
WriteLn(sData, ' datarako herrien datuak sortzen') ;
REPEAT
Write('Eman herriaren izena, ''Arizkun'' adibidez: ') ;
ReadLn(sHerria) ;
sDataHerriFitxIzen := 'C:\Herriak\' + sData + '_' + sHerria + '.dat' ;
UNTIL fnboDataHerriBerriaDa(sData, sHerria, ardDatakHerriak, iDatakHerriakLuzera) ;
FOR k:=1 TO 5 DO
BEGIN
{ Proiektu I zatiaren A atala berreskuratu eta horri esker aaiTaulak }
{ arrayari balioak eman, lehena random eta beste lauak hedapen legez }
TaulaBatArrayanGorde(aaiTaulak, k) ; { 22x22 neurriko osoen 5 taula }
END ;
BostFitxategiSortu(sData, sHerria, aaiTaulak) ;
Write('Herri gehiagoren fitxategirik sortu nahi duzu? (B/E): ') ;
ReadLn(cErantz) ;
cErantz := Upcase(cErantz) ;
UNTIL (cErantz = 'E') OR (iDatakHerriakLuzera = MUGA) ;
{ ================================================================= }
{ 2020 URTEKO HERRIEN DATU-BASEA SORTU }
{ ------------------------------------ }
{ 2020ko herrien datu-basea erregistroen fitxategi bat izango da, }
{ datu-basearen erregistroek hiru eremu izango dituzte: }
{ 1. eremua, rdDatuak erregistroa, bi eremu: }
{ 1.1 eremua: aiDatak bost kateen arraya }
{ 1.2 eremua: aiLaginak bost osoen arraya }
{ 2. eremua, sHerria kararaktere-katea }
{ 3. eremua, sKalifikazioa 11 karakteredun kararaktere-katea }
{ }
{ Datu-base sortzeko eta betetzeko, erabiltzaileak data bat finkatu }
{ ondoren, hainbat herriren izenak emango ditu. Datu-baseak izango }
{ duen izen osoa 'C:\Herriak\XXXX-XX-XX_DB.dat' izan daiteke, non }
{ XXXX-XX-XX data bat den. Programak kontrolatu beharko du data }
{ jakin bateko herriren datuak, ez direla behin baino gehiagotan }
{ datu-basean grabatuko. }
{ }
{ Programaren jarraipena hau izan daiteke, non azpiprogramen lanak }
{ hauek diren: }
{ }
{ fnboEgunEgokia funtzio bolearrak hile baterako eman den egunaren }
{ zenbakia ondo dagoen kontrolatzen duen }
{ fnsDataEraiki funtzioak data karaktere-kate bezala itzultzen du }
{ fnboHerriaDBn funtzio boolearraren lana da frogatzea herri jakin }
{ bat ote dagoen XXXX-XX-XX data bateko datu-basean, }
{ hau da, C:\Herriak\XXXX-XX-XX_DB.dat fitxategian }
{ herri jakin hori dagoen ala ez dagoen }
{ HerriaErregistratuDBn prozedurak kalkuluak egin ondoren, elementu }
{ berri bat gehitzen dio datu-baseari }
{ ================================================================= }
REPEAT
Write('Zein eguneko datu-basea sortuko da? Eman 2020ko hilea: ') ;
ReadLn(iDataHila) ;
UNTIL (iDataHila >= 1) AND (iDataHila <= 12) ;
REPEAT
Write('2020ko ', fnsHilabetea(iDataHila),'ren eguna eman: ') ;
ReadLn(iDataEgun) ;
UNTIL fnboEgunEgokia(iDataEgun, iDataHila) ;
sData := fnsDataEraiki(iDataHila, iDataEgun) ;
sFitxIzenDB := 'C:\Herriak\' + sData + '_DB.dat' ;
WriteLn(sData, ' datarako herrien datuak datu-basean erregistratzen') ;
REPEAT
Write('Eman herriaren izena, ''Arizkun'' adibidez: ') ;
ReadLn(sHerria) ;
sDataHerriFitxIzen := 'C:\Herriak\' + sData + '_' + sHerria + '.dat' ;
IF FileExists(sDataHerriFitxIzen) THEN
ErregistratuDataHerriaDBan(sDataHerriFitxIzen, sFitxIzenDB)
ELSE
WriteLn(sDataHerriFitxIzen, ' izeneko data-herri bikoterik ez dago!') ;
Write('Herri gehiago datu-basera gehitu nahi duzu? (B/E): ') ;
ReadLn(cErantz) ;
cErantz := Upcase(cErantz) ;
UNTIL (cErantz = 'E') ;
WriteLn ;
WriteLn('=======================') ;
WriteLn('RETURN sakatu amaitzeko') ;
WriteLn('=======================') ;
ReadLn ;
END.
(* -------------------------------------------------------- *)
(* DATU-BASEA: C:\Herriak\XXXX-XX-XX_DB.dat fitxategia eta *)
(* bere barnean *)
(* fitxategi hauen *)
(* edukia: *)
(* *)
(* C:\Herriak\2020-03-29_Arizkun.dat *)
(* C:\Herriak\2020-03-30_Arizkun.dat *)
(* C:\Herriak\2020-03-31_Arizkun.dat *)
(* C:\Herriak\2020-04-01_Arizkun.dat *)
(* C:\Herriak\2020-04-02_Arizkun.dat *)
(* -------------------------------------------------------- *)
{ ================================================================= }
{ 2020KO DATA BATEKO HERRIEN DATUAK ESKURATUTA }
{ -------------------------------------------- }
{ }
{ Adibidez: 'C:\Herriak\2020-03-29_Arizkun.dat' }
{ 'C:\Herriak\2020-03-30_Arizkun.dat' }
{ 'C:\Herriak\2020-03-31_Arizkun.dat' }
{ 'C:\Herriak\2020-04-01_Arizkun.dat' }
{ 'C:\Herriak\2020-04-02_Arizkun.dat' }
{ }
{ ================================================================= }
{ 2020 URTEKO HERRIEN DATU-BASEA SORTUTA }
{ -------------------------------------- }
{ }
{ Adibidez: }
{ 'C:\Herriak\2020-03-29_DB.dat' }
{ }
{ ================================================================= }
PROGRAM BiziarenJokoa_II_B_Azp3 ;
USES
SysUtils ; { FileExists erabiltzeko }
CONST
X_MAX = 20 ;
Y_MAX = 20 ;
LAGIN3x3 = 3 ;
MUGA = 45 ;
TYPE
tsKate99 = STRING[99] ;
tsKate30 = STRING[30] ;
tsKate11 = STRING[11] ;
tsKate10 = STRING[10] ;
tasDatak = ARRAY[1..5] OF tsKate10 ;
taiLagin = ARRAY[1..LAGIN3x3, 1..LAGIN3x3] OF Integer ;
taaiLaginak = ARRAY[1..5] OF taiLagin ;
trdDatuak = RECORD
aaiLaginak: taiLagin ;
asDatak: tasDatak ;
END ;
trdInformazio = RECORD
rdDatuak: trdDatuak ;
sHerria: tsKate30 ;
sKalifikazioa: tsKate11 ;
END ;
tDBfitxategi = FILE OF trdInformazio ;
{ ------------------------- Programa Nagusia ------------------------- }
VAR
iDataHila, iDataEgun : Integer ;
sData : tsKate10 ;
sFitxIzenDB : tsKate99 ;
cAukera : Char ;
{ ================================================================= }
{ 2020 URTEKO HERRIEN DATU-BASEA KUDEATU }
{ -------------------------------------- }
{ Datu-basea erabili: erabiltzaileak data bat finkatu ondoren, menu }
{ baten bitartez eragiketa desberdinak egingi dira, adibidez: }
{ + Herri baten datuak pantailaratzea }
{ + Herri baten datuak ezabatzea }
{ + Herri baten lehen laginaren balio bat aldatzea }
{ ================================================================= }
BEGIN
WriteLn ;
WriteLn ;
REPEAT
Write('Zein datu-basearekin lan egingo dugu? Eman 2020ko hilea: ') ;
ReadLn(iDataHila) ;
UNTIL (iDataHila >= 1) AND (iDataHila <= 12) ;
REPEAT
Write('2020ko ', fnsHilabetea(iDataHila),'ren eguna eman: ') ;
ReadLn(iDataEgun) ;
UNTIL fnboEgunEgokia(iDataEgun, iDataHila) ;
sData := fnsDataEraiki(iDataHila, iDataEgun) ;
sFitxIzenDB := 'C:\Herriak\' + sData + '_DB.dat' ;
IF NOT FileExists(sFitxIzenDB) THEN
WriteLn(sData, ' datarako datu-baserik ez da aurkitu!')
ELSE
BEGIN
{ ----------------------------------------------------------------- }
{ Proiektuaren I zatian kodetu zen menua probestu daiteke II zatian }
{ ----------------------------------------------------------------- }
WriteLn ;
REPEAT
WriteLn(' +----------------------------------+') ;
WriteLn(' | Kalifikazioen araberako egunak |') ;
WriteLn(' +----------------------------------+') ;
WriteLn(' | K Kontrolpeko egunak |') ;
WriteLn(' | A Arriskuko egunak |') ;
WriteLn(' | L Larrialdiko egunak |') ;
WriteLn(' | S Salbuespeneko ehunak |') ;
WriteLn(' | |') ;
WriteLn(' | I Irten |') ;
WriteLn(' +----------------------------------+') ;
REPEAT
Write(' Letra bat aukeratu: ') ;
ReadLn(cAukera) ;
cAukera := UpCase(cAukera) ;
UNTIL (cAukera = 'K') OR (cAukera = 'A') OR
(cAukera = 'L') OR (cAukera = 'S') OR (cAukera = 'I');
WriteLn ;
CASE cAukera OF
'K' : ;
'A' : ;
'L' : ;
'S' : ;
END ;
WriteLn ;
IF cAukera <> 'I' THEN
BEGIN
Write('Aurrera egiteko RETURN sakatu -> ') ;
ReadLn ;
END ;
UNTIL cAukera = 'I' ;
END ;
WriteLn ;
WriteLn('=======================') ;
WriteLn('RETURN sakatu amaitzeko') ;
WriteLn('=======================') ;
ReadLn ;
END.