DARBAS SU FAILAIS C++ KALBOJE
Programos struktūra
Atkreiptinas dėmesys į tokias C++ kalbos ypatybes:
• yra tik vienas programų struktūrizavimo būdas. Tai skaidymas į funkcijas (visi programų blokai vadinami vienodai – funkcijomis);
• pagrindinę programos dalį atitinka pagrindinė funkcija, kuri žymima vardu main;
• identifikatoriuose (varduose) didžiosios ir mažosios raidės traktuojamos skirtingai;
• programos elementų (kintamųjų, struktūrų, funkcijų) aprašai gali būti bet kurioje programos vietoje. Svarbu, kad elementas prieš jį naudojant jau būtų apibrėžtas;
• programos elementų aprašuose plačiai vartojami funkcijų prototipai (prototipas – tai tik funkcijos antraštė);
• C++ kalboje yra nedidelis standartizuotų operatorių skaičius, tačiau yra daug įvairių funkcijų bibliotekų;
• kreipiantis į kintamuosius ir struktūras, plačiai vartojamos rodyklės (rodyklė – tai kintamasis, kuris įsimena adresą);
• daugelio tipų duomenis galima interpretuoti įvairiai (pvz., į baite užrašytą informaciją galima žiūrėti kaip į simbolį arba kaip į sveikąjį skaičių).
Tipinė C++ programos (programos failo) struktūra yra tokia:
/* Pirminio apdorojimo instrukcijos */
/* Globaliųjų elementų aprašai */
/* Funkcijų prototipai (vartotojo sukurtų funkcijų antraštės) */
main()
{
/* Pagrindinės funkcijos tekstas – sakinių visuma */
}
/* Vartotojo sukurtų funkcijų tekstai */
Čia programos struktūros apraše yra panaudotos tokios C++ kalbos sintaksinės konstrukcijos:
• komentarai – tai paaiškinamasis tekstas, kurio ribos žymimos simbolių poromis /* ir */. Leistinas ir kitas komentarų pavidalas. Parašius eilutėje du pasvirusius brūkšnius //, toliau esantis tekstas iki eilutės pabaigos taip pat laikomas komentaru;
• main() – tai pagrindinės funkcijos antraštė;
• sudėtinis sakinys – tai tarp riestinių skliaustų {} įrašyti sakiniai, kurie traktuojami kaip sudėtingas vienetas.
Programos struktūros apraše parodyta programos elementų rašymo tvarka:
• programos pradžioje rašomos pirminio apdorojimo instrukcijos (preprocessor), kuriomis nurodoma, kokius programos teksto pertvarkymus reikia atlikti prieš kompiliuojant ją;
• apibrėžiami globalieji programos elementai, kurie galės būti vartojami visame rengiamos programos faile (tiek pagrindinėje, tiek kitose vartotojo sukurtose funkcijose);
• vartotojo sukurtų funkcijų tekstai gali būti rašomi ne tik programos gale, bet ir tuoj po globaliųjų elementų aprašų dalies. Rašant šias funkcijas programos gale, yra lengviau skaityti ir analizuoti visos programos tekstą. Pastaruoju atveju atsirandančio prieštaravimo, kad funkcijas reikia pirma aprašyti, o tik po to vartoti, išvengiama po globaliųjų elementų aprašų dalies pateikiant funkcijų prototipus. Funkcijos prototipas – tai pirmasis funkcijos sakinys (antraštė).
Programai tikslinga suteikti vardą ir rašyti jį pirmoje eilutėje kaip komentarą. Čia rekomenduojama rašyti platesnius paaiškinimus apie programą. Vėliau tai padeda programuotojui lengviau ir greičiau prisiminti ar sužinoti programos paskirtį ir kitus duomenis apie ją.
Duomenų failai
Apdorojant didesnius duomenų kiekius, patogu juos laikyti failuose (pvz., diskuose). Failo tipo rodyklės aprašomos taip: FILE *F;
Failai paruošiami darbui funkcija (ji laikoma bibliotekoje stdio.h), kurios prototipas yra:
FILE *fopen (const char *Failo_Vardas, const char *M);
Failo_Vardas nurodomas simbolių eilute, vardine konstanta arba kintamuoju. Antruoju parametru M (simbolių eilute, vardine konstanta arba kintamuoju) nurodomas failo stovis, t.y. leistina failo informacijos perdavimo kryptis. Galimi failų stovio požymiai: r- failą galima tik skaityti; w- Failas skirtas tik rašymui. Jei toks failas jau buvo, tai jis ištrinamas ir kuriamas naujas. a- Papildyti failą duomenimis, rašant juos failo gale. Jei nurodyto failo dar nebuvo, jis sukuriamas.
Stovio požymį papildžius raide t (rt, wt, at), failas bus paruoštas darbui kaip tekstinis. Stovio reikšmę papildžius raide b (rb, wb, ab), failas bus paruoštas darbui kaip binarinis. Jeigu nėra nei t, nei b raidės, tai failo parengimas darbui priklauso nuo globaliojo kintamojo fmode reikšmės. Kiekviena stovio nuoroda gali būti papildyta ženklu + , pavyzdžiui, r+, w+, wt+. Tai reiškia, kad failai gali būti atnaujinami, t.y. leidžiama juos skaityti ir rašyti.
Pagrindinių buferizuotų įvedimo/išvedimo funkcijų prototipai (antraštės) yra laikomos stdio.h bibliotekoje.
Įvedimo/įšvedimo funkcijos:
Funkcijos prototipas (antraštė) Funkcijos atliekami veiksmai
int printf (const char *f [,]);
int scanf (const char *f [,);
int fclose (FILE *rod);
int putc (int simbolis, FILE *rod);
int getc (FILE *rod);
int putw (int sk, FILE *rod);
int getw (FILE *rod);
char *fgets (char *s, int n, FILE *rod);
int fputs (const char *s, FILE *rod);
int fread (void *buf, int t, int n, FILE *rod);
int fwrite (void *buf, int t, int n, FILE *rod);
int fprintf (FILE *rod, const char *f [,]);
int fscanf (FILE *rod, const char *f [,]);
int feof (FILE *rod);
int ferror (FILE *rod);
int remove (const char *vardas);
Išveda į ekraną kintamųjų reikšmes pagal šabloną f ;
Įveda klaviatūra reikšmes į kintamųjų atminties laukus pagal šabloną f ;
Uždaro failą
Rašo simbolį į failą
Skaito simbolį iš failo
Rašo skaičių į failą
Skaito skaičių iš failo
Skaito n simbolių ilgio eilutę s
Rašo eilutę s į failą
Skaito n blokų, turinčių po t baitų, iš failo rod į buferį buf; funkcijos fread reikšmė – perskaitytų blokų skaičius
Rašo n blokų, turinčių po t baitų, iš buferio buf į failą rod; funkcijos fwrite reikšmė – užrašytų blokų skaičius
Rašo į failą rod reikšmes sąrašo elementų pagal šabloną f ; šablonas f ir kintamųjų sąrašas sudaromi taip pat, kaip ir funkcijoje printf
Skaito sąrašo elementų reikšmes iš failo pagal šabloną f ; šablonas f ir elementų sąrašas sudaromi taip pat, kaip ir funkcijoje scanf. Funkcijos fscanf reikšmė – perskaitytų elementų skaičius