/* toto je viacriadková poznámka */ ako v Delphi, len sa rozlišujú malé a veľké písmená!!!

Size: px
Start display at page:

Download "/* toto je viacriadková poznámka */ ako v Delphi, len sa rozlišujú malé a veľké písmená!!!"

Transcription

1 Organizácia programu #include <meno knižnice> using namespace std; int main() return 0; // jednoriadková poznámka Identifikátor Dátové typy int (long), unsigned, float (double), bool 0,1, char, trieda string Deklarácie a pretypovanie Typ Meno_premennej alebo aj s hodnotou: Typ Meno_premennej = Hodnota; príkazy; Operátory a výrazy + - * / %... premenná operátor = premenná/hodnota premenná++; ++premenná; premenná--; --premenná; x = = y x!= y!x x && y x y výraz1? výraz2 : výraz3; Priorita operácií 1. (zmena znamienka) 2. *, /, % 3. +, - 4.! 5. >, >=, <, <= 6. ==,!= 7. && = (príkaz priradenia) napr. hlavička <iostream> definuje vstupno-výstupné služby štandardnej knižnice; každé slovo z programu musí byť definované v jadre (int, float, for, while,...) alebo v knižnici doplní v celom programe std:: pred cin, cout,... program sa spustí práve zavolaním funkcie main, nulová návratová hodnota znamená úspešné vykonanie programu (return 0;); teoreticky nemusí nič vrátiť (void main()), potom implementácia predpokladá, že bola vrátená nula begin a end v C++ nahrádzajú zložené zátvorky a /* toto je viacriadková poznámka */ ako v Delphi, len sa rozlišujú malé a veľké písmená!!! a je znaková konštanta dĺžky 1, \n je znak konca riadka (ako endl) a je konštanta typu string dĺžky 1+1 (končí znakom \0 ) s.size() alebo s.length() vracia dĺžku reťazca s, reťazec začína 0-tým znakom! int x; string meno = Juro ; const float g = 9.81; float vysledok = a / b; int a, c; a = c = 5; int b = 3; Výstup: cout << a/b << endl; 1 cout << (float) a/b << endl; cout << (int) A << << a - A ; blok príkazov, premenné deklarované v bloku (aj v podmienke, napr. príkazu for) sú na jeho konci zrušené! funkcia pow(základ, exponent) základ exponent // #include <cmath> a + = b; znamená a = a + b; a % = b; a = a % b; // % znamená mod p++ inkrementuje, vracia pôvodnú hodnotu ++p inkrementuje, vracia inkrementovanú hodnotu p-- dekrementuje, vracia pôvodnú hodnotu --p dekrementuje, vracia dekrementovanú hodnotu x sa rovná y x je rôzne od y negácia x typu bool x a zároveň y - konjunkcia x alebo y - alternatíva vráti hodnotu výrazu2, ak výraz1 nadobudne true inak vráti hodnotu výrazu3; výraz2 a 3 sú rovnakého typu / môže znamenať delenie aj celočíselné delenie (pozri vyššie) rand() - vráti náhodné celé číslo z množiny 0 až rand() % 2 vráti 0 alebo 1 rand() % 10 vráti 0 až 9 srand((unsigned) time (NULL)); - znáhodní výber aj prvého čísla (môže požadovať knižnice cstdlib a time.h) 1

2 Príkazy Vstup z klávesnice string sl; cin >> sl; char zn; cin.get(zn); getline(cin, ret); Výstup na monitor cout<<premenná/ reťazec ; cout << endl; Priradenie = if (podmienka) prikaz1; else prikaz2; switch (výraz) case hodnota: príkazy; break; case hodnota: príkazy; break;... default: príkazy; for (inicializácia rpc; test; akcia) príkaz; while (podmienka) príkaz; do príkaz while (podmienka); návestie: príkazy;... goto návestie; break; continue; do sl načíta znaky len po prvú medzeru!!! do zn načíta jeden znak (môže to byť aj '\n' - bol stlačený kláves Enter) do ret načíta celý zadaný reťazec!!! na monitore zobrazí hodnotu premennej alebo reťazec nastaví výstup na nový riadok, analog. '\n' al. \n ; '\t ' - vloží tabulátor napr. prem = výraz1? výraz2 : výraz3; je to isté ako if (výraz1) prem=výraz2; else prem=výraz3; pred else sa vkladá bodkočiarka! Podmienky sa uvádzajú vždy v zátvorkách! switch (cislo) case 0: cout << Číslo je 0 \n ; break; case 1: case 2: case 3: cout << Číslo je kladné menšie ako 4 \n ; break; default: cout << Číslo je záporné alebo väčšie ako 3 \n ; break a default nie sú povinné // neustále vyhodnocuje test for (i = 0; i < pocet && pole[i]!= x; i++); cyklus sa opakuje, pokiaľ je podmienka splnená cyklus sa opakuje, pokiaľ je podmienka splnená! skok: cislo++ if (cislo % 2 == 0) goto skok; vykoná skok na miesto bezprostredne za koncom najbližšieho uzavretého príkazu while, for, do alebo switch vykoná skok na začiatok ďalšej iterácie (vrátane testu) v najbližšom uzavretom príkaze while, for alebo do; napr.: for (int i=0; i < 10; i++) if (i % 3 == 0) continue; cout << i << endl; vypíše pod seba

3 Pamätaj! 1. Po čítaní operátorom >> zo cin vždy zavolaj cin.ignore() (vo vstupnom bufferi zostane vždy minimálne znak '\n'). 2. Za volaním getline(cin, retazec) už cin.ignore() nevolaj (getline z buffera odstráni aj '\n'). 3. Keď čítaš jeden znak funkciou cin.get(znak), skontroluj, či vo vstupnom bufferi nezostali znaky: cin.get (znak); if (znak!= '\n') cin.ignore(); //ak načítaný znak je rôzny od konca riadku, z buffera treba odstrániť ešte ďalšie znaky! 4. Parametre príkazu cin.ignore(parametre) treba nastaviť podľa situácie, ktorá môže nastať, pozri nižšie. Prečo to je také komplikované so vstupom v C++ 1. Z klávesnice vkladané znaky nejdú rovno do programu, ale do vyrovnávacej pamäte, tzv. buffera. Ak bol buffer prázdny, čítanie dát z buffera do programu začne až po stlačení klávesu Enter (stlačený Enter sa do buffera zapíše ako znak '\n'). Preto sa v bufferi, okrem vložených znakov, nachádza na ich konci aj znak '\n'. Ak buffer nie je prázdny, a požaduje sa čítanie zo vstupu, automaticky sa načítajú údaje z buffera, nečaká sa na potvrdenie stlačením klávesu Enter. 2. Príkaz cin.ignore() odstráni z buffera jeden znak. Ak je buffer prázdny, čaká na jeho naplnenie! Príkaz napríklad cin.ignore(255,'\n') odstráni z buffera najviac 255 znakov resp. znaky po znak '\n' vrátane. getline (cin, retazec) do programu prenesie všetky znaky z buffera okrem '\n', ten z buffera odstráni a buffer zostane prázdny. cin >> prenesie z buffera do programu znaky po prvú medzeru, tabulátor alebo kláves Enter, a ostatné znaky (aj medzera alebo tabulátor) zostanú v bufferi vrátane '\n'. Preto pri ďalšom vstupe sa do programu (aj bez stlačenia klávesu Enter) načíta zvyšok z buffera, čo väčšinou nechceme. Preto treba použiť cin.ignore() ak chceme odstrániť len jeden znak, najčastejšie '\n', alebo napríklad cin.ignore(80, '\n'), čo odstráni z buffera najviac 80 znakov alebo všetky znaky po znak '\n' vrátane. cin.get (znak) načíta z buffera do programu jeden znak. Ak sme z klávesnice vložili jeden znak a buffer bol predtým prázdny, v bufferi zostane '\n'. Na jeho odstránenie potrebujeme použiť cin.ignore(). Ak sme z klávesnice nevložili znak, len stlačili Enter, z buffera sa do premennej znak uloží '\n' a buffer zostane prázdny. Keby sme teraz použili cin.ignore(), program čaká minimálne na stlačenie klávesu Enter, aby cin.ignore() malo čo odstrániť! Preto je po príkaze cin.get (znak) vykonanie príkazu cin.ignore() podmienené neprázdnosťou buffera, t.j. že v bufferi pred čítaním cin.get(znak) nebol len znak '\n'! Príkaz cin.get() načíta - odstráni z buffera jeden znak a teda pracuje rovnako ako cin.ignore(). Odporúčame ak chceme načítať reťazec, použiť funkciu getline (cin, premenná). ak chceme načítať viacznakovú hodnotu, použiť cin >> premenná; cin.ignore(); ak chceme načítať jeden znak alebo kláves Enter, použiť cin.get (premenná); if (premenná!= '\n') cin.ignore(); // pri použití príkazu cin >> premenná; nevieme načítať stlačenie len klávesu Enter Funkcie na klasifikáciu znakov (knižnica cctype; vracajú true alebo false) isalpha písmená abecedy Napr. if (isalpha(znak))...; isalnum písmená abecedy a číslice isdigit číslice islower malé písmená abecedy isupper veľké písmená abecedy isspace biele znaky: medzera, horizontálny tabulátor \t, koniec riadka \n, vertikálny tabulátor, nová strana, na začiatok riadka Formátovanie výstupu \t tabulátor napr.: cout << meno << \t << priemer << endl; setprecision manipulátor definovaný v hlavičke <iomanip>, umožňuje zadať počet platných cifier výstupu; napr.: streamsize povodna_presnost = cout.precision(); cout << Priemer známok na stotiny: << setprecision(3) << priemer << setprecision(povodna_presnost) << endl; premenné typu streamsize sa používajú na vyjadrenie veľkosti výstupu priemer = 1, zobrazí ako 1.99; priemer = ,4 zobrazí ako 1.99e+005 string (p, ) výraz typu string, v prúde cout vypíše p medzier napr. cout << meno << string (25 - meno.size(), ) <<... 3

4 Jednorozmerné pole Pole v C++ existuje len statické, v tom slova zmysle, že síce môže vzniknúť až počas behu programu, počet jeho prvkov však nemožno meniť (možno celé zrušiť a vytvoriť nové pole). Indexy poľa musia byť typu integer (nie napr. char) a vždy začínajú nulou! Pole je súčasťou jadra jazyka C++ (nie štandardnej knižnice). - ak je počet prvkov poľa známy už pri písaní programu: Typ_prvku Názov_poľa [ Počet_prvkov ] rezervuje príslušnú veľkosť pamäte napr. int pole [100]; vyhradí pamäť pre pole celých čísel od indexu 0! int pole [5] = 1,2,3,4,5; pole[0] má hodnotu 1,..., pole[4] hodnotu 5 const int pocet=4; používajte konštantu pocet float priemer[]=1.4, 2.7, 3, 1.00; //pri vymenovaní nemusíme uviesť počet prvkov float sucet=0; for (int i=0; i<pocet; i++) sucet+=priemer[i]; cout << sucet/pocet << endl; - pole sa vytvorí až počas behu programu (dynamická alokácia pamäte): Typ_prvku *Názov_poľa = new Typ_prvku [ Počet_prvkov ]; napr. const int pocet; cout << "Pocet prvkov pola: "; cin >> pocet; cin.ignore(); int *pole = new int [pocet]; for (int i=0; i<pocet; i++) cout << i+1 << ". prvok "; cin >> pole[i]; cin.ignore(); Treba používať premennú (konštantu) počet, lebo pre pole nie sú definované žiadne funkcie na zistenie jeho dĺžky alebo maximálneho indexu, ako napr. length, size, high,... Funkcia (podprogram) Definovanie funkcie Typ_výsledku Názov_funkcie (void alebo zoznam parametrov) deklarácie lokálnych premenných a statických lokálnych premenných; príkazy; prípadne return hodnota; Napr. int sucet(int x, int y) return x+y volanie napr. cout << sucet(a,b); Funkcia sa volá Názov_funkcie( ) alebo Názov_funkcie (parametre); Globálne premenné sa deklarujú nad funkciami. Statická lokálna premenná static Typ_premennej Názov_premennej = Inicializačná_hodnota; má rozsah platnosti lokálnej premennej ale životnosť globálnej premennej (po ukončení funkcie nezaniká). Parametre môžu byť nahradzované hodnotou alebo odkazom. Pri nahradzovaní odkazom sa medzi typ parametra a názov parametra píše ampersand (&). Napríklad void cosi(int x, int y, int& plus, int& minus) plus = x+y; minus = x-y; volanie napr. cosi(cislo1, cislo2, sucet, rozdiel); Nad funkciami môže byť uvedený prototyp nižšie definovanej funkcie, ktorý má rovnaký tvar ako hlavička definície funkcie, ale zoznam parametrov môže obsahovať len zoznam typov parametrov. void vytvor(int, int []); void vypis(int, int []); int main() int poceta; cout << "Počet prvkov poľa: "; cin >> poceta; cin.ignore(); int *polea = new int[poceta]; vytvor(poceta,polea); vypis(poceta,polea); delete [] polea; void vytvor(int pocet, int pole[]) for (int i=0; i<pocet; i++) cout << i+1 << ". prvok "; cin >> pole[i]; cin.ignore(); void vypis(int pocet, int pole[]) for (int i=0; i<pocet; i++) cout << pole[i] << '\t'; 4

5 Textový súbor #include <fstream> Premenné typu fstream sú určené na čítanie zo súboru aj zápis do súboru. fstream f; // deklaruje prúd f pre čítanie zo alebo zápis do súboru f.open ("subor.txt", ios::in); // otvorí súbor na čítanie, vstupný prúd f prepojí so súborom f.open ("subor.txt", ios::out); // otvorí súbor na zápis, výstupný prúd f prepojí so súborom f.open ("subor.txt", ios::out ios::app ); // otvorí súbor na pripisovanie na koniec súboru f.close(); // zavrie súbor K dispozícii máme štyri príznaky funkcie na zaznamenanie stavu vstupu a výstupu: f.eof() vracia true, ak bol dosiahnutý koniec súboru, inak vracia false f.bad() vracia true, ak posledná operácia zlyhala z dôvodu neplatných údajov f.fail() vracia true, ak je bad true alebo zlyhala nejaká operácia pre hardvérové alebo systém. problémy f.good() vracia true, ak bola posledná operácia so súborom úspešná Príznaky môžu mať po skončení práce so súborom rôzne hodnoty. Preto ich, pred opätovným otvorením súboru, treba zmazať príkazom f.clear()! Odporúčame po príkaze close hneď použiť príkaz clear. Príkaz f.open ("subor.txt", ios::in); neoznámi chybu, keď súbor na disku neexistuje, len nastaví príznak f.fail() na true. Preto odporúčame po pokuse otvoriť súbor na čítanie vykonať test úspešnosti: if ( f.fail() ) cout << "Problem so suborom!\n"; system("pause"); return 1; Aj čítanie zo súboru a zápis do súboru sa realizuje cez vyrovnávacie pamäte. Pri zápise často až príkaz close vyvolá zápis posledných údajov na vonkajšiu pamäť, aj preto je dôležité ho nezabudnúť použiť po každom skončení práce so súborom. Vyčistiť vstupný buffer možno príkazom f.ignore(), podobne ako pri vstupných operáciách z klávesnice. V nasledovných ukážkach sme pracovali so súborom subor.txt s obsahom: Vypísanie obsahu súboru znak po znaku: fstream f; f.open ("subor.txt", ios::in); if (f.fail()) cout << "Problem so suborom!\n"; system("pause"); return 1; char znak; while ( f.get (znak) ) cout << znak; f.close(); f.clear(); cout << endl; Vypísanie obsahu súboru po riadkoch a počtu znakov v každom riadku: fstream f; f.open ("subor.txt", ios::in); if (f.fail()) cout << "Problem so suborom!\n"; system("pause"); return 1; string s; while (!f.eof() ) getline ( f, s ); cout << s << '\t' << s.size() << endl; f.close(); f.clear(); Pokiaľ sme si nie istý korektnosťou vstupného súboru (napríklad, či za posledným údajom v súbore nebol ešte stlačený kláves Enter, t.j. vložený znak koniec riadka '\n'), je lepšie použiť schému: getline ( f, s ); // pokus o načítanie prvého riadka zo súboru while (!f.fail() ) // pokiaľ nenastala chyba; môžete skúsiť aj while (f.good()) cout << s << endl; getline (f, s); // pokus o načítanie ďalšieho riadka zo súboru 5

6 Čítanie číselných hodnôt zo súboru, pričom umiestnenie čísel do riadkov nie je pre riešenie úlohy dôležité; napríklad výpočet aritmetického priemeru zo všetkých čísel zapísaných v súbore: fstream f; f.open ("subor.txt", ios::in); if (f.fail()) cout << "Problem so suborom!\n"; system("pause"); return 1; float x, sucet = 0; int pocet = 0; f >> x; // rieši aj situáciu, keď za posledným číslom v súbore bol stlač. Enter while ( f.good() ) // prípadne while (!f.fail()) alebo while (!f.eof()) sucet += x; pocet++; f >> x; f.close(); f.clear(); cout << "Priemer: " << sucet/pocet << endl; // pri deklarácii int x, sucet = 0; by sme museli použiť // konverziu (float) sucet/pocet! Čítanie číselných hodnôt zo súboru, pričom rozdelenie súboru na riadky je pre riešenie úlohy dôležité; napríklad výpočty aritmetických priemerov z čísel uložených v jednotlivých riadkoch: float x, sucet; int pocet; while (!f.eof() ) sucet = 0; pocet = 0; while ( f.peek()!= '\n' &&!f.eof() ) // pokiaľ nenasleduje koniec riadka a nie je koniec súboru f >> x; sucet += x; pocet++; if (pocet > 0) cout << "Priemer cisel v riadku: " << sucet/pocet << endl; else cout << "V riadku nie je ani jedno cislo!\n"; f.ignore(); f.close(); f.clear(); // odstráň z buffera '\n' Predchádzajúcu úlohu možno riešiť aj načítaním celého riadka ako typu string a rozrezaním a konverziou na jednotlivé čísla (predpokladáme, že súbor obsahuje len celé čísla oddelené medzerami, tabulátormi alebo koncami riadka): int cislo, sucet, pocet, i; // pre reálne čísla float cislo, sucet; string riadok, cislostr; // cislostr je premenná, v ktorej bude číslo uložené ako typ string while (!f.eof() ) getline ( f, riadok ); cislostr = ""; sucet = 0; pocet = 0; i=0; while ( i <= riadok.size() ) if (!isspace(riadok[i]) && i < riadok.size() ) cislostr += riadok[i]; //vysvetlenie pozri nižšie else cislo = atoi ( cislostr.c_str() ); // pre reálne čísla cislo = atof ( cislostr.c_str() ); cislostr = ""; sucet += cislo; pocet++; i++; if (pocet > 0) cout << "Priemer cisel v riadku: " << (float) sucet/pocet << endl; 6

7 else cout << "V riadku nie je ani jedno cislo!\n"; f.close(); f.clear(); Vysvetlenie zvýrazneného vetvenia (prvý riadok vytvorí číselný reťazec, v else sa zmení na číslo): ak ( znak_riadok[i] nie je biely_znak a i < pocet_znakov_v_riadku) tak cislostr = cislostr + riadok[i]; // do reťazca cislostr sa postupne uložia znaky celého čísla až po medzeru alebo koniec riadka inak cislo priraď ascii_reťazec_konvertuj_na_int (cislostr_zmeň_na_c_ascii_reťazec); V jazyku C existujú konverzné funkcie atoi a atof, ktoré konvertujú reťazce na celé alebo reálne čísla (skratky slov ascii_to_int a ascii_to_float, analógia s funkciami StrToInt a StrToFloat v Delphi). Ak ich chceme použiť v jazyku C++, musíme najprv reťazec previesť na C-čkovský reťazec funkciou retazec.c_str(). Zápis do súboru Pripomeňme si, že príkaz f.open (meno_suboru, ios::out); otvorí súbor na zápis; ak súbor existuje, jeho obsah bude zmazaný, a f.open (meno_suboru, ios::out ios::app ); otvorí súbor na pripisovanie na koniec súboru, ak súbor neexistuje, bude vytvorený. Nasledujúci výpis popisuje vytvorenie prázdneho súboru a zápis zadaného textu po riadkoch, prípadne pridanie ďalších riadkov na koniec súboru a výpis novovytvoreného súboru. fstream f; string riadok; char odp; // zapíše zadané riadky do súboru f.open ( "vytvor.txt", ios::out ); // vytvorí prázdny súbor do cout << "Napis riadok na zapis: "; getline ( cin, riadok ); f << riadok << '\n'; // zapíše riadok do súboru (pozri poznámku 1) cout << "Dalsi? (Nie -> N) "; cin.get ( odp ); if ( odp!= '\n' ) cin.ignore(); while ( toupper(odp)!= 'N' ); f.close(); // ak sme na niečo zabudli, teraz môžeme pridať na koniec súboru f.open ( "vytvor.txt", ios::out ios::app ); // otvorí súbor a zápis nastaví na koniec súboru cout << "Zabudol si nieco? (Ano -> A) "; cin.get ( odp ); if ( odp!= '\n' ) cin.ignore(); if ( toupper ( odp ) == 'A' ) do cout << "Napis riadok na zapis: "; getline ( cin, riadok ); f << riadok << '\n'; // zapíše riadok do súboru (pozri poznámku 2) cout << "Dalsi? (Nie -> N) "; cin.ge t( odp ); if ( odp!= '\n' ) cin.ignore(); while ( toupper ( odp )!= 'N' ); f.close(); // vypíše obsah súboru (dve alternatívy) f.open ( "vytvor.txt", ios::in ); while (!f.eof() ) getline ( f, riadok ); cout << riadok << endl; f.close(); f.open ( "vytvor.txt", ios::in ); char zn; while ( f.get(zn) ) cout << zn; f.close(); cout << endl; 7

8 Vytvorený súbor má chybu krásy, na jeho konci je vložený prázdny riadok, čo pri ďalšom spracovávaní údajov zo súboru môže spôsobovať problémy. Poznámka 1 - vytvorenie čistého súboru bez prázdneho riadka na konci súboru Keďže každý zadaný riadok má byť zapísaný v súbore v samostatnom riadku, realizovali sme zápis do súboru príkazom f << riadok << '\n'; čo spôsobilo, že za posledným riadkom v súbore je tiež vložený koniec riadka a teda nepotrebný prázdny riadok. Podobne príkaz f << '\n' << riadok; by spôsobil, že prvý riadok v súbore by bol vždy prázdny, čo by bola vyslovene chyba. Funkciou tellg však vieme rozpoznať, či sme na začiatku súboru a teda, že netreba vložiť znak koniec riadka. Funkcia f.tellg() (tell get) vráti celé číslo udávajúce, za koľký znak v súbore je nastavený get ukazovateľ (ak je súbor prázdny, vráti 0). Ak v programe namiesto príkazu f << riadok << '\n'; vložíme príkazy if (f.tellg() >0) f << '\n'; f << riadok; dosiahneme, že koniec riadka bude vložený do súboru, len pred druhým a ostatnými korektnými riadkami a nie za posledný riadok v súbore. Funkciou f.tellg() zisťujeme, či nasledujúci riadok bude prvý (f.tellg() musí vrátiť nulu) alebo nie. Ak bude prvý, pred neho nepotrebujeme zapísať koniec riadka. Ak f.tellg() má kladnú hodnotu, v súbore už je minimálne jeden riadok zapísaný a pred zápisom nasledujúceho riadka treba vložiť koniec riadka, aby sa text zapísal na nový riadok. Poznámka 2 - vytvorenie čistého súboru bez prázdneho riadka na konci súboru aj po pripísaní dát Rovnaký postup, aký sme opísali v pozn.1, môžeme uplatniť aj v časti pre pripísanie ďalších riadkov na koniec súboru. Keď začíname zápis do novovytvoreného prázdneho súboru, funkcia f.tellg() určite vráti nulu. Pred pripisovaním na koniec existujúceho súboru, keďže sme súbor museli zavrieť a otvoriť s novými parametrami (ios::out ios::app) musíme pred prvým použitím funkcie tellg get ukazovateľ nastaviť na koniec otvoreného súboru príkazom f.seekg (0,ios::end). Preto musíme pred cyklus do... vložiť riadok s príkazom f.seekg (0,ios::end); a príkaz f << riadok << '\n'; nahradiť už v poznámke 1 popísanými príkazmi if ( f.tellg() > 0 ) f << '\n'; f << riadok; Funkcia f.seekg (parametre) nastaví get ukazovateľ na parametrami určenú pozíciu. Napríklad f.seekg (0, ios::beg); na začiatok a f.seekg (0, ios::end); na koniec súboru. Sekvencia príkazov f.seekg(0,ios::end); cout << Pocet znakov v subore: << f.tellg() << endl; vráti počet znakov otvoreného súboru (pripomíname, že koniec riadka sa zapíše ako dva znaky ASCII kód 10 a 13). Ukážka časti programu, ktorý umožní do súboru znamky.txt zapísať mená študentov a ich známky. fstream f; char znamka; string meno; f.open ( "znamky.txt", ios::out ); cout << "Meno studenta (Koniec -> Enter): "; getline ( cin, meno ); while ( meno!= "" ) f << meno << '\n'; cout << "Znamky (Koniec -> Enter)" << endl; cin.get ( znamka ); if ( znamka!= '\n' ) cin.ignore(); while ( znamka!= '\n' ) f << ' ' << znamka; // zapíše medzeru ako oddeľovač známok a známku cin.get ( znamka ); if ( znamka!= '\n' ) cin.ignore(); cout << "Meno studenta: "; getline ( cin, meno ); if ( meno!= "" ) f << '\n'; f.close(); Bude vytvorený korektný súbor (na konci súboru nebude prázdny riadok). Pred každú, teda aj prvú známku v riadku bude vložená medzera (zvolená ako oddeľovač známok), čo však nemôže pri ďalšom spracovávaní známok zapísaných v súbore spôsobovať problémy, keďže biele znaky pred číslami sa pri načítavaní čísel ignorujú. 8

9 Ďalšie možnosti zápisov pri práci so súbormi: súbor možno súčasne otvoriť pre čítanie aj zápis príkazom f.open (meno_suboru, ios::in ios::out); ak súbor existuje, jeho obsah sa zachová, ak neexistuje, vytvorí sa prázdny súbor po príkaze otvoriť súbor jeho úspešnosť môžeme testovať aj if (f)... alebo if (!f)... príkazy fstream f; f.open(...,...); možno nahradiť jediným príkazom fstream f (...,...) knižnica fstream pozná aj údajové typy určené len na čítanie zo súboru ifstream (input file stream) alebo len na zápis do súboru ofstream (output file stream) ifstream f; deklaruje vstupný prúd, t.j. f možno použiť len na čítanie zo súboru ofstream f; deklaruje výstupný prúd, t.j. f možno použiť len na zápis do súboru Ďalej sa s f pracuje ako s prúdmi typu fstream, napríklad f.open (meno_suboru); alebo ifstream f (meno_súboru); - deklaruje f a zároveň otvorí súbor pre čítanie ofstream f (meno_súboru); - deklaruje f a zároveň otvorí súbor pre zápis 9

10 Typ vector knižnica vector, t.j. musíte použiť #include <vector> Dynamické pole v C++ možno vytvoriť pomocou údajového typu vector. Je to pole v tom slova zmysle, že všetky prvky sú rovnakého typu. Aj pre typ vector platí, že indexy musia byť typu integer a vždy začínajú nulou! vector < Typ_prvku > Meno_vektora; Na vkladanie hodnôt do vektora sa používa príkaz v.push_back(h), ktorý zapíše za posledný prvok vektora v hodnotu h a zvýši veľkosť vektora o 1. Napr.: vector <int> vektor; int pocet; cout << "Pocet prvkov: "; cin >> pocet; for (int i=0; i<pocet; i++) vektor.push_back (rand()%10); // naplní vektor náhodnými jednocif. číslami Vypísanie prvkov vektora: for (int i=0; i<vektor.size(); i++) cout << vektor[i] << '\t'; cout << endl; Ak majú byť všetky vkladané hodnoty rovnaké, môžeme použiť príkaz v.insert(v.end(), p, h), ktorý do vektora v za posledný prvok vloží skopíruje p-krát hodnotu h. Napr.: vector <int> vektor; int pocet; cout << "Pocet prvkov: "; cin >> pocet; vektor.insert (vektor.end(), pocet, 0); // naplní vektor nulami Ak by sme použili namiesto funkcie end() funkciu begin(), nuly by boli nakopírované pred prvý prvok vektora. Ostatné prvky budú automaticky posunuté a preindexované. Všeobecne príkaz v.insert(z, p, h) vloží do vektora v od indexu z (musí byť tzv. iterátor) p-krát hodnotu h. Napr. vektor.insert(vektor.begin()+1, 2, -100); vloží do vektora na pozície s indexami 1 a 2 hodnotu -100, veľkosť vektora sa zväčší o dva, prvky sa automaticky preindexujú. Na odstránenie - vyrezanie prvkov z vektora slúži príkaz v.erase(z,k), ktorý z vektora v odstráni prvky s indexami z intervalu <z, k). Napr. vektor.erase ( vektor.begin()+2, vektor.begin()+5 ) odstráni z vektora prvky s indexami 2, 3 a 4; vektor.erase ( vektor.begin(), vektor.begin()+1 ) odstráni z vektora prvok s index 0 (prvý prvok), čo možno zapísať aj vektor.erase ( vektor.begin() ); príkaz vektor.erase ( vektor.begin()+3 ) odstráni prvok s indexom 3. Zmeniť veľkosť vektora možno príkazom v.resize(p), ktorý ponechá z vektora v len prvých p prvkov (ak p < v.size()), prípadne zväčší veľkosť vektora v na p prvkov (ak p > v.size()) a dokopíruje hodnotu nula. Príkaz v.resize(p,h) dokopíruje hodnotu h. Na prácu s vektormi slúži mnoho príkazov a funkcií, pozri napríklad stránku Napríklad: v.begin() ukazuje na prvý prvok vektora v v.end() ukazuje na (jednu pozíciu za) posledný prvok vektora v v.size() počet prvkov vektora v v[n] hodnota n-tého prvku vektora v v.empty() vráti True, ak je vektor v prázdny, inak False v.clear() vyprázdni vektor v, ako v.erase(v.begin(), v.end()) v.pop_back() odstráni z vektora v posledný prvok a zmenší veľkosť vektora o 1 Vytvorenie a vypísanie vektora so zadaným počtom prvkov: vector<int> v; int pocet; srand((unsigned)time(null)); // knižnica #include <vector> // ako randomize // vytvorí vektor 10

11 cout << "Pocet prvkov: "; cin >> pocet; cin.ignore(); for ( int i = 0; i < pocet; i++ ) v.push_back (rand()%100); //vloží náhodné celé čísla z intervalu <0,100) // vypíše prvky vektora for ( int i = 0; i < v.size(); i++ ) cout << v[i] << '\t'; cout << endl; // bublinkové triedenie int i, pp; int pom; for ( pp = 1; pp < v.size(); pp++ ) for ( i = 0; i < v.size() - pp; i++ ) if ( v[i] > v[i+1] ) pom = v[i]; v[i] = v[i+1]; v[i+1] = pom; Ak potrebujeme použiť parametre, môžeme definovať typ vektor zápisom: typedef vector<int> tvektor; void Vytvor ( tvektor &v ) int pocet; cout << "Pocet prvkov: "; cin >> pocet; cin.ignore(); for ( int i = 0; i < pocet; i++ ) v.push_back ( rand()%10 ); /* teoreticky aj v.resize ( pocet ); for ( int i = 0; i < v.size(); i++ ) v[i] = rand()%10; */ void Vypis ( tvektor v ) for( int i = 0; i < v.size(); i++ ) cout << v[i] << '\t'; cout << endl; void UtriedBubble ( tvektor &v ) int pp, i; int pom; for ( pp = 1; pp < v.size(); pp++ ) for ( i = 0; i < v.size() - pp; i++ ) if ( v[i] > v[i+1] ) pom = v[i]; v[i] = v[i+1]; v[i+1] = pom; int main() tvektor a; Vytvor(a); Vypis(a); UtriedBubble(a); Vypis(a);... Ak nedefinujeme typ vektor, v špecifikácii formálnych parametrov namiesto tvektor píšeme vector<int>. 11

12 Utriediť vzostupne hodnoty vektora v možno aj jediným príkazom sort (v.begin(), v.end()); ktorý je definovaný v knižnici algorithm. Všeobecne sort (z, k); utriedi hodnoty z intervalu <z, k). Iterátory Iterátory možno použiť namiesto indexov sú zviazané s vektorom zápisom vector <Typ_prvku>::iterator Meno_iterátora; napr. vector <int>::iterator it; #include <iostream> #include <vector> #include <algorithm> using namespace std; vector <string> v; typedef vector<string>::iterator iter; void init() v.resize(10); v[0]="fero"; v[1]="adela"; v[2]="zuzana"; v[3]="cyril"; v[4]="darina"; v[5]="dorota"; v[6]="pavol"; v[7]="peter"; v[8]="zora"; v[9]="boris"; sort(v.begin(),v.end()); /* bool bin_vlozit(string x) iter dh = v.begin(); iter hh = v.end(); iter stred = dh + (hh-dh) / 2; do stred = dh + (hh-dh) / 2; if (*stred!= x) if (*stred<x) dh= stred+1; else hh= stred-1; while (*stred!=x && dh<=hh); if (*stred==x) return 1; else if (*stred<x) stred+=1; v.insert(stred,1,x); return 0; */ void bin_vlozit(string x, bool &je, int &index) iter dh=v.begin(); iter hh=v.end(); iter stred; do stred= dh + (hh-dh)/2; if (*stred!= x) if (*stred<x) dh= stred+1; else hh= stred-1; 12

13 while (*stred!=x && dh<=hh); if (*stred==x) je= true; index= stred-v.begin(); else je= false; if (*stred<x) stred+=1; index= stred-v.begin(); //posledne dva príkazy nemožno vymeniť!!! v.insert(stred,1,x); void vypis() for (int i= 0; i< v.size(); i++) cout << i+1 << ". " << v[i] << endl; // for (vector<string>::size_type i= 0; i < v.size(); i++) cout << i+1 << ". " << v[i] << endl; // alebo i!= v.size(); // for (vector<string>::iterator i= v.begin(); i< v.end(); i++) cout << *i << endl; // int j; // for (vector<string>::iterator i= v.begin(); i< v.end(); i++) j= i-v.begin(); cout << j+1 << ". " << v[j] << endl; // for (vector<string>::const_iterator i= v.begin(); i< v.end(); i++) cout << *i << endl; int main() init(); string Meno; bool Je; int Index; cout << "Hladat meno: "; cin >> Meno; cin.ignore(); if (islower(meno[0])) Meno[0]= toupper(meno[0]); bin_vlozit(meno,je,index); if (Je) cout << "Meno sa v zozname nachadza na " << Index+1 << ". mieste!"; else cout << "Meno sa v zozname nenachadza, vlozil som ho na " << Index+1 << ". miesto!"; cout << endl; vypis(); return 0; 13

Databázové systémy. SQL Window functions

Databázové systémy. SQL Window functions Databázové systémy SQL Window functions Scores Tabuľka s bodmi pre jednotlivých študentov id, name, score Chceme ku každému doplniť rozdiel voči priemeru 2 Demo data SELECT * FROM scores ORDER BY score

More information

VYLEPŠOVANIE KONCEPTU TRIEDY

VYLEPŠOVANIE KONCEPTU TRIEDY VYLEPŠOVANIE KONCEPTU TRIEDY Typy tried class - definuje premenné a metódy (funkcie). Ak nie je špecifikovaná inak, viditeľnosť členov je private. struct - definuje premenné a metódy (funkcie). Ak nie

More information

Registrácia účtu Hik-Connect

Registrácia účtu Hik-Connect Registrácia účtu Hik-Connect Tento návod popisuje postup registrácie účtu služby Hik-Connect prostredníctvom mobilnej aplikácie a webového rozhrania na stránke www.hik-connect.comg contents in this document

More information

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) Spájanie tabuliek Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Úvod pri normalizácii rozdeľujeme databázu na viacero tabuliek prepojených cudzími kľúčmi SQL umožňuje tabuľky opäť spojiť

More information

Jeden z variantov príkazu priradenia nám umožňuje zadať za sebou aj viacej vstupných hodnôt, ako napríklad

Jeden z variantov príkazu priradenia nám umožňuje zadať za sebou aj viacej vstupných hodnôt, ako napríklad Príkaz priradenia Príkaz priradenia slúži na priradenie hodnoty premennej. Má tvar premenná = výraz, kde premenná je identifikátor, znak = sa číta priraď a vyhodnotením výrazu sa získa hodnota určitého

More information

Programovanie v jazyku Python. Michal Kvasnica

Programovanie v jazyku Python. Michal Kvasnica Programovanie v jazyku Python Michal Kvasnica Organizačné detaily Prednášky aj cvičenia v 638 Povinná účasť na cvičeniach Hodnotenie: priebežné odovzdávanie zadaní (40% známky) záverečný projekt na skúške

More information

Databázy (1) Prednáška 11. Alexander Šimko

Databázy (1) Prednáška 11. Alexander Šimko Databázy (1) Prednáška 11 Alexander Šimko simko@fmph.uniba.sk Contents I Aktualizovanie štruktúry databázy Section 1 Aktualizovanie štruktúry databázy Aktualizácia štruktúry databázy Štruktúra databázy

More information

kucharka exportu pro 9FFFIMU

kucharka exportu pro 9FFFIMU požiadavky na export kodek : Xvid 1.2.1 stable (MPEG-4 ASP) // výnimočne MPEG-2 bitrate : max. 10 Mbps pixely : štvorcové (Square pixels) rozlíšenie : 1920x1080, 768x432 pre 16:9 // výnimočne 1440x1080,

More information

Databázy (1) Prednáška 08. Alexander Šimko

Databázy (1) Prednáška 08. Alexander Šimko Databázy (1) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Subqueries (poddopyty) konštrukcia WITH Section 1 Subqueries (poddopyty) Subquery (poddopyt) Použitie SELECTu na mieste, kde sme

More information

Databázy (2) Prednáška 08. Alexander Šimko

Databázy (2) Prednáška 08. Alexander Šimko Databázy (2) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Funkcie Zložené typy PL/pgSQL Agregačné funkcie Funkcie Section 1 Funkcie Funkcie PostgreSQL umožňuje vytvoriť si vlastné databázové

More information

Poradové a agregačné window funkcie. ROLLUP a CUBE

Poradové a agregačné window funkcie. ROLLUP a CUBE Poradové a agregačné window funkcie. ROLLUP a CUBE 1) Poradové a agregačné window funkcie 2) Extrémy pomocou DENSE_RANK(), TOP() - Príklady 3) Spriemernené poradia 4) Kumulatívne súčty 5) Group By a Datepart,

More information

1 Vytvorenie tabuľky

1 Vytvorenie tabuľky Základy jazyka SQL (Structured Query Language) - vyvinula IBM začiatkom 70-tych rokov - je to deklaratívny jazyk (popisuje čo urobiť, nie ako) - je súčasťou veľkých databázových systémov (Informix, Oracle,

More information

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami)

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) I2AI: Lecture 04 Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) Lubica Benuskova Reading: AIMA 3 rd ed. chap. 6 ending with 6.3.2 1 Constraint satisfaction problems (CSP) We w

More information

Week 3: File I/O and Formatting 3.7 Formatting Output

Week 3: File I/O and Formatting 3.7 Formatting Output Week 3: File I/O and Formatting 3.7 Formatting Output Formatting: the way a value is printed: Gaddis: 3.7, 3.8, 5.11 CS 1428 Fall 2014 Jill Seaman spacing decimal points, fractional values, number of digits

More information

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona Popis textového formátu a xsd schémy na zasielanie údajov podľa 27 ods. 2 písm. f) zákona (formu na zaslanie údajov si zvolí odosielateľ údajov) Textový formát na zasielanie údajov podľa 27 ods. 2 písm.

More information

PRACOVNÝ ZOŠIT Z PROGRAMOVANIA 2

PRACOVNÝ ZOŠIT Z PROGRAMOVANIA 2 PRACOVNÝ ZOŠIT Z PROGRAMOVANIA 2 Ing. Igor Marko, 2011 PODPROGRAMY V PASCALE DEFINÍCIA, GLOBÁLNE A LOKÁLNE PREMENNÉ Podprogram v programovacom jazyku je postupnosť príkazov vystupujúcich pod jedným názvom,

More information

CS 31 Review Sheet. Tau Beta Pi - Boelter Basics 2. 2 Working with Decimals 2. 4 Operators 3. 6 Constants 3.

CS 31 Review Sheet. Tau Beta Pi - Boelter Basics 2. 2 Working with Decimals 2. 4 Operators 3. 6 Constants 3. CS 31 Review Sheet Tau Beta Pi - Boelter 6266 Contents 1 Basics 2 2 Working with Decimals 2 3 Handling Strings and Numbers with stdin/stdout 3 4 Operators 3 5 Common Mistakes/Misconceptions 3 6 Constants

More information

Developed By : Ms. K. M. Sanghavi

Developed By : Ms. K. M. Sanghavi Developed By : Ms. K. M. Sanghavi Designing Our Own Manipulators We can design our own manipulators for certain special purpose.the general form for creating a manipulator without any arguments is: ostream

More information

1 Komplexný príklad využitia OOP

1 Komplexný príklad využitia OOP 1 Komplexný príklad využitia OOP Najčastejším využitím webových aplikácií je komunikácia s databázovým systémom. Komplexný príklad je preto orientovaný práve do tejto oblasti. Od verzie PHP 5 je jeho domovskou

More information

Characters, c-strings, and the string Class. CS 1: Problem Solving & Program Design Using C++

Characters, c-strings, and the string Class. CS 1: Problem Solving & Program Design Using C++ Characters, c-strings, and the string Class CS 1: Problem Solving & Program Design Using C++ Objectives Perform character checks and conversions Knock down the C-string fundamentals Point at pointers and

More information

Strings and Stream I/O

Strings and Stream I/O Strings and Stream I/O C Strings In addition to the string class, C++ also supports old-style C strings In C, strings are stored as null-terminated character arrays str1 char * str1 = "What is your name?

More information

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca Obsah balenia TL-WR743ND Rýchly inštalačný sprievodca PoE injektor Napájací adaptér CD Ethernet kábel Systémové požiadavky

More information

Vnorené SQL. Autor prezentácie: Peter Šípoš

Vnorené SQL. Autor prezentácie: Peter Šípoš Vnorené SQL Autor prezentácie: Peter Šípoš Literatúra Programmatic SQL od Pearson Ed Embedded SQL: http://download.oracle. com/docs/cd/b10501_01/appdev.920/a97269/pc_06sql.htm Oracle Dynamic SQL: http://download.oracle.

More information

Convenient way to deal large quantities of data. Store data permanently (until file is deleted).

Convenient way to deal large quantities of data. Store data permanently (until file is deleted). FILE HANDLING Why to use Files: Convenient way to deal large quantities of data. Store data permanently (until file is deleted). Avoid typing data into program multiple times. Share data between programs.

More information

Streams in C++ Stream concept. Reference information. Stream type declarations

Streams in C++ Stream concept. Reference information. Stream type declarations Stream concept A stream represent a sequence of bytes arriving, being retrieved, being stored, or being sent, in order. A stream is continuos and offer sequential access to the data. Each byte can be read

More information

Copyright 2016 by Martin Krug. All rights reserved.

Copyright 2016 by Martin Krug. All rights reserved. MS Managed Service Copyright 2016 by Martin Krug. All rights reserved. Reproduction, or translation of materials without the author's written permission is prohibited. No content may be reproduced without

More information

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals... Desatinné čísla #1a Mravec išiel 5,5 cm presne na sever, potom 3,4 cm na východ, 1,8 cm na juh, 14,3 cm na západ, 1,3 cm na sever a 10,9 cm na východ. Najmenej koľko cm musí teraz prejsť, aby sa dostal

More information

Introduction to Algorithms and Data Structures. Lecture 6 - Stringing Along - Character and String Manipulation

Introduction to Algorithms and Data Structures. Lecture 6 - Stringing Along - Character and String Manipulation Introduction to Algorithms and Data Structures Lecture 6 - Stringing Along - Character and String Manipulation What are Strings? Character data is stored as a numeric code that represents that particular

More information

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) Jazyk SQL Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Jazyk SQL - Structured Query Language SQL je počítačový jazyk určený na komunikáciu s relačným SRBD neprocedurálny (deklaratívny) jazyk

More information

Testovanie bieleho šumu

Testovanie bieleho šumu Beáta Stehlíková FMFI UK Bratislava Opakovanie z prednášky Vygenerujeme dáta Vygenerujeme dáta: N

More information

Chapter 8 File Processing

Chapter 8 File Processing Chapter 8 File Processing Outline 1 Introduction 2 The Data Hierarchy 3 Files and Streams 4 Creating a Sequential Access File 5 Reading Data from a Sequential Access File 6 Updating Sequential Access Files

More information

Cours de C++ Introduction

Cours de C++ Introduction Cours de C++ Introduction Cécile Braunstein cecile.braunstein@lip6.fr Cours de C++ 1 / 20 Généralité Notes Interros cours 1/3 Contrôle TP 1/3 Mini-projet 1/3 Bonus (Note de Participation) jusqu à 2 points

More information

I/O Streams and Standard I/O Devices (cont d.)

I/O Streams and Standard I/O Devices (cont d.) Chapter 3: Input/Output Objectives In this chapter, you will: Learn what a stream is and examine input and output streams Explore how to read data from the standard input device Learn how to use predefined

More information

C++ Programming Lecture 10 File Processing

C++ Programming Lecture 10 File Processing C++ Programming Lecture 10 File Processing By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department Outline Introduction. The Data Hierarchy. Files and Streams. Creating a Sequential

More information

Object Oriented Programming In C++

Object Oriented Programming In C++ C++ Question Bank Page 1 Object Oriented Programming In C++ 1741059 to 1741065 Group F Date: 31 August, 2018 CIA 3 1. Briefly describe the various forms of get() function supported by the input stream.

More information

Summary of basic C++-commands

Summary of basic C++-commands Summary of basic C++-commands K. Vollmayr-Lee, O. Ippisch April 13, 2010 1 Compiling To compile a C++-program, you can use either g++ or c++. g++ -o executable_filename.out sourcefilename.cc c++ -o executable_filename.out

More information

Advanced I/O Concepts

Advanced I/O Concepts Advanced Object Oriented Programming Advanced I/O Concepts Seokhee Jeon Department of Computer Engineering Kyung Hee University jeon@khu.ac.kr 1 1 Streams Diversity of input sources or output destinations

More information

BETA BASIC 3.0 (C) Betasoft 1985, 92 Oxford Road, Masley, Birmingham

BETA BASIC 3.0 (C) Betasoft 1985, 92 Oxford Road, Masley, Birmingham BETA BASIC 3.0 (C) Betasoft 1985, 92 Oxford Road, Masley, Birmingham PREHĽAD...2 PRÍKAZY:...2 FUNKCIE:...3 ÚVOD...4 EDITÁCIA...4 PROCEDÚRY A PARAMETRE...5 Referencie, alebo odovzdávanie parametra adresou:...7

More information

Unit-V File operations

Unit-V File operations Unit-V File operations What is stream? C++ IO are based on streams, which are sequence of bytes flowing in and out of the programs. A C++ stream is a flow of data into or out of a program, such as the

More information

Random File Access. 1. Random File Access

Random File Access. 1. Random File Access Random File Access 1. Random File Access In sequential file access, the file is read or written sequentially from the beginning. In random file access, you can skip around to various points in the file

More information

CS31 Discussion 1E. Jie(Jay) Wang Week3 Oct.12

CS31 Discussion 1E. Jie(Jay) Wang Week3 Oct.12 CS31 Discussion 1E Jie(Jay) Wang Week3 Oct.12 Outline Problems from Project 1 Review of lecture String, char, stream If-else statements Switch statements loops Programming challenge Problems from Project

More information

1- Write a single C++ statement that: A. Calculates the sum of the two integrates 11 and 12 and outputs the sum to the consol.

1- Write a single C++ statement that: A. Calculates the sum of the two integrates 11 and 12 and outputs the sum to the consol. 1- Write a single C++ statement that: A. Calculates the sum of the two integrates 11 and 12 and outputs the sum to the consol. B. Outputs to the console a floating point number f1 in scientific format

More information

Chapter Overview. I/O Streams as an Introduction to Objects and Classes. I/O Streams. Streams and Basic File I/O. Objects

Chapter Overview. I/O Streams as an Introduction to Objects and Classes. I/O Streams. Streams and Basic File I/O. Objects Chapter 6 I/O Streams as an Introduction to Objects and Classes Overview 6.1 Streams and Basic File I/O 6.2 Tools for Stream I/O 6.3 Character I/O Copyright 2008 Pearson Addison-Wesley. All rights reserved.

More information

c++ keywords: ( all lowercase ) Note: cin and cout are NOT keywords.

c++ keywords: ( all lowercase ) Note: cin and cout are NOT keywords. Chapter 1 File Extensions: Source code (cpp), Object code (obj), and Executable code (exe). Preprocessor processes directives and produces modified source Compiler takes modified source and produces object

More information

for (int i = 1; i <= 3; i++) { do { cout << "Enter a positive integer: "; cin >> n;

for (int i = 1; i <= 3; i++) { do { cout << Enter a positive integer: ; cin >> n; // Workshop 1 #include using namespace std; int main () int n, k; int sumdigits; for (int i = 1; i n; cin.clear (); cin.ignore (100,

More information

The C++ Language. Output. Input and Output. Another type supplied by C++ Very complex, made up of several simple types.

The C++ Language. Output. Input and Output. Another type supplied by C++ Very complex, made up of several simple types. The C++ Language Input and Output Output! Output is information generated by a program.! Frequently sent the screen or a file.! An output stream is used to send information. Another type supplied by C++

More information

Chapter 6. I/O Streams as an Introduction to Objects and Classes. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

Chapter 6. I/O Streams as an Introduction to Objects and Classes. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 6 I/O Streams as an Introduction to Objects and Classes Overview 6.1 Streams and Basic File I/O 6.2 Tools for Stream I/O 6.3 Character I/O Slide 6-3 6.1 Streams and Basic File I/O I/O Streams I/O

More information

This chapter introduces the notion of namespace. We also describe how to manage input and output with C++ commands via the terminal or files.

This chapter introduces the notion of namespace. We also describe how to manage input and output with C++ commands via the terminal or files. C++ PROGRAMMING LANGUAGE: NAMESPACE AND MANGEMENT OF INPUT/OUTPUT WITH C++. CAAM 519, CHAPTER 15 This chapter introduces the notion of namespace. We also describe how to manage input and output with C++

More information

Spôsoby zistenia ID KEP

Spôsoby zistenia ID KEP Spôsoby zistenia ID KEP ID KEP (kvalifikovaný elektronický podpis) je možné zistiť pomocou napr. ovládacieho panela, prostredíctvom prehliadača Internet Expolrer, Google Chrome alebo Mozilla Firefox. Popstup

More information

C++ Binary File I/O. C++ file input and output are typically achieved by using an object of one of the following classes:

C++ Binary File I/O. C++ file input and output are typically achieved by using an object of one of the following classes: C++ Binary File I/O C++ file input and output are typically achieved by using an object of one of the following classes: ifstream for reading input only. ofstream for writing output only. fstream for reading

More information

TYPY, KONŠTANTY, PROCEDÚRY A FUNKCIE PRE PRÁCU S POĽOM

TYPY, KONŠTANTY, PROCEDÚRY A FUNKCIE PRE PRÁCU S POĽOM TYPY, KONŠTANTY, PROCEDÚRY A FUNKCIE PRE PRÁCU S POĽOM Doposiaľ sme si ukázali základné štruktúry a jednotky jazyka. Pracovali sme s premennými rôznych typov ako aj s konštantnými hodnotami. Používali

More information

Input and Output File (Files and Stream )

Input and Output File (Files and Stream ) Input and Output File (Files and Stream ) BITE 1513 Computer Game Programming Week 14 Scope Describe the fundamentals of input & output files. Use data files for input & output purposes. Files Normally,

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2305/lab33.C Input: under control of main function Output: under control of main function Value: 3 The Shell sort, named after its inventor Donald Shell, provides a simple and efficient

More information

Triedy v C++ 1. Úvod do tried

Triedy v C++ 1. Úvod do tried 1. Úvod do tried Používanie nového dátového typu ktorý budeme oht class trieda nás dovedie k využívaniu objektových vlastností jazyka C++. Tento nový typ programov OOP objektovo orientované programovanie

More information

Strings and Streams. Professor Hugh C. Lauer CS-2303, System Programming Concepts

Strings and Streams. Professor Hugh C. Lauer CS-2303, System Programming Concepts Strings and Streams Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie, Absolute C++, by Walter

More information

UEE1303(1070) S 12 Object-Oriented Programming in C++

UEE1303(1070) S 12 Object-Oriented Programming in C++ Computational Intelligence on Automation Lab @ NCTU Learning Objectives UEE1303(1070) S 12 Object-Oriented Programming in C++ Lecture 06: Streams and File Input/Output I/O stream istream and ostream member

More information

Fundamentals of Programming Session 27

Fundamentals of Programming Session 27 Fundamentals of Programming Session 27 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2013 These slides have been created using Deitel s slides Sharif University of Technology Outlines

More information

BITG 1113: Files and Stream LECTURE 10

BITG 1113: Files and Stream LECTURE 10 BITG 1113: Files and Stream LECTURE 10 1 LEARNING OUTCOMES At the end of this lecture, you should be able to: 1. Describe the fundamentals of input & output files. 2. Use data files for input & output

More information

obsahuje 5 príkladov, spolu 29>25 bodov skupina:

obsahuje 5 príkladov, spolu 29>25 bodov skupina: Midterm 2013, verzia A Meno a priezvisko: obsahuje 5 príkladov, spolu 29>25 bodov skupina: 1A) [8 bodov] Zistite, čo počíta nasledujúca rekurzívna funkcia foo pre n>=0. Hint: foo(2013) = 6. static long

More information

Chapter 10 - Notes Applications of Arrays

Chapter 10 - Notes Applications of Arrays Chapter - Notes Applications of Arrays I. List Processing A. Definition: List - A set of values of the same data type. B. Lists and Arrays 1. A convenient way to store a list is in an array, probably a

More information

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára REPORT DESIGNER úprava formulárov v Money S4 / Money S5 Informačný systém Money S4/S5 umožňuje upraviť tlačové zostavy tak, aby plne vyhovovali potrebám používateľa. Na úpravu tlačových zostáv slúži doplnkový

More information

CS2141 Software Development using C/C++ Stream I/O

CS2141 Software Development using C/C++ Stream I/O CS2141 Software Development using C/C++ Stream I/O iostream Two libraries can be used for input and output: stdio and iostream The iostream library is newer and better: It is object oriented It can make

More information

Writing a Good Program. 7. Stream I/O

Writing a Good Program. 7. Stream I/O Writing a Good Program 1 Input and Output I/O implementation is hardware dependent C++ does not, as a part of the language, define how data are sent out and read into the program The input and output (I/O)

More information

6. Riadenie chodu programu

6. Riadenie chodu programu 6. Riadenie chodu programu 6.1. Výrazový príkaz 6.2. Prázdny príkaz 6.3. Bloky. 6.4. Oblasť platnosti identifikátora 6.5. Podmienený príkaz if-else. 6.6. Prepínač 6.7. Cykly Cyklus while Cyklus for Cyklus

More information

What we will learn about this week:

What we will learn about this week: What we will learn about this week: Streams Basic file I/O Tools for Stream I/O Manipulators Character I/O Get and Put EOF function Pre-defined character functions Objects 1 I/O Streams as an Introduction

More information

C++ does not, as a part of the language, define how data are sent out and read into the program

C++ does not, as a part of the language, define how data are sent out and read into the program Input and Output C++ does not, as a part of the language, define how data are sent out and read into the program I/O implementation is hardware dependent The input and output (I/O) are handled by the standard

More information

Lab Instructor : Jean Lai

Lab Instructor : Jean Lai Lab Instructor : Jean Lai Group related statements to perform a specific task. Structure the program (No duplicate codes!) Must be declared before used. Can be invoked (called) as any number of times.

More information

Software Design & Programming I

Software Design & Programming I Software Design & Programming I Starting Out with C++ (From Control Structures through Objects) 7th Edition Written by: Tony Gaddis Pearson - Addison Wesley ISBN: 13-978-0-132-57625-3 Chapter 3 Introduction

More information

7. UKAZOVATELE, POLIA A REŤAZCE

7. UKAZOVATELE, POLIA A REŤAZCE 7. UKAZOVATELE, POLIA A REŤAZCE 7.1. Ukazovatele 7.2. Pole 7.3. Aritmetika ukazovateľov 7.4. Reťazce 7.5. Viacrozmerné pole, ukazovateľ na ukazovateľ 7.6. Ukazovateľ na ukazovateľ a pole ukazateľov 7.7.

More information

Advanced File Operations. Review of Files. Declaration Opening Using Closing. CS SJAllan Chapter 12 2

Advanced File Operations. Review of Files. Declaration Opening Using Closing. CS SJAllan Chapter 12 2 Chapter 12 Advanced File Operations Review of Files Declaration Opening Using Closing CS 1410 - SJAllan Chapter 12 2 1 Testing for Open Errors To see if the file is opened correctly, test as follows: in.open("cust.dat");

More information

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator Anycast Ľubor Jurena CEO jurena@skhosting.eu Michal Kolárik System Administrator kolarik@skhosting.eu O nás Registrátor Webhosting Serverové riešenia Správa infraštruktúry Všetko sa dá :-) Index Čo je

More information

2. Týždeň MySQL - dátové typy a funkcie num. a reťazcové

2. Týždeň MySQL - dátové typy a funkcie num. a reťazcové 2. Týždeň MySQL - dátové typy a funkcie num. a reťazcové 1. Prvky jazyka MySQL http://dev.mysql.com/doc/refman/5.7/en/language-structure.html 2. Typy a pretypovanie http://dev.mysql.com/doc/refman/5.7/en/data-types.html

More information

#include <iostream> #include <algorithm> #include <cmath> using namespace std; int f1(int x, int y) { return (double)(x/y); }

#include <iostream> #include <algorithm> #include <cmath> using namespace std; int f1(int x, int y) { return (double)(x/y); } 1. (9 pts) Show what will be output by the cout s in this program. As in normal program execution, any update to a variable should affect the next statement. (Note: boolalpha simply causes Booleans to

More information

Obrázok č. 1 Byte. Obrázok č. 2 Slovo

Obrázok č. 1 Byte. Obrázok č. 2 Slovo C++ pod lupou Nie som ortodoxným prívržencom nijakého dnes používaného jazyka, poznám ich už riadnu kôpku, ale najbližšie mám práve k C++. Prečo, o tom by sa dalo diskutovať donekonečna, nie je to však

More information

System Design and Programming II

System Design and Programming II System Design and Programming II CSCI 194 Section 01 CRN: 10968 Fall 2017 David L. Sylvester, Sr., Assistant Professor Chapter 10 Characters, Strings, and the string Class Character Testing The C++ library

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2315/38/lab38.(C CPP cpp c++ cc cxx cp) Input: under control of main function Output: under control of main function Value: 3 A bucket sort begins with a one-dimensional array of positive

More information

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible)

Multiple Choice (Questions 1 14) 28 Points Select all correct answers (multiple correct answers are possible) Name Closed notes, book and neighbor. If you have any questions ask them. Notes: Segment of code necessary C++ statements to perform the action described not a complete program Program a complete C++ program

More information

XHTML1folie.doc XHTML Čo bolo predtým?

XHTML1folie.doc XHTML Čo bolo predtým? XHTML1folie.doc 1 1.1 XHTML 1.1.1 Čo bolo predtým? XHTML - nová definícia jazyka HTML vo forme XML. Vývoj HTML: r. 1995 HTML 2.0 (základné formátovanie a štruktúrovanie, obrázky, formuláre). V r. 1995

More information

Aplikačný dizajn manuál

Aplikačný dizajn manuál Aplikačný dizajn manuál Úvod Aplikačný dizajn manuál je súbor pravidiel vizuálnej komunikácie. Dodržiavaním jednotných štandardov, aplikácií loga, písma a farieb pri prezentácii sa vytvára jednotný dizajn,

More information

Mikroprocesor. Mikroprocesor. Program. Federico Faggin, tvorca prvého mikroprocesora i4004

Mikroprocesor. Mikroprocesor. Program. Federico Faggin, tvorca prvého mikroprocesora i4004 Mikroprocesor Federico Faggin, tvorca prvého mikroprocesora i4004 Mikroprocesor Program 1. Choď z D-110 do D0A1 2. Presuň obsah z adresy 33 do košíka 3. Prines obsah košíka do D-110 4. Spracuj obsah 5.

More information

C++ for Python Programmers

C++ for Python Programmers C++ for Python Programmers Adapted from a document by Rich Enbody & Bill Punch of Michigan State University Purpose of this document This document is a brief introduction to C++ for Python programmers

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2336/43/lab43.(C CPP cpp c++ cc cxx cp) Input: under control of main function Output: under control of main function Value: 2 The purpose of this assignment is to modify Lab 38. Instead

More information

CSc Introduc/on to Compu/ng. Lecture 19 Edgardo Molina Fall 2011 City College of New York

CSc Introduc/on to Compu/ng. Lecture 19 Edgardo Molina Fall 2011 City College of New York CSc 10200 Introduc/on to Compu/ng Lecture 19 Edgardo Molina Fall 2011 City College of New York 18 Standard Device Files Logical file object: Stream that connects a file of logically related data to a program

More information

The cin Object. cout << "Enter the length and the width of the rectangle? "; cin >> length >> width;

The cin Object. cout << Enter the length and the width of the rectangle? ; cin >> length >> width; The cin Object Short for console input. It is used to read data typed at the keyboard. Must include the iostream library. When this instruction is executed, it waits for the user to type, it reads the

More information

Definition Matching (10 Points)

Definition Matching (10 Points) Name SOLUTION Closed notes and book. If you have any questions ask them. Write clearly and make sure the case of a letter is clear (where applicable) since C++ is case sensitive. There are no syntax errors

More information

Multiple Choice (Questions 1 13) 26 Points Select all correct answers (multiple correct answers are possible)

Multiple Choice (Questions 1 13) 26 Points Select all correct answers (multiple correct answers are possible) Name Closed notes, book and neighbor. If you have any questions ask them. Notes: Segment of code necessary C++ statements to perform the action described not a complete program Program a complete C++ program

More information

Name Section: M/W T/TH Number Definition Matching (8 Points)

Name Section: M/W T/TH Number Definition Matching (8 Points) Name Section: M/W T/TH Number Definition Matching (8 Points) 1. (8 pts) Match the words with their definitions. Choose the best definition for each word. Iteration Counter Event Counter Loop Abstract Step

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY Diagramatická konverzia súborov 2014 János Farkas UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFOMATIKY

More information

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures The main body and cout Agenda 1 Fundamental data types Declarations and definitions Control structures References, pass-by-value vs pass-by-references The main body and cout 2 C++ IS AN OO EXTENSION OF

More information

I BSc(IT) [ Batch] Semester II Core: Object Oriented Programming With C plus plus - 212A Multiple Choice Questions.

I BSc(IT) [ Batch] Semester II Core: Object Oriented Programming With C plus plus - 212A Multiple Choice Questions. Dr.G.R.Damodaran College of Science (Autonomous, affiliated to the Bharathiar University, recognized by the UGC)Reaccredited at the 'A' Grade Level by the NAAC and ISO 9001:2008 Certified CRISL rated 'A'

More information

Formatting outputs String data type Interactive inputs File manipulators. Access to a library that defines 3. instead, a library provides input

Formatting outputs String data type Interactive inputs File manipulators. Access to a library that defines 3. instead, a library provides input Input and Output Outline Formatting outputs String data type Interactive inputs File manipulators CS 1410 Comp Sci with C++ Input and Output 1 CS 1410 Comp Sci with C++ Input and Output 2 No I/O is built

More information

Introduction to C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts

Introduction to C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts Introduction to C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie, Absolute C++, by Walter

More information

CISC 1110 (CIS 1.5) Introduc2on to Programming Using C++

CISC 1110 (CIS 1.5) Introduc2on to Programming Using C++ CISC 1110 (CIS 1.5) Introduc2on to Programming Using C++ Spring 2012 Instructor : K. Auyeung Email Address: Course Page: Class Hours: kenny@sci.brooklyn.cuny.edu hbp://www.sci.brooklyn.cuny.edu/~kenny/cisc1110

More information

In this chapter, you will learn about: An Array Type for Strings. The Standard string Class. Vectors. Introduction Computer Science 1 CS 23021

In this chapter, you will learn about: An Array Type for Strings. The Standard string Class. Vectors. Introduction Computer Science 1 CS 23021 Chapter 8 In this chapter, you will learn about: An Array Type for Strings The Standard string Class Vectors The C Language Representation of Strings (C-Strings) The C-String Variable: Array of Characters

More information

Type Aliases. Examples: using newtype = existingtype; // C++11 typedef existingtype newtype; // equivalent, still works

Type Aliases. Examples: using newtype = existingtype; // C++11 typedef existingtype newtype; // equivalent, still works Type Aliases A name may be defined as a synonym for an existing type name. Traditionally, typedef is used for this purpose. In the new standard, an alias declaration can also be used C++11.Thetwoformsareequivalent.

More information

Javascript Manuál. Drgo Pavel SOŠ

Javascript Manuál. Drgo Pavel SOŠ 2016 Javascript Manuál Drgo Pavel SOŠ 24.7.2016 OBSAH JavaScript návod 01 Úvod do JavaScriptu...3 JavaScript návod 02 Kam s ním...5 JavaScript návod 03 Premenné úvod...9 JavaScript návod 04 Premenné typy...11

More information

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit. Fiber 5 Mbit ** 5 Mbit / Mbit 5,90 Fiber 50 Mbit * 50 Mbit / 8 Mbit 9,90 Fiber 80 Mbit * 80 Mbit / Mbit 5,90 Mini Mbit* Mbit / Mbit 9,90 Klasik 2 Mbit* 2 Mbit / 2 Mbit Standard 8 Mbit* 8 Mbit / 3Mbit Expert

More information

Programming in C/C

Programming in C/C Programming in C/C++ 2004-2005 http://cs.vu.nl/~nsilvis/c++/2005 Natalia Silvis-Cividjian e-mail: nsilvis@few.vu.nl Topics about C++ language about this course C++ basics self test exercises (10 min) (10

More information

A SHORT COURSE ON C++

A SHORT COURSE ON C++ Introduction to A SHORT COURSE ON School of Mathematics Semester 1 2008 Introduction to OUTLINE 1 INTRODUCTION TO 2 FLOW CONTROL AND FUNCTIONS If Else Looping Functions Cmath Library Prototyping Introduction

More information

2. prednáška ( )

2. prednáška ( ) 2. prednáška (24.9.2018) č 1 Na predošlej prednáške (1) Vytvorenie objektu triedy a premennej (napr. franklin), cez ktorú s vytvoreným objektom komunikujeme: Turtle franklin = new Turtle(); Volanie metód

More information