Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Массивтер.

Программалау тілінде типтер қарапайым және күрделі болып бөлінеді. Қарапайым типек – стандартты, саналатын, шектейтін типтер жатады. Күрделі типке – массивтер, жиындар, файлдар жатады. Программалау тілінде жеке айнымалыларды ғана өңдеп қоймай, айнымалылардың жиынын да өңдеуге болады. Массив дегеніміз – бір типтегі берілгендер жиыны. Массив бір ғана атпен белгіленеді. Массивтің әр элементі массивтің атымен белгіленеді де, оның индексі қойылады.

M/лы: a[1]=1.6, a[2]=14, т.с.с.

Егер программада массив қолданылатын болса, онда var – айнымалылар бөлігінде немесе– типтер бөлімінде сипатталуы қажет. Айнымалылар бөлігінде сипатталуы:

Var <массив атау>:array[1..n] of t;

Мұндағы array (массив), of (ішінен), t – массив элементтерінің типі (real, integer);

Тип бөлімінде сипатталуы

type <тип атауы>=array[1..n] of t;

Var<массив атауы>:<тип атауы>;

Математикада көп өлшемді массивтер, яғни массивтердің массиві жиі қолданылады. әсіресе екі өлшемді массивтер, басқаша айтұанда матрицалар кең көлемде қолданылады. Екі өлшемді массивті айнымалы бөлігінде сипаттау:

Var <массив атау>:array[1..n, 1..m] of t;

Тип бөлімінде сипатталуы:

type <тип атауы>=array[1..n, 1..m] of t;

43-44. Массивтермен жұмыс.Элементтерін енгізу және шығару.

Массив деп нақтыланған бір типтегі элементтер санынан тұратын құрылымдық мәліметтер типін қарастыруға болады. Бір өлшемді массивтің баламасы вектор, ал екі өлшемді болса – мат-рица болып табылады. Енді төмендегі Турбо Паскаль тілінде жалпы массивтермен жұмыс істеуді қарастырайық.

Pascal программалау тілінде массивті сипаттау үшін array of қызметші сөзі қолданылады. Ал бұл процедураның өзі екі әдіспен орындалады.

· мәліметтердің жаңа типін енгізу, содан соң жаңа типтің ай-нымалыларын сипаттау. Бұл жағдайда typeкомандасының жа-зылу ережесі төмендегідей болады:

type

<тип_аты>=array [<индекс_типі>] of <компоненттер_типі>;

Индекс_типі ретінде берілген типтерді пайдалануға бола-ды. Компоненттер_типі – бұл алдын-ала анықталған кез-кел-ген мәліметтер типі

Ескертеу. Константалар массивті сипаттар алдында анықта-луы қажет, себебі массив айнымалылар тізімінен тұра алмай-ды.

Массивтің өлшемі 64 Кб-тан артық болмайды. Бұл шектеу басқа да құрылымды мәліметтерге қатысты.

Екі өлшемді массивті бір өлшемді массивтің базалық типі (компоненттер типі) ретінде қолдануымызға болады:

type

massiv=array [1..20] of real;

matrica=array [1..20]of massiv;

var

a: matrica;

Массив элементтерін енгізу-шығару. Паскальда барлық массивтерді енгізіп шығаратын арнайы құрал жоқ, сондықтан берілген амалды әр элемент бойынша ұйымдастыру қажет. Массивті енгізу кезінде 1-ші, 2-ші, 3-ші және т.с.с массив элементтерін тізбектеп енгізу қажет, баспаға шығару да дәл солай орындалады. Бұдан шығатыны, массивпен жүргізілетін барлық амалдар әрбір элемент үшін жеке орында-латындықтан, енгізіп-шығару үшін цикл

 

 

ұйымдастыру қажет. Массив элементтерін өңдеу үшін for … do циклын пайдалану ыңғайлы.

Массив элементтерін енгізу алгоритмінің блок-схемасы төмендегі суретте көрсетілген (3.1-3.2 суреттер).

{Х массивінің элементтерін while циклының көмегімен енгізу}

var

x:array [1..100]of real;

i,n:integer;

begin

writeln (‘массив өлшемін енгіз’);

readln (N);

45.Массивтерді өңдеу тәсілдері.

Массивті өңдеудің негізгі алгоритмдерін қарастырайық.

Массив элементтерінің қосындысын табу алгоритмі. N элементтен тұратын Х массиві берілген. Массив элемент-терінің қосындысын табу керек.

Алгоритмге сәйкес программа үзіндісі төмендегідей болады:

 

s: =0;

for i:=1 to n do

s:=s+x[i];

Массив элементтерінің көбейтіндісін табу алгоритмі. n элементтен тұратын Х массиві берілген. Массив элемент-терінің көбейтіндісін табу керек. Алгоритм блок-схемасы 3.3-3.4 суреттерде көрсетілген.

Алгоритмге сәйкес программаның үзіндісі төмендегідей болады:

P:=1;

for i:=1 to n do

P:=p*x[i];

 

 

Массивтегі ең үлкен элементті табу және оның нөмірін анықтау алгоритмі. n элементтен тұратын Х массиві берілген. Массивте сақталатын массивтің ең үлкен элементін және оның

нөмерін табу керек. Алгоритмнің блок-схемасы 3.5-суретте көрсетілген.

 

 

Массивтен элементті алып тастау. n элементтерінен тұратын Х массивінен реттік нөмері бо-йынша m-ші элементті алып тастау керек. Ол үшін m элемен-тінің орнына (m+1)-ді, (m+1)-дің орнына (m+2) т.с.с. (n-1) дің орнына n-ді жазу жеткілікті, ары қарай бұл массивпен жұмыс істегенде (n-1) элементті қолданамыз. m нөмерлі, n-өлшемді элементті Х массивінен алып тастау алгоритмі

Массивтен элементті алып тастау процесі.

 

 

3.9-сурет. Mассивтен элементті алып тастау алгоритмі

Жиымдарды өңдеу есептерінің түрлері:

1) Есептердің 1-түріне жиым элементтерінің

барлы-ғын немесе көрсетілгендерін бірдей бір

тəсілмен өңдеу есептері жатады.

2) Есептердің 2-түріне (класына) жиым

элементте-рінің орналасу реттілігін өзгерту

тəсілдері жатады.

3) Есептердің 3-класына бірнеше жиымдарды

қатар өңдеу немесе бір жиымның ішкі

элементтерін бірнеше топқа бөліп жеке-жеке

өңдеу тəсілдері жатады. Жиымдар бір тəсілмен –

синхронды өңделеді немесе əр түрлі тəсілмен –

асинхронды түрде өңделеді.

4) Жиымның берілген санға тең элементін табу,

яғни іздеу есептері жатады.

47-48.Екі өлшемді массивтер. Блок-схемасын сызып, түсіндіріңіз.

Екі өлшемді массив матрицаны тік жақша ішінде олардың екі өлшемінің де енін енгізу керек. мыс int a[3][2];Алғашқы сан жолдар санын,ал екіншісі бағандар санын көрсетеді.Оларға бастапқы мәнді былай береміз. a[3][2]={{1,7},{4,5},{6,8}}. Екі өлшемді массивті инициялау қабаттасқан циклдер арқылы орындалады

Матрица – бұл екі өлшемді массив, әрбір элемент екі индекстен тұрады: i – жол нөмері, j – баған нөмері. Сондықтан матрица элементтерімен жұмыс жасағанда екі циклды қолдану қажет. Егер параметрдің бірінші циклының мәні матрицаның жолдарының нөмері болса, онда екінші параметрдің мәні баған болады (немесе керісінше). Матрицаны өңдегеннен кейін, жол-дардың элементтері рет-ретімен қарастырылады, одан кейін екінші және т.с.с ең соңына дейін.

Матрицаны массив сияқты, әр элементін енгізу (шығару) қа-жет. Матрица элементтерін енгізудің блок схемасы 4.1 – суретте көрсетілген. Шығаруды баған немесе жол бойынша шығару мүмкін, бірақ жол бойынша орналасқан тиімді, мысалы:

6 -9 7 13

5 8 3 8

3 7 88 33

55 77 88 37

Матрица элементтерін жол бойынша шығарудың алгоритмі 4.2 – суретте көрсетілген:

var

a:array[1..20,1..20] of real;

i,j,n,m:integer;

begin

readln(n,m);

{матрица элементін енгізу.}

for i:=1 to n do

for j:=1 to m do

begin

write(‘a(‘,i,’,’,j,’)=’);

readln(a[i,j])

end;

writeln(‘а матрицасы’); {матрица элементін шығару.}

 

for i:=1 to n do

begin

for j:=1 to m do

write(a[i,j]:8:3, ‘ ‘); {жол баспаға шығады.}

 

writeln {келесі жолға көшу.}

end;

end.

       
 
Матрица элементтерін енгізу.
 
Матрица элементтерін жол бойынша шығару блок-схемасы.

 


58-50-52. Файл. Жалпы түсінігі. Файлға қолданылатын командалар.

Файл-сыртқы есте сақтау құрылғыларында орналастырылған ж\е мәлімет өңдеу, тасымалдау кездерінде біртұтас күйде қарастырылатын мәліметтер жиыны. Файлдармен жұмыс істеу үшін оларды алдымен ашу екрек,яғни файл туралы мәліметті, атын, адресін программаға белгілі ету қажет. Файлдарда қолданылатын командалар: 1)файл ашу үшін fopen функциясы қажет: fp=fopen(name,mode). Мұндағы fp-файлға сілтейтін нұсқауыш;name-сыртқы мәліметтер жазылған немесе жазылатын файл аты,иденти-фикатор;mode-файлдыңқандай режимде ашылатынын төмендегідей түрде көрсетеді: “r”-бұрыннан бар файлды оқу үшін ашу; “w”-бос файлды мәлімет жазу үшін ашу; “a”-файл соңына мәлімет қосып жазу үшін ашу; “r+”-файлды одан мәлімет оқу ж\е жазу үшін ашу; “w+”-бос файлдан мәліме оқу ж\е оған мәлімет жазу үшінфайл ашу (бұрын файл блса, ол өшіріледі); “a+” – файлды оқу ж\е файлдың соңына мәлімет қосып жазу үшін ашу. 2)fclose(fp) функциясы ащық файлды жабады; 3)feof(fp) функциясы файлдың соңын анықтайды; 4)fgets(fp) функциясы файлдан бір символ оқиды; 5)fputc(fp) функциясы файлға бір символ жазады; 6)ferror(fp) функциясы файлға оқу\жазу кезінде қате шыққанын ексереді; Бұлардағы fp-файлға сілтейтін нұсқауыш:

#include<stdio.h>//a:file1 файлын оқып,

#include<conio.h>ондағы сөздері экранға шығару,

Main() { int I,n; сhar fname[]=”a:\\file.txt”,st[80];

File*fp; fp=fopen(fname,”r”); Clrscr();

Printf(“\n%s файлыныңмәліметі\n”,fname);

Puts(“……………………..”);

//мәтін (1) оқу үшін (r) файлды ашу

If((fp=fopen(fname,”r”))==NULL)

{ printf(“\n оқу үшін файл ашылмайды”);}

Getch(); Return(0); }

 

 

61. Сілтеуіш және оның қолдануы.

Сілтеуіш мәліметтердің адресін сақтайтын айнымалы болып табылады. Жалпы алғанда сілтеуіш адрестердің сақтайтын символдық кескінделуі болып табылады. Қарастырылған мысалда &sum атты айнымалыға сілтейтін сілтеуіш болып табылады. Нақты адрес ретінде белгілі сан тұрады, ал &sum нұсқауыш типі const болыр табылады. Си тілінде сілтеуіш типі айнымалылар да бар. Сілтеуіш типі айнымлылар мәні болып белгілі бір шаманың адресі саналады. М:сілтеуіш типі айнымалы prt идентификаторы арқылы белгіленген болса, онда төмендегі оператор sum айнымалысынңың адресін prt атты сілтеуіш типті айнымалыға меншіктейді. Prt атты сілтеуіш типті айнымалы баска да обьектіге сілтеуі мүмкін. М: int* prt; prt=&sum;prt=&max; сілтеуіштерін карастырайық. М: int*a жиым атты сілтеуішті карастыратын жағдайда жиымның 0ші элементін анықтайды, яғни а жиымы сипатталған болса, программа мәтіндегі а идентификаторы 0ші элементті көрсетеді деп саналады. A=&a[0]; бұл теңдеудің екі бөлігі де &a[0]де жиымының 0ші элементінің адресін анықтайды. Осы 2 белгілеу де сілтеуіш типті const болып табылады. М:

#include<conio.h>

#include<stdio.h>

Int f1(int a[0],int t)

{int i, sum=0;

For (i=0; i<t;i++) Sum+=a[i];

Return(sum);} Main()

{int s,b[10]={1,2,3,4,5,6,7,8,56,12,11,};

Clrscr();

S=f1(b,10);

Printf(“s=%d”,s);

Getch();}

 

51. Файлдардан мәліметті енгізу-шығару

Символдарды енгізу-шығару операцияларында файлдан бір ғана символ оқылады немесе оған бір символ жазылады.

Мысалы: fgets(FILE *fp);ашылған файлдан символ оқиды.

Сөз тіркестері жолдарын енгізу-шығару операцияларында бір мәлімет алмасуы кезінде файлдан сөз тіркесі жолдары оқылады немесе оған сөз тіркесі жазылады.

Мысалы: gets (char * S); файлдан мәлімет байттарын \n символы кездескенше біртіндеп оқиды да,оларды S тіркесіне орналастырып,\n символын 0 белгісіне айналдырады.

Блок бойынша енгізу-шығару операцияларында мәліметтер алмасу олардың бір блогын толық қамтиды.

Мысалы:fread (void *ptv,int size,int n,FILE *fp);мұнда fp файлынан әрқайсысы size байттан тұратын мәліметтің n блогы ptvнұсқауышы көрсетіп тұрған жады аймағына оқылады.

fprintf – файлға информация жазу үшін

fscanf – файлдан информация оқу үшін қолданылады.

 

 

32. If шартты операторы

Тармақталу операторлары – бұлар шартты оператор жəне ауыстырғыш (переключатель) оператор.

1. Шартты оператордың толық жəне қысқа түрі бар.

if (шарт-өрнек) оператор; //қысқа түрі

Шарт-өрнек ретінде арифметикалық өрнек, қатынас немесе логикалық өрнек жазылады. Егер шартты өрнек мəні нөлге тең (яғни ақиқат болса) болмаса, онда оператор атқарылады. Мысалы:

if (x<y && x<z) min=x;

if (шарт-өрнек) 1-оператор; //толық түрі




Дата добавления: 2015-01-05; просмотров: 418 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.017 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав