Технически университет – София | |
Катедра ПКТ, ФКСУ | |
Изготвил: Георги Минчев Фак. № 000000000, поток: 0, гр: 0 | Приел: гл.ас. Д.Минковска |
Протокол № 10 дата: 13.11.2009 Символни низове. Данни тип string Структурирани типове. Множества и записи Символни низове.Същност - подредена последователност от краен брой символи, имаща определена дължина равна на броя на символите. За разлика от стандарта на Паскал, който не предвижда спесиален тип данни, третиращ символните низове, Турбо Паскал включва типа string, отразяващ спецификата на символните низове в качеството им на данни. Предназначение на типа string - типът string принадлежи към структурните типове и е предназначен за обработка на данни, представляващи символни низове. Дефиниране на данните тип string - символният тип string е тип дефиниран от програмиста. Декларацията на променливите от тип string може да се извърши по два начина: *описание в раздела на променливите - променливите се описват и декларират директно в раздела на променливите. Синтаксис: var <име на променлива> : string[Lm]; *описание в раздела на типовете - типът се описва в раздела на типовете, след което променливите се декларират с вече описаният тип в раздела на променливите. Синтаксис: type <име на тип> = string[Lm]; var <име на променлива> : <име на тип>; където: - string е служебна запазена дума; - <име на промнлива> е името на стринговата променлива; - <име на тип> е име на тип дефиниран от програмиста; - [Lm] - целочислена константа поставена в квадратни скоби. Стойността на [Lm] определя максималната дължина на дефинирания низ (при string е 225, следователно [Lm] e между 0 и 225) -1- | |
Стрингови константи. Стринговата константа представлява последователност от символи, заградена от ляво и от дясно с десен апостров. Стрингова константа може да се дефинира чрез именова константа в раздела за константите в декларативната част на програмата. Синтаксисът е: const <име на константа> = ’TURBO PASCAL’; където: - <име на константа> е името на именованата стрингова константа със стойност ’TURBO PASCAL’ Стринговата константа може да се просвоява на стрингова променлива, като се постави от дясната страна на оператор за присвояване и да се извежда на екрана с операторите write и writeln. Синтаксисът е: const <име на променлива> := ’TURBO PASCAL’; writeln(’TURBO PASCAL’); Структурирани типове. Множества и записи Същност на множеството - множеството е неподредена съвкупност от елементи, наречени членове на множеството, които принадлежът към един и същ сип, наречен базов тип на множеството. Дефиниция - дефиницията на типа множество може да се извърши в раздела на типовете чрез посочване на неговото име и неговия базов тип. Променливите се декларират в раздела на променливите с името на вече дефинирания тип. type <име на тип> = set of <име на базов тип>; var <име на променлива> : <име на тип>; Променливата може директно да се декларира с тип множество в раздела на променливите с посочване на базовия тип на типа множество. var <име на променлива> : set of <име на базов тип>; където: <име на тип> е името на типа множесто; set of - това са служебни думи означаващи, се декларира множеството от следващия ги базов тип. <име на базов тип> - име или описание на базовия тип на типа множество. Съставяне на константи от тип set - константата от тип set предтавлява определено множество от константите на базовия тип. Всички елементи на базовия тип, включени в константата от тип set, се записват разделени от запетайки в списък, който се представя в средни скоби. Например: [12,18,24] е обозначението на константа тип set, представляваща множество от тип tip4, съдържаща три константи от базовия тип 12..24. -2- |
Задача 1 Да се състави програма, която да извежда на екрана етикет на студента при въведени от клвиатурата име, презиме, фамилия, факултет, фак. номер, курс и номер на група. program zadacha1; uses crt; type strt = string[14]; var name1,name2,name3 : strt; grn,con : byte; facn : longint; facult : string[6]; begin clrscr; write('vavedete vasheto ime: '); readln(name1); write('vavedete vasheto prezime: '); readln(name2); write('vavedete vashata familiq: '); readln(name3); write('vavedete nomer na grupata: '); readln(grn); write('vavedete kursa: '); readln(con); write('vavedete fakulteta: '); readln(facult); write('vavedete fakulteten nomer: '); readln(facn); write('student: ',name1); write(name2:length(name2)+1,name3:length(name3)+1); writeln(', kurs: ',Con,', gupa: ',grn); writeln('fakultet: ',facult,', fak.Nomer ',facn); readln; end. -3- |
Задача 2 Да се състави програма, която да проверява колко пъти буквата “а” се съдържа в името, презимето, фамилията и цялото име. Програмата да извежда резултатите от проверката program zadacha2; uses crt; type strt = string[14]; var n1,n2,n3 : strt; br0,br1,br2,br3 : byte; function numberA(name:Strt) : byte; var i,br : byte; begin br := 0; for i := 1 to length(name) do if ((name[i] = 'a') or (name[i] = 'A')) then br := br + 1; numberA := br; end;{function numberA} procedure rezult(br:byte); begin if br<> 0 then begin write('se sreshta ',br,' put'); if br > 1 then writeln('i') else writeln; end else writeln('ne se sreshta'); end;{procedure rezult} begin clrscr; write('vavedete vasheto ime: '); readln(n1); write('vavedete vasheto prezime: '); readln(n2); write('vavedete vashata familiq: '); readln(n3); br1 := numbera(n1); br2 := numbera(n2); br3 := numbera(n3); br0 := br1 + br2 + br3; writeln; write('vav vasheto ime bukvata a '); rezult(br1); writeln; write('vav vasheto prezime bukvata a '); rezult(br2); writeln; write('vav vashata familiq bukvata a '); rezult(br3); writeln; write('vav cqloto vi ime bukvata a '); rezult(br0); readln; end. -4- |
Задача 3 Да се състави и изпълни програма която да въвежда данните на лица, вкючващи тяхната възраст, име, егн, а така също и номер на паспорта ако лицето е над 16 години. program zadacha3; uses crt; type dan = record name : string[24]; egn : longInt; god : 1..120; case N : integer of 1: (nomPas : LongInt;) end; var d : array[1..10] of dan; Nn,I : integer; begin clrscr; write('Kolko imena shte vavejdate = '); readln(nn); for i := 1 to nn do begin d[i].n := 0; writeln; write(i,'.Vavedete vazrastta: '); readln(d[i].god); if d[i].god > 16 then d[i].n := 1; with d[i] do begin write('vavedete imeto: '); readln(name); write('vavedete EGN: '); readln(egn); case n of 1 : begin write('vavedete nomer na pasporta: '); readln(Nompas); end; end; end; end; writeln; writeln('Vavedeni sa danni za slednite lica: '); writeln; for i := 1 to nn do begin with d[i] do begin writeln(i,'.',name); writeln('vazrast: ',god,' godini'); writeln('egn: ',egn); case n of 1 : begin write('nomer na pasporta: '); writeln(nompas); end; end; if d[i].god < 17 then writeln('nqma pasport'); end; writeln; end; readln; end. -5- |
