- 2024-11-13/14 paskaitos vyks gyvai, universiteto patalpose.
II užduotys
Antros užduoties tikslas - išmokti dirbti su failine sistema panaudojant DOS operacinės sistemos servisą. Visos antros užduoties programos turėtų elgtis kaip tvarkingos programos, t.y.
- Jei komandų eilutėje perduoti failų vardai, turi apdoroti visus tuos failus iš eilės.
- Jei komandų eilutėje nėra argumentų, apdorojamas stdin (duomenys skaitomi iš standartinio įvedimo įrenginio).
- Išimtis gali būti konverteriai (pvz. asm2html) - jie gali tikėtis komandų eilutėje vieno failo vardo, o jei jo neranda, išspausdinti pagalbos pranešimą.
- Programos turi priimti /? parametrą, o jį pateikus, išspausdinti pagalbos pranešimą.
- Skaitymas iš failo privalo būti vykdomas buferiais.
- Programa, kurios parametrai - failų vardai. Išveda kiekvieno failo statistinius duomenis: kiek buvo simbolių, kiek buvo žodžių, kiek mažųjų raidžių, kiek didžiųjų.
- Programa, kurios pirmas ir antras parametrai - eilutės (numeriai eilučių), visi kiti - failų vardai. Visuose failuose pirma įvesta eilutė pakeičiama antrąja.
- Pirmas parametras - eilutė (numeriai eilučių), visi kiti - failų vardai. Programa išveda tik tas failų eilutes, kuriose yra pirmuoju parametru nurodyta eilutė. Jei nėra parametrų, spausdina pagalbos pranešimą. Jei failų daugiau negu vienas, tai prieš kiekvieną išvedamą eilutę turi būti spausdinamas failo vardas. Jei nurodyta tik eilutė - pirmasis parametras,- bet nėra failų, skaito stdin.
- Programa, kurios pirmasis parametras - skaičius, visi kiti - failų vardai. Visus failus suskaidome į gabalus, kuriuos sudedame į failus, o jų pavadinimų priekyje įrašome bloko pavadinimą. Pvz.: jei eilutė yra split 200 failas.dat, tuomet failą failas.dat skaldomas po 200 simbolių ir sukuriami failai 1failas.dat, 2failas.dat, ir t.t.
- Programa, kurios parametrai - failų vardai. Programa ieško eilučių, kuriose yra ilgesnių už 5 simbolius palindromų (didžiosios/mažosios raidės, tarpai ir skyryba - ignoruojami). Palindromai tai tokios frazės, kuriuos ir iš priekio ir iš galo skaitomos vienodai: "sėdėk užu kėdės", "a roza upala na lapu Azora".
- Programa, palyginanti du failus (fcomp). Programa lygina nurodytus failus ir į stdout (standartinį išvedimo įrenginį) išveda nesutampančius simbolius bei jų pozicijas nuo failo pradžios. Pvz.: fcomp file1.txt file2.txt išvestų į ekraną nesutampančius failų „file1.txt“ ir „file2.txt“ simbolius ir jų pozicijas. ENGLISH: Write a program in Intel x86 assembly for DOS operating system that compares two files (fcomp). Program should compare files given to program as parameters and print differing characters and their positions to stdout (Standart Output Stream).
- Programa skaito tekstą ir formatuoja pastraipas. Į kiekvieną eilutę bando sukišti maksimumą žodžių taip, kad eilutės ilgis neviršytų 75 simbolių. Tarpas eilutės pradžioje ar tuščia eilutė laikomi naujos pastraipos pradžia.
- Programa, pateikianti skaitomo failo šešioliktainį dump‘ą (žemiau yra pateiktas paaiškinamasis pavyzdys).
- Programa skaito tekstą, atspausdina pirmus jo ~600 (kiek telpa) baitų spirale (žemiau yra pateiktas paaiškinamasis pavyzdys). Neleidžiama naudoti BIOS‘o konsolės valdymo. Reikia suformuoti rezultatą buferyje atmintyje ir atspausdinti į standartinį išvedimą.
- Skaitomas XML failas, išvedamas gražiai suformatuotas jo tekstas: kiekvienas įdėtas tagas pastumtas dviem simboliais, atributai, netelpantys vienoje eilutėje, gražiai sulygiuoti (žemiau yra pateiktas paaiškinamasis pavyzdys).
- Asemblerio išeities tekstų syntax highlight‘as. Skaito asemblerio išeities tekstą, rašo validų HTML failą, kuriame vaizduojamas tas asemblerinis failas nuspalvinant sintaksės elementus: žymes, instrukcijas, registrus, betarpiškus operandus ir eilučių literalus, komentarus.
- Paskalio išeities tekstų syntax highlight‘as. Skaito paskalio išeities tekstą, rašo validų HTML failą, kuriame vaizduojamas tas paskalio failas nuspalvinant sintaksės elementus: rezervuotus žodžius, skaičius, stringus bei komentarus.
- Parašykite programą, randančią duotoje dvimatės erdvės taškų aibėje tokius taškų poaibius po keturis, kurie sudaro kvadratus. Laikyti, kad kvadrato plotas būtinai daugiau už 0. Taškų koordinatės turi būti nuskaitomos iš failo, paduodamo programai pirmuoju parametru. Taškų, sudarančių kvadratus, poaibiai po keturis turi būti išvedami į failą, nurodomą antru programos parametru. Išvedimo failo kiekvienos eilutės formatas:
( , ) ( , ) ( , ) ( , ). Koordinatės - ne tik sveiki bet ir realūs skaičiai. Atliekant skaičiavimus naudoti matematinį koprocesorių. ENGLISH: Write a program in Intel x86 assembly for DOS operating system that finds such 2D (two dimensional) space point subsets of four that forms squares with area greater than zero from the given set of 2D (two dimensional) space points. Coordinates (x and y pairs) of points are to be read from file given to program as first parameter. Point subsets forming squares are to be output to the file given to program as a second parameter. Format of a single line in an output file shoud be as follows: ( , ) ( , ) ( , ) ( , ). Coordinates should be not only signed and unsigned integers but also real numbers. That is why using Intel 8087 mathematical coprocessor for calculations is required. - Parašykite programą, išvedančią registro DX turinį kaip du simbolius į standartinį išvedimo srautą. Sukompiliuokite programą panaudodami TASM raktą /l tam, kad sugeneruotumėte programos listingo failą. Parašykite kitą programą, nuskaitančią parametru pateikto pirmosios programos listingo failo fragmentą, pažymėtą specialiomis pradžios ir pabaigos žymėmis (žymes sugalvoti patiems). Nuskaitoma tik ta listingo failo fragmento kiekvienos eilutės dalis, kurioje pateikiamas komandos mašininis kodas šešioliktainėje sistemoje. Nuskaitytą fragmentą įkelti į atmintį ir besąlygiškai perduoti valdymą jam. Pasibaigus fragmento kodui valdymas turi būti grąžintas viena instrukcija toliau nei kad buvo prieš valdymo perdavimą įkeltam fragmentui. Fragmento kodas išveda registro DX reikšmę į standartinį išvedimo srautą. Antroji programa turi pasirūpinti, kad fragmento išvedimas būtų nukreipiamas į antruoju parametru jai pateikiamą failą.
- Parašykite programą, skaitančią pirmuoju parametru pateikiamą failą po vieną žodį ir išvedančią kiekvieną nuskaitytą žodį didžiosiomis raidėmis ir einamąjį sistemos laiką į antruoju parametru nurodytą failą, kurio kiekvienos eilutės formatas yra:
<žodis> - . Laikas nurodomas milisekundžių tikslumu (žmogui suprantamu formatu). Išvedimo failo viršuje nurodykite žodžio nuskaitymo iš failo trukmės vidurkį. ENGLISH: Write a program in Intel x86 assembly for DOS operating system that reads file given to program as first parameter and outputs every word in uppercase with current system timestamp to the file given to program as second parameter. Format of every single line in output file should be as follows: - . System timestamp should be given to miliseconds in human-readable format. At the top of output file program should print an average time that CPU took for word reading from file. - Parašykite programą, skaitančią pirmuoju parametru pateikiamą failą ir sukeičiančią vietomis antruoju bei trečiuoju parametrais nurodomas failo eilutes.
- Parašykite programą, kurios pirmasis parametras - skaičius, visi kiti - failų vardai. Pirmasis parametras nurodo rėmelio, kuriuo reikia įrėminti failo turinį, storį. Storis matuojamas simbolių skaičiumi (horizontaliu atveju) arba eilučių skaičiumi (vertikaliu atveju). Rėmelio simbolį galite pasirinkti patys.
- Parašykite programą, kurios pirmasis parametras skaičius, visi kiti - failų vardai. Pirmasis parametras nurodo kvadrato, kuriuo reikia centruotai uždengti failo turinį, kraštinės ilgį. Uždengiančiojo kvadrato simbolį galite pasirinkti patys.
- Parašykite programą, kurios pirmasis parametras raidžių intervalas (pavyzdžiui, a-f), o visi kiti - failų vardai. Programa skaito parametrais nurodytus failus ir rezultatų faile išveda sąrašą žodžių, prasidedančių raidėmis iš nurodyto intervalo. Viename rezultatų faile pateikiamas sąrašas žodžių iš visų failų be pasikartojimų ir išrūšiuotas abėcėlės tvarka. Šalia kiekvieno žodžio turi būti atspausdinamas skaičius, reiškiantis, kiek kartų žodis pasikartojo visuose nurodytuose failuose kartu. Taip pat rezultatų faile turi būti pateiktas ir antras žodžių ir jų pasikartojimų skaičiaus sąrašas, tik antrą kartą sąrašas pateikiamas išrūšiuotas pasikartojimų mažėjimo tvarka.
- Parašykite programą, kurios parametrai - failų vardai. Programa skaito kiekvieną failą ir jo teksto simbolius perrašo atvirkščia tvarka tame pačiame faile. Negalima nuskaityti viso teksto ir nuo buferio galo surašyti atgal į failą. Teksto sukeitimui galima naudoti max. du trumpus (tarkime, 100B ilgio) buferius, jų pagalba organizuojant skaitymą ir rašymą tame pačiame faile.
- Parašykite programą, kurios parametrai - pilni keliai iki norimų nagrinėti katalogų. Programa sukuria rezultatų failą, kuriame pateikia failų, esančių nagrinėtuose kataloguose, sąrašą, išrūšiuotą pagal failo modifikavimo datą mažėjimo tvarka. Šalia failo sąraše turi būti nurodoma failo modifikavimo data ir laikas.
- Parašykite programą, kurios parametrai - failų vardai. Programa skaito kiekvieną iš nurodytų failų ir surenka kiekvienos abėcėlės raidės pasikartojimo statistiką. Programa sukuria rezultatų failą, kuriame ASCII simbolių pagalba grafiškai pavaizduoja abėcėlės raidžių išsibarstymą: abscisių ašyje - visos abėcėlės raidės, ordinačių ašyje - pasikartojimų kiekis. Taip tarsi gaunamas abėcėlės raidžių pasiskirstymo nagrinėjamuose failuose grafikas.
- Parašykite programą, kurios pirmasis parametras - failo plėtinys, visi kiti - pilni keliai iki norimų nagrinėti katalogų. Programa sukuria naują rezultatų failą ir į jį tvarkingos lentelės pavidalu išveda visų kiekvienoje direktorijoje rastų failų, tenkinančių pirmuoju parametru pateiktą plėtinį, atributus: pavadinimą, sukūrimo datą ir laiką, dydį baitais ir kilobaitais, papildomus atributus ir pirmuosius 16 baitų.
- Parašykite programą, kurios pirmasis parametras - failo dydis baitais, visi kiti - pilni keliai iki norimų nagrinėti katalogų. Programa nurodytuose kataloguose ieško failų, kurių dydis viršija nurodytąjį ir tokiems failams pakeičia jų prieigos atributą į 'read-only'. Visus failus, kurių dydis viršija nurodytąjį, išveda naujame rezultatų faile, šalia kiekvieno failo vardo nurodant ir jo dydį. Rezultatų faile pateikiamas sąrašas turi būti numeruojamas.
- Parašykite programą, kurios pirmasis parametras - ieškomas žodis, visi kiti - pilni keliai iki norimų nagrinėti katalogų. Programa turi kiekviename faile iš nurodytų katalogų atlikti pirmu parametru nurodyto žodžio paiešką nekreipiant dėmesio į žodžio atskirų simbolių registrą (t.y. didžiosios ir mažosios nesiskiria). Pirmą kartą vykdant programą, ji sukuria
.index failą, kuriame surašo informaciją apie žodžio pozicijas failuose (failo vardas, eilutė, kurioje rastas žodis, pozicija nuo failo pradžios, ties kuria rastas žodis). Programa į ekraną išveda laiką, kiek truko paieška. Sekantį kartą vykdant paiešką, programa naudojasi .index failu, jeigu toks yra ir ekrane pateikia rezultatus iš indekso bei laiką, kiek truko paieška.
Paaiškinamieji pavyzdžiai
8) prompt> hd batai.txt00000000 4d 61 6e 6f 20 62 61 74 61 69 20 62 75 76 6f 20 ¦Mano batai buvo ¦ 00000010 64 75 2c 0a 56 69 65 6e 61 73 20 64 69 6e 67 6f ¦du,.Vienas dingo ¦ 00000020 20 2d 20 6e 65 72 61 6e 64 75 2e 0a 41 f0 20 73 ¦ - nerandu..Aš s ¦ 00000030 75 20 76 69 65 6e 75 20 62 61 74 75 6b 75 0a 4e ¦u vienu batuku.N ¦ 00000040 69 65 6b 75 72 20 65 69 74 69 20 6e 65 67 61 6c ¦iekur eiti negal ¦ 00000050 69 75 2e 0a ¦iu.. ¦ 000000549)
x 6 7 8 9 x 5 0 1 x x 4 3 2 x x x x x x10)
<zopeConfigure xmlns="http://namespaces.zope.org/zope" xmlns:event="http://namespaces.zope.org/event"> <content class=".RAMCache."> <factory id="RAMCache" permission="Zope.Public"/> <require permission="Zope.Public" interface="Zope.App.Caching.RAMCache.IRAMCache." /> </content> <event:subscribe subscriber=".RAMCache." event_types="Zope.Event.IObjectEvent.IObjectModifiedEvent"/> <include package=".Views" /> </zopeConfigure>