Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


P:Array Of Array Of Integer;




//

i,j:Integer;

Begin

//Задание статического массива

WriteLn('Array a:'); // Array a:

For i:=1 To 4 Do // 0 3 86 20 27 67 31 16

Begin // 37 42 8 47 7 84 5 29

For j:=1 To 8 Do // 91 36 77 32 69 84 71 30

Begin // 16 32 46 24 82 27 48 14

a[i,j]:=Random(100);

Write(a[i,j]:5);

End;

WriteLn;

End;

//----------------------------

//Задание статического массива

b:=a; //Присваивание возможно, т.к. описаны вместе

WriteLn('Array b:'); // Array b:

For i:=1 To 4 Do // | 87| 28| 77| 97| 49| 88| 82| 2|

Begin // | 14| 14| 50| 2| 59| 0| 77| 65|

Write('|'); // | 77| 70| 55| 20| 68| 59| 95| 64|

For j:=1 To 8 Do // | 99| 24| 67| 29| 8| 77| 49| 88|

Begin

b[i,j]:=Random(100);

Write(a[i,j]:4,'|');

End;

WriteLn;

End;

//----------------------------

//Задание двух матриц и вычисление суммы

WriteLn('Arrays m,n,k:');

For i:=1 To 2 Do

Begin

For j:=1 To 2 Do

Begin

m[i,j]:=Random(10); // Arrays m,n,k:

n[i,j]:=Random(10); // | 5 9| | 5 6| | 10 15|

k[i,j]:=m[i,j]+n[i,j]; // | 3 7| | 0 9| | 3 16|

End;

Write('|');

For j:=1 To 2 Do

Write(m[i,j]:2);

Write('| |');

For j:=1 To 2 Do

Write(n[i,j]:2);

Write('| |');

For j:=1 To 2 Do

Write(k[i,j]:3);

WriteLn('|');

End;

//----------------------------

//Задание динамического прямоугольного массива

SetLength(d,3,4);

WriteLn('Array d:'); // Array d:

For i:=0 To 2 Do // N O Y R

Begin // I A S Z

For j:=0 To 3 Do // U T F D

Begin //

d[i,j]:=Char(Ord('A')+Random(26));

Write(d[i,j]:4);

End;

WriteLn;

End;

//----------------------------

//Задание динамического треугольного массива (треугольник Паскаля)

SetLength(p,5); //Столько будет строк

For i:=0 To 4 Do //Формирование остальных строк

Begin

SetLength(p[i],i+2); //Столько элементов в i-й строке

p[i,0]:=1; p[i,i+1]:=1; //Задание крайних элементов

For j:=1 To i Do //Вычисление средних элементов

p[i,j]:=p[i-1,j-1]+p[i-1,j];

End;

WriteLn('Array p:'); // Array p:

For i:=0 To 4 Do // 1 1

Begin // 1 2 1

Write('':8-i*2); // 1 3 3 1

For j:=0 To i+1 Do // 1 4 6 4 1

Write(p[i,j]:4); // 1 5 10 10 5 1

WriteLn;

End;

//----------------------------

WriteLn('Len p = ',Length(p));// Len p = 5

WriteLn('Low p = ',Low(p)); // Low p = 0

WriteLn('Hig p = ',High(p)); // Hig p = 4

//----------------------------

ReadLn;

End.

 

{---------------------}

{ ОПИСАНИЕ МАССИВОВ }

{---------------------}

Var {Статические массивы} s:Array['A'..'C'] Of Boolean; //Логический массив c:Array[1..5] Of Char= //Символьный массив 'ABCDE'; //с начальными данными a:Array[5..10] Of Integer= //Числовой массив (3,5,4,2,6,7); //с начальными данными {Динамические массивы} d:Array Of Integer; //Числовой динамический массив

I:Integer;

Begin

SetLength(d,10); //Выделение памяти дин. массиву

{--------------------}

d[1]:=100; s['A']:=True; //Присваивание значения элементу

a[7]:=Random(100); //Случайное значение

{--------------------}

WriteLn(SizeOf(a)); //Размер статического массива

WriteLn(SizeOf(d[0])*Length(d));//Размера динамического массива

{--------------------}

FillChar(a,SizeOf(a),0); //Заполнение массива нулями

FillChar(d[0],SizeOf(d[0])*Length(d),0);

{--------------------}

WriteLn(Low(d),'-',High(d)); //Получение диапазона индексов

WriteLn(Length(d)); //и длины массива

{--------------------}

For i:=Low(a) To High(a) Do //Заполнение массива

a[i]:=10+Random(90); //случайными двузначными числами

// ЗАМЕЧАНИЕ // Элемент массива не может служить счётчиком цикла FOR: // For a[1]:=1 To 10 Do; - ОШИБКА!

ReadLn;

End.

 

{---------------------}

{ ОПИСАНИЕ МАССИВОВ }

{---------------------}

Var

a:Array[0..9] Of Integer; {Числовой массив}

IMax,IMin:Integer; {Наибольший и наименьший}

c:Array[1..11] Of Char= {Символьный массив}

'ABRACADABRA';

S:Char;

I:Integer;

Begin

//-------------------------------------------------

//ЗАДАЧА 1.

//Заполнить массив случайными двухзначными числами.

//Найти

//а) индексы наибольшего и наименьшего элементов

//б) диапазон значений элементов

//-------------------------------------------------

Randomize;

For i:=Low(a) To High(a) Do //Заполнение числового массива

Begin

a[i]:=10+Random(90); //случайными двузначными числами

Write(a[i],' '); //Вывод элементов в строчку

End;

WriteLn;

IMax:=Low(a); IMin:=Low(a); //Начальные значения индексов

For i:=Low(a)+1 To High(a) Do

Begin

If a[i]<a[IMin] Then IMin:=i; //Обновление наименьшего

If a[i]>a[IMax] Then IMax:=i; //Обновление наибольшего

End;

WriteLn('Min: a[',IMin,'] = ',a[IMin],' Max: a[',IMax,

'] = ',a[IMax]);

//-------------------------------------------------

//ЗАДАЧА 2.

//В заданном символьном массиве найти первую позицию

//указанной буквы

//-------------------------------------------------

For i:=Low(c) To High(c) Do //Вывод символьного массива

Write(c[i]);

WriteLn;

Write('Symbol: '); ReadLn(s);

For i:=Low(c) To High(c) Do //Перебор элементов массива

If c[i]=s Then Break;

If i<=High(c) Then WriteLn('Result: ',i)

Else WriteLn('No Result');

ReadLn;

End.

Билет №11, 12:

Строковый тип данных является сложным. Строки рассматриваются как одномерный символьный массив, со строкой можно выполнить те же действия что и с динамическим массивом, однако строки выделены в особый тип и для них разработана масса операторов, основная задача этих операторов выполнять преобразование и анализ строк.

//Строки

Var

S,T,F:String; //Описание строк

i,c:Integer;

Ch:Char;

Begin

//Образование строк

T:=''; //Пустая строка

S:='asd'; //Присваивание произвольного текста

S:=StringOfChar('@', 20); //Строка с повторяющимся символом

S:=S+T; //Соединение строк (конкатенация)

 

//Числовые функции строковых аргументов

i:=Length('qwerty'); //Длина i строки 'qwerty'

i:=StrToInt('123'); //Преобразование строки '123' в целое число i

i:=Pos('mid','piramida'); //Поиск подстроки 'mid' в строке 'piramida'

//i - позиция вхождения (иначе i = 0)

//Строковые функции строковых аргументов

S:=AnsiUpperCase('Abc'); //Преобразование малых букв 'Abc' в большие

S:=AnsiLowerCase('Abc'); //Преобразование больших букв 'Abc' в малые

S:=Trim(' qwerty '); //Удаление нач. и кон. пробелов около 'qwerty'

S:=TrimLeft(' qwerty'); //Удаление только нач. пробелов ' qwerty'

S:=TrimRight('qwerty '); //Удаление только кон. пробелов 'qwerty '

S:=Copy('qwerty', 2, 3); //Выделение из 'qwerty' подстроки 'wer'

 

//Строковые функции числовых аргументов

S:=IntToStr(123); //Преобразование целого числа 123 в строку '123'

S:=FloatToStr(123.34); //Преобразование вещественного числа в строку

 

//Строковые процедуры

Delete(S,2,3); //Удаление из S со второго символа трёх штук

Insert('qwerty',S,4); //Вставка 'qwerty' в S от четвёртого символа

Val('123',i,c); //Преобразование строки '123' в число i,

//c - позиция неправильного символа (иначе c = 0)

 

//Пример 1. Замена всех малых латинских букв пробелами

//----------------------------------------------------

S:='123asd123';

For i:=1 To Length(S) Do

If ('a'<=S[i]) And (S[i]<='z') Then S[i]:=' ';

WriteLn('Result ',S);

 

//Пример 2. Переворот строки

//----------------------------------------------------

Write('String: '); ReadLn(S);

 

T:='';

For i:=1 To Length(S) Do

T:=S[i] + T;

WriteLn('Result ',T);

 

//Пример 3. Замена указанного символа на заданный текст

//----------------------------------------------------

Write('String: '); ReadLn(S);

Write('Symbol: '); ReadLn(Ch);

Write('Text: '); ReadLn(F);

 

T:='';

For i:=1 To Length(S) Do

If S[i]=Ch Then T:=T+F Else T:=T+S[i];

WriteLn('Result ',T);

 

//Пример 4. Разбиение строки на слова

//----------------------------------------------------

Write('String: '); ReadLn(S);

c:=0;

For i:=1 To Length(S) Do

If S[i]=' ' Then

Begin

If i>c+1 Then

WriteLn(Copy(S,c+1,i-c-1));

c:=i;

End;

If i>c+1 Then WriteLn(Copy(S,c+1,i-c-1));

 

//Пример 5. Сортировка массива строк

//----------------------------------------------------

SetLength(M,5);

M[0]:='Cat'; M[1]:='Dog';

M[2]:='Horse'; M[3]:='Bird';

M[4]:='Mouse';

 

WriteLn('Strings: ');

For i:=0 To High(M) Do Write(M[i],' ');

WriteLn;

 

For i:=Low(M)+1 To High(M) Do

Begin

S:=M[i]; c:=i;

While (c>0) And (M[c-1]>S) Do

Begin

M[c]:=M[c-1];

c:=c-1;

End;

M[c]:=S;

End;

 

WriteLn('Result: ');

For i:=0 To High(M) Do Write(M[i],' ');

WriteLn;//----------------------------------------------------

ReadLn;

End.

 

Билет №13, 14:

Существует 2 вида подпрограмм: Procedure (процедура) и Function(функция)

Что такое подпрограмма

ü это оператор, разработанный программистом

ü имеет имя

ü может иметь входные и выходные параметры

ü размещается в разделе описаний в виде полноценной программы

Как пишется п/п

  1. П/п имеет заголовок, который начинается словом
    Procedure или Function
    (процедура) (функция)
  2. Рядом указывается имя п/п, которое программист выбирает самостоятельно
  3. Если необходимо добавляются параметры (в круглых скобках)
  4. Для имени функции задаётся тип (результата)
  5. В конце заголовка ставится знак «;»
  6. Ниже заголовка размещается текст п/п по правилам написания программы
  7. После заключительного слова End ставится знак «;» (а не «.»)

 

Как вызывается п/п

Упоминанием своего имени в тексте программы

 

Пример процедуры без параметров

Program Examp1;

{$APPTYPE CONSOLE}

Uses

SysUtils;

//--------------------------------------

//Пример процедуры, выполняющей задержку

//--------------------------------------

Procedure MyPause; //Заголовок с именем MyPause

Begin //Начало раздела операторов подпрограммы

Write('Press ENTER');

ReadLn;

End; //Конец подпрограммы

Begin //Раздел операторов основной программы

MyPause; //Вызов подпрограммы

End.

 

 

Параметры п/п

 

Параметры используются для обмена данными между основной программой и п/п. Различают функциональные параметры и аргументы.

С помощью параметров – аргументов передаются данные от основной программы к п/п. Аргументы описываются рядом с именем п/п в круглых скобках как обычные переменные, но без слова Var.

При вызове п/п вместо аргументов можно подставлять любые выражения соответствующего типа.

 

 

Program Examp2;

{$APPTYPE CONSOLE}

Uses

SysUtils;

//------------------------------------

//Процедура, выводящая разряжённый текст

//------------------------------------

Procedure WidthTxt(s:String); //Заголовок с именем WidthTxt и аргументом s

Var //Раздел описаний подпрограммы

I:Integer;

Begin //Раздел операторов подпрограммы

For i:=1 To Length(s) Do

Write(s[i],' ');

End; //Конец подпрограммы

Begin //Раздел операторов основной программы

WidthTxt('Dog'+'Cat'); //Вызов подпрограммы

ReadLn;

End.

Аргументы и переменные раздела описаний п/п называют локальными переменными. Они формируются в начале выполнения п/п и удаляются из памяти по окончании работы п/п.

С помощью функциональных параметров передаются данные от п/п к основной программе. Функциональные параметры описываются так же, как и аргументы, но с приставкой слова Var.

При вызове п/п вместо функционального параметра необходимо подставить переменную соответствующего типа (а не выражение).

Program Examp3;

{$APPTYPE CONSOLE}

Uses

SysUtils;

//------------------------------------

//Процедура, удаляющая лишние пробелы

//ВХОД: s - строка текста

//ВЫХОД: t - строка без лишних пробелов

//------------------------------------

Procedure KillSpace(s:String; Var t:String);

Var //Раздел описаний подпрограммы

I:Integer;

Begin //Раздел операторов подпрограммы

t:=s[1];

For i:=2 To Length(s) Do

If (s[i]<>' ') Or

(s[i-1]<>' ') Then

t:=t+s[i];

t:=Trim(t);

End; //Конец подпрограммы

Var

x:String; //Раздел описаний основной программы

Begin //Раздел операторов основной программы

KillSpace(' Dog Cat ',x); //Вызов подпрограммы

WriteLn(x); //Вывод результата

ReadLn;

End.

Функциональные параметры разрешается употреблять и в качестве аргументов для передачи данных в п/п.

 

При написании подпрограмм можно пользоваться уже имеющимися подпрограммами, в том числе и функциями API (Application Programming Interface), которые находятся в библиотеках DLL.

 

Program Examp4;

{$APPTYPE CONSOLE}

Uses

Windows, SysUtils;

//-----------------------------------------

// Установка курсора по координатам X, Y

//-----------------------------------------

procedure GotoXY(X, Y: Word);

Var

Coord: TCoord; //Для установки позиции экрана (Windows)

Begin

Coord.X:= X;

Coord.Y:= Y;

SetConsoleCursorPosition(

GetStdHandle(STD_OUTPUT_HANDLE), Coord); //(Функция API)

End;

Begin //Раздел операторов основной программы

GotoXY(10,20);

WriteLn('1234'); //Вывод результата

ReadLn;

End.

 

 

Билет №20:

 





Поделиться с друзьями:


Дата добавления: 2016-10-06; Мы поможем в написании ваших работ!; просмотров: 384 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

2202 - | 2158 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.