четвъртък, 10 февруари 2011 г.

Символни низове. Данни тип string. Структурирани типове. Множества и записи.


Технически университет – София


Катедра ПКТ, ФКСУ


Изготвил: Георги Минчев
Фак. № 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-

 

About this blog