|
|
Lexikálne jednotkyObsah tém.
Na začiatok sme si ukázali niekoľko jednoduchých príkladov,
prostredníctvom ktorých ste mali možnosť nahliadnuť do programovania. Lexikálne jednotky sú základné stavebné prvky v jazyku. Pričom
neberieme do úvahy len programovací jazyk. Lexikálne jednotky používame aj v
bežnom jazyku či už písomnej resp. ústnej podobe. Lexikálna jednotka môže byť
zložená z jedného alebo viac znakov. Kľúčové slová sú také lexikálne jednotky, ktorých použitie si
vyhradzuje samotný jazyk. To znamená že ich nie je možné použiť na niečo iné ako
to na čo sú určené. Identifikátor pomenúva jednotlivé prvky programu ako premenné, funkcie, návesti a pod. Pri vytváraní identifikátorov existujú isté pravidlá:
Operátory sú znaky pomocou ktorých vyjadrujeme matematické
operácie. Najčastejšie sú zložené z jedného alebo dvoch znakov.
Aritmetické operátory Sú to binárne operátory vzťahujúce sa k dvom operandom. Patria
tam : +,-,*,/ a operátor modulo %. Operátor modulo sa nemôže aplikovať na
údajové typy float a double. Znamená, že premennej a bude priradená hodnota premennej d v tom prípade, že logický výraz v zátvorke je pravdivý, v opačnom prípade jej bude priradená hodnota premennej e. Relačné a logické operátory Relačné operátory majú všetky rovnakú prioritu. Výslednou hodnotou relačného výrazu je celočíselná hodnota 0, ak je výraz nepravdivý. Ak je výraz pravdivý výslednou hodnotou výrazu je 1. Operátory inkrementácie a dekrementácia V C - čku namiesto výrazu i=i+1 napíšeme i++ alebo ++i a namiesto i=i-1 napíšeme i-- alebo --i .Medzi nimi je rozdiel. Prefixový operátor (++ resp. -- pred premennou) inkrementuje resp. dekrementuje ešte pred použitím jej hodnoty. Posfixový operátor ( ++ resp. -- za premennou ) premennú inkrementuje resp. dekrementuje až po použití jej hodnoty. Napr. ak n má hodnotu 5, potom x = n++ priradí premennej x hodnotu 5 a premenná n nadobudne hodnotu 6. Avšak výraz: x = ++n priradí premennej x aj n hodnotu 6. Operátory inkrementovania a dekrementovania možno použiť len v spojitosti s jedinou premennou. Napr. výraz x = (i + j)++ nie je možný. Logické operátory s bitmi Operátory pre manipuláciu s bitmi môžu pracovať len s
premennými typu int.
Priorita operátorov V nasledujúcej tabuľke uvádzame všetky operátory používané v jazyku C. Pričom najvyššiu prioritu majú operátory v najvyššom riadku. V každom riadku majú operátory rovnakú prioritu.
V C-čku máme 4 typy konštánt: celočíselné, reálne, znakové, reťazec.
Reálna konštanta Reálna konštanta je automaticky typu double. Mame aj typ float. Reálna konštanta je zložená z celej časti, desatinnej bodky a desatinnej časti. napr.:75.25 , 3.14 Znaková konštanta Predstavuje jeden znak umiestnený medzi dvoma apostrofmi napr.
´a´. Niektoré nezobraziteľné znaky sa zapisujú pomocou opačného lomítka a
príslušného symbolu Konštantný výraz sa definuje pomocou kľúčového slova
#define #define MAXLINE 100
#define PI 3.14
Pri definíciách konštant sa bodkočiarka na konci nedáva. Textová konštanta Textová konštanta je postupnosť znakov uzavretých v
úvodzovkách. Okrem zobraziteľných znakov môžme použiť aj nezobraziteľné Ak chceme do reťazca vložiť úvodzovky dávame pred úvodzovky opačné lomítko.
Dátový objekt Dátový objekt je časť operačnej pamäte, ktorú program používa na ukladanie údajov. Základné objekty s ktorými program, napísaný v jazyku C, narába sú premenné, konštanty a funkcie. Na ich pomenovanie sa používajú identifikátory. Ich vymenovanie sa nazýva deklarácia. Deklaráciou sa premenná pomenuje a určí sa jej typ. Veľmi často je prvá deklarácia zároveň aj definíciou premennej. V tom prípade sa premennej zároveň vyhradzuje v pamäti priestor, prípadne sa aj inicializuje ( priradí sa jej počiatočná hodnota). Základné vlastnosti dátového objektu Dátový typ
Tabuľka č.1 Tu budú dátové typy zoskenovať C++ POD LUPOU STR.6 Pre bližšie určenie dĺžky celého čísla sa používajú
kvalifikátory short a long. Kvalifikátor unsigned ( bez znamienka) pripúšťa len
celé kladné čísla no dvojnásobnej dĺžky. short int x; V jazyku C chýba typ logický (boolean). Tento je nahradený
typom int, kde nulová hodnota je totožná s hodnotou (FALSE) a nenulová s
hodnotou true (TRUE). odvodené Odvodené dátové typy sú vždy zložené zo základných dátových typov alebo ich kombinácií.
Veľkosť
Pozn. Viac informácií o veľkosti jednotlivých dátových objektoch viď. tabuľka č.1 Adresa Obsah Obor hodnôt
Pozn. Viac informácií o obore hodnôt jednotlivých dátových objektoch viď. tabuľka č.1 Možnosť meniť obsah Meno
Rozsah platnosti Operácie s dátovým objektom Definícia dátového objektu Priradenie znamená napĺňanie obsahu dátového objektu hodnotou napr.: pocet_ziakov=4; Inicializácia určenie počiatočnej hodnoty dátového objektu už pri definícií.
POLE Pole je dátový objekt zložený z dátových
objektov, ktoré majú rovnaký dátový typ. K prvkom poľa pristupujeme
pomocou indexov. Deklarácia poľa j podobná deklarácií
jednoduchej premennej s tím rozdielom že za meno premennej uvedieme v hranatých
zátvorkách počet prvkov poľa. napr.: int a[20];
Prvkom v poli priradzujeme hodnoty dvoma spôsobmi
a to buď v cykle napr. pomocou funkcie scanf alebo priamo, vymenovaním
jednotlivých hodnôt. Znakové pole napr.: char znak[10]; Inicializácia poľa prvkov typu char:
alebo char znak[] = {´s´,´k´,´o´,´l´,´a´,´\0´}; Matica - viacrozmerné poľe Matica je príklad dvojrozmerného poľa. Pod pojmom matica typu m * n chápeme obdlžníkové pole, ktoré je zložené z m - riadkov a n - stĺpcov. Zápis matice: TU BUDE ZÁPIS
Deklarácia matice: napr.: int a[5][5];
Príklady pre prácu s poľom Príklad č.26: #include<stdio.h> #include<conio.h> void main() { float pole[10]; //deklarácia poľa 10 reálnych čísel int i,n; // i - premenná určujúca index prvku, // n - premenná pre počet prvkov poľa clrscr(); printf("\nZadaj počet prvkov pola \n"); scanf("%d",&n); // do premennej n sa uloží počet prvkov poľa for(i=0;i<n;i++) // načítanie n prvkov do poľa s indexom od i=0 až n-1 { printf("\n[%d] prvok pola: ",i); scanf("%f",&pole[i]); } printf("\nČísla v obrátenom poradí:"); for(i=n-1;i>=0;i--) // píš prvky v obrát.poradí, prvý vytlačený prvok printf("\npole[%d]=%.2f",i,pole[i]); // má index i=n-1 a posledný i=0 s krokom i=i-1 printf("\nČísla v načítanom poradí:"); // čísla sú idexované podľa načítania // prvé číslo i=0 a posledné i=n-1 for(i=0;i<n;i++) { printf("\npole[%d]=%.2f",i,pole[i]); } getch(); }Príklad č.27: Program, ktorý načíta z klávesnice 7 celých čísel a vypíše na obrazovku súčet párnych a súčet nepárnych prvkov poľa. #include<stdio.h> #include<conio.h> void main(void) { int p=0,n=0,i,j,pole[10]; clrscr(); printf("\nZadaj 7 celých čísel: \n"); for(i=0;i<7;i++) { printf("\n[%d] prvok pola: ",i); scanf("%d",&pole[i]); } for(j=0;j<7;j++) { if(pole[j]%2==0) // %2 - modulo2 ak je neparny nebude 0 p=p+pole[j]; // pripočítaj párny else n=n+pole[j]; // pripočítaj nepárny } printf("\nSúčet parných prvkov poľa je %d.",p); printf("\nSúčet neparných prvkov poľa je %d.",n); getch(); } Príklad č.28: #include<stdio.h> #include<conio.h> void main(void) { int pole[10],i,s=0; clrscr(); printf("\nZadaj 10 prvkov, ktoré chceš spočítať.\n"); for(i=0;i<10;i++) { printf("\n[%d] prvok pola: ",i); scanf("%d",&pole[i]); // &pole[i] je adresa i-tého prvku poľa } for(i=0;i<10;i++) s=s+pole[i]; // sčítaj prvky poľa printf("\nSúčet prvkov poľa je %d.",s); getch(); } Príklad č.29:
Triedenie prvkov poľa
Tu bude teória
Príklad č.30: #include<stdio.h> #include<conio.h> void main(void) { int a[100]; //45,12,5,87,15,96,25,84,14,2}; int i,x,j,pom,n,k; clrscr(); printf("\nZadaj veľkosť poľa: "); scanf("%d",&n); for (i=0;i<n;i++) { printf("\n Zadaj a[%d]= ",i); scanf("%d",&a[i]); } printf("\nChcete usporiadať prvky poľa zostupne alebo vzostupne (z/v): \n"); x=getch(); // načítaj jeden znak odpovede if(x=='v') { for (i=0;i<n-1;i++) // n cyklov potrebných pre //"prebublanie" každého prvku { for (j=0;j<n-i-1; j++) // v každom ďaľšom cykle sa // zotrieďuje o 1 menší počet { if (a[j]>a[j+1]) { pom=a[j]; // výmena dvoch prvkov cez pom premennú a[j]=a[j+1]; a[j+1]=pom; } } } printf("\n Usporiadanie od najmenšieho po najväčší"); for (i=0;i<n;i++) printf ("\na[%d]= %d",i,a[i]); } if(x=='z') { for (i=0;i<n-1;i++) // n cyklov potrebných pre // "prebublanie" každého prvku { for (j=0;j<n-i-1;j++) // v každom ďaľšom cykle sa zotrieďuje o // 1 menší počet { if (a[j]<a[j+1]) { pom=a[j]; // výmena dvoch prvkov cez pom premennú a[j]=a[j+1]; a[j+1]=pom; } } } printf("\n Usporiadanie od najväčšieho po najmenší"); for (i=0;i<n;i++) printf ("\na[%d]= %d",i,a[i]); } getch(); }
Úlohy pre zopakovanie Načítajte z klávesnice 10 desatinných čísel. Príklady pre prácu s maticou Príklad č.31:
#include<stdio.h> #include<conio.h> void main(void) { int matica[100][100]; int s,r,i,j,min; clrscr(); printf("Zadaj počet riadkov a stĺpcov\n"); scanf("%d%d",&s,&r); // &s,&r - adresy premenných s a r for(i=0;i<s;i++) // cyklus pre riadky { for(j=0;j<r;j++) // cyklus pre stĺpce { printf("\nZadaj prvok M[%d,%d] = ",i,j); scanf("%d",&matica[i][j]); // &matica[i][j] - adresa ij prvku poľa } } printf(" \n Výpis prvkov matice vo forme indexov\n"); for(i=0;i<s;i++) // cyklus riadkov { for(j=0;j<r;j++) // cyklus stĺpcov printf("\nM[%d,%d] = %d ",i,j,matica[i][j]); } printf(" \n Výpis prvkov matice\n"); for(i=0;i<s;i++) // cyklus riadkov { printf("\n"); // každý riadok začne odriadkovaním for(j=0;j<r;j++) // cyklus stĺpcov printf(" \t%d ",matica[i][j]); } printf("\nVýpis 3. riadku matice\n"); for(j=0;j<r;j++) printf("\t%d ",matica[2][j]); // prvky poľa sa indexujú //od 0 t.j. tretí je 0,1,2 getch(); }
Deklarácia, Inicializácia, Priradenie Všetky premenné sa pred použitím musia
deklarovať. Deklarácia pozostáva zo špecifikácie typu a uvedenia zoznamu
premenných tohto typu. Príklad deklarácie jednoduchej premennej Príklad deklarácie poľa Príklad deklarácie štruktúry Posledným zápisom
sme deklarovali štrukturovanú
premennú dat_nar ( jej typ sme nazvali datum).
Táto premenná obsahuje štyri premenné, nazývané členy štruktúry. Prvé tri sú
typu int, posledná je 7 znakové pole pričom ôsmy znak je rezervovaný pre
ukončujúcu nulu \0. Deklaráciou sa určí, akého typu bude daná
premenná. Jednoduchú premennú je možné zároveň aj
inicializovať. int x=0;
Priradenie znamená napĺňanie obsahu
dátového objektu hodnotou napr.: pocet_ziakov=4;
Tu budem ešte doplňovať ...
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||