Ветвление является программной структурой (конструкцией), образованной словами

Program Logic;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Var

i,j:Integer;

K:Byte;

b,c,d:Boolean;

Begin

//Логические константы

b:=True; c:=False;

b:=Boolean(1); c:=Boolean(0);

Byte(b):=1; Byte(b):=0;

2) Текст программы состоит из разделов: верхний – раздел описаний, нижний – раздел операторов. Раздел описаний разделяется на секции, к первой секции подключаются библиотечные модули, это может быть сборка некоторых средств программирования. Секция начинается словом Uses а ниже или рядом пишутся имена подключенных модулей, другие секции раздела описаний содержат описание данных, которыми воспользуется программист. Раздел операторов содержит алгоритм работы программы, записанный в виде предложений разделённых ; которые могут быть расположены как в одну строку так и в несколько абзацев.

3) Введение переменных производится в разделе описаний при помощи слова Var. Это называется описанием переменных в секции Var, в момент описания указываются имена элементов и через : их тип. Существует несколько способов назначить переменным определённые значения, один из них оформляется в разделе операторов и называется присваиванием: *переменная*:=*значение*. Также начальные данные можно приписывать в момент описания. В разделе Var можно назначить переменной начальное значение, для этого после типа пишут = и значение.

Билет №2:

1) Некоторые числовые функции

ОПЕРАЦИИ С КОМПОНЕНТАМИ ЧИСЛА

Целая часть числа Û y:=Int(x);

Дробная часть числа Û y:=Frac(x);

Округление Û i:=Round(x);

Отсечение Û i:=Trunc(x);

Ближайшее слева Û i:=Floor(x); (Библ. Math)

Ближайшее справа Û i:=Ceil(x); (Библ. Math)

|x| Û y:=Abs(x);

СТЕПЕННЫЕ, ПОКАЗАТЕЛЬНЫЕ И ЛОГАРИФМИЧЕСКАЯ ФУНКИИ

x2 Û y:=Sqr(x);

Öx Û y:=Sqrt(x);

ex Û y:=Exp(x);

ln x Û y:=Ln(x);

lg x Û y:=Log10 (x); (Библ. Math)

logi x Û y:= LogN (i,x); (Библ. Math)

xi Û y:=Power(x, i); (Библ. Math)

Пример: x i Û y:=Exp( i * Ln(x) );

ТРИГОНОМЕТРИЧЕСКИЕ ФУНКЦИИ

sin x Û y:=Sin(x);

cos x Û y:=Cos(x);

arctg x Û y:=ArcTan(x);

p Û y:=Pi;

Пример: Tg(x) Û y:=Sin(x) / Cos(x);

Пример: Ctg(x) Û y:=Cos(x) / Sin(x);

Пример: ArcSin(x), |x|<1 Û y:=ArcTan(x / Sqrt(1-x*x) );

Пример: ArcCos(x), |x|<1 Û y:=Pi/2 - ArcTan(x/ Sqrt( 1-x*x) );

ДЕЙСТВИЯ С ЦЕЛЫМИ ЧИСЛАМИ

Остаток от деления i на j Û i:=j Mod k;

Частное от деления i на j Û i:=j Div k;

Пример: правая цифра числа Û k:=i Mod 10;

Пример: левая цифра числа Û k:=i Div Round(

Exp(

Trunc( Ln(i) / Ln(10) ) * Ln(10) ) );

2) Нигде нет, так что импровизирую: при составлении числовых выражений необходимо учитывать что последовательность выполнения операций в записи должна соответствовать порядку их выполнения, для этого нужно правильно расставлять скобки например выражение вида Ветвление является программной структурой (конструкцией), образованной словами - student2.ru должна выглядеть следующим образом: sqrt(Abs(x-(2*y)))

3) (Аналогично) При преобразовании типов данных используются операторы вида IntToStr(x) (целое число в строку) или наоборот, аналогичным образом. При этом стоит учитывать что вещественные типы данных нельзя преобразовывать в целые не отбросив их дробную часть при помощи оператора Trunc(x)

4) ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ MATH

Тригонометрические подпрограммы
function ArcCos(X: Extended): Extended; Арккосинус
function ArcSin(X: Extended): Extended; Арксинус
function ArcTan2(Y, X: Extended): Ex tended; Вычисляет арктангенс Y/X и возвращает угол в правильном квадранте (функция АгсТап модуля System не учитывает квадрант)
function Cotan(X: Extended): Extended; Котангенс
function Hypot (X, Y: Extended): Extended; Корень квадратный из (X** 2 + Y** 2)-гипотенуза прямоугольного треугольника по двум катетам
procedure SinCos (Theta: Extended; va: '"Sin, Cos: Extended); Возвращает одновременно синус и косинус угла Theta (почти в 2 раза быстрее, чем раздельное получение синуса и косинуса)
function Tan(X: Extended): Extended; Тангенс
Функции преобразования углов
function CycleToRad(Cycles: Extended) : Extended; Radians := Cycles * 2PI
function DegToRad(Degrees: Extended) Extended; Radians := Degrees * PI / 18
function GradToRad(Grads: Extended): Extended; Radians := Grads * PI / 200
function RadToDeg(Radians: Extended) Extended; Degrees := Radians * 180 / PI
function RadToGrad(Radians: Extended) : Extended; Grads := Radians * 200 / PI
function RadToCycle(Radians: Extended) : Extended; Cycles := Radians / 2PI
Гиперболические функции

5)

function ArcCosh(X: Extended): Extended; Гиперболический арккосинус
function ArcSinh(X: Extended): Extended; Гиперболический арксинус
function ArcTanh(X: Extended): Extended; Гиперболический арктангенс
function Cosh(X: Extended): Extended; Гиперболический косинус
function Sinh(X: Extended): Extended; Гиперболический синус
function Tanh(X: Extended): Extended; Гиперболический тангенс
Логарифмические функции
Function LnXP1 (X: Extended) : Exteaded; Логарифм натуральный от (Х+1). Используется, когда Х близок к нулю
Function Log10(X: Extended): Extended; Десятичный логарифм
Function Log2(X: Extended): Extended; Двоичный логарифм
function LogN(Base, X: Extended): Extended; Логарифм от X при основании Base
Экспоненциальные функции
function IntPower(Base: Extended; Expopient: Integer) : Extended; Возведение Base в целочисленную степень Exponent
function Power(Base, Exponent: Extended) : Extended; Возведение Base в вещественную степень Exponent
Подпрограммы разного назначения
function Ceil(X: Extended): Integer; Ближайшее меньшее целое
function Floor (X: Extended): Integer; Ближайшее большее целое
procedure Frexp(X: Extended; var Mantissa: Extended; var Exponent: Integer); Возвращает мантиссу и степень вещественного числа
function Ldexp(X: Extended; P: Integer) : Extended; Возвращает Х*Р*P
Статические программы
function Мах(А,В: Int64): Int64; overload;  
function Мах (А, В: Integer): Integer; overloads; Возвращает максимальное из двух чисел
function Poly(X: Extended; const Coefficients: array of Double): Extended; Значение полинома A*X"+B*X" '+.. .+Z. Коэффициенты задаются в порядке возрастания степени
function Мах(А,В: Single): Single/overload;  
function Max(А,В: Double): Double/overload;  
function Max(А,В: Extended): Extended; overload;  
function MaxIntValue(const Data: array of Integer): Integer; Возвращает максимальное из набора целых чисел
function MaxValue(const Data: array of Double): Double; Возвращает максимальное из набора вещественных чисел
function Mean(const Data: array of Double): Extended; Вычисляет арифметическое среднее для набора вещественных чисел
procedure MeanAndStdDev(const Data: array of Double; var Mean, StdDev: Extended) ; Вычисляет арифметическое среднее и стандартное отклонение для набора вещественных чисел
function Min(А,В: Integer): Integer/overload/function Min(А,В: Int64): Int64; overload; Возвращает минимальное из двух чисел
function Min(A,B: Single): Single/overload; function Min(A,B: Double): Double; overload/function Min(A,B: Extended): Extended; overload/  
function MinIntValue(const Data: array of Integer): Integer; Возвращает минимальное из набора целых чисел
function MinValue(const Data: array of Double): Double; Возвращает минимальное из набора вещественных чисел
procedure MomentSkewKurtosis (const Data: array of Double; var Ml, M2, МЗ, М4, Skew, Kurtosis: Extended); Вычисляет статистические моменты порядков с первого по четвертый, а также асимметрию Skew и эксцесс Kurtosis для набора чисел
function Norm(const Data: array of Double): Extended; Возвращает норму (квадратный корень из суммы квадратов) вещественных чисел
function PopnStdDev(const Data: array of Double): Extended; Выборочное стандартное отклонение. Отличается от обычного стандартного отклонения тем, что использует выборочное значение дисперсии (см.ниже PopnVariance)
function PopnVariance(const Data: array of Double): Extended; Выборочная дисперсия. Использует “смещенную” формулу TotalVariance/N (см. ниже TotalVariance)
function RandG(Mean, StdDev: Extended) : Extended; Генерирует нормально псевдораспределенную последовательность чисел с заданным средним значением Mean и стандартным отклонением StdDev
function StdDev(const Data: array of Double): Extended; Вычисляет среднеквадратическое отклонение для набора чисел
function Sum(const Data: array"orDouble): Extended register; Вычисляет сумму чисел
procedure SumsAndSquares(const Data: array of Double; Одновременное вычисление суммы и суммы квадратов для набора чисел
function Sumint(const Data: array of Integer): Integer register; Сумма набора целых чисел
function SumOfSquares(const Data: array of Double): Extended; Сумма квадратов чисел
function TotalVariance(const Data: array of Double): Extended; Сумма квадратов расстояний всех величин от их среднего арифметического
function Variance(const Data: array of Double): Extended; Выборочная дисперсия для набора чисел. Использует ^несмещенную” формулу TotalVariance/(N-1)
Финансовые функции
type TPaymentTime = (ptEndOfPeriod, ptStartOfPeriod) ; Перечисляемый тип, используемый в финансовых функциях
function DoubleDecliningBalance (Cost, Salvage: Extended; Life, Period: Integer): Extended; Вычисление амортизации методом двойного баланса
function FutureValue(Rate: Extended; NPeriods: Integer; Payment, Pre-sentValue: Extended; PaymentTime: TPaymentTime): Extended; Будущее значение вложения
- function InterestPayment(Rate: Extended; Period, NPeriods: Integer; PresentValue, FutureValue: Extended; PaymentTime: TPaymentTime): Extended; Вычисление процентов по ссуде
function InterestRate(NPeriods: Integer; Payment, PresentValue, Future-Value: Extended; PaymentTime: TPaymentTime) : Extended; Норма прибыли, необходимая для получения заданной суммы
function InternalRateOfReturn (Guess: Extended} const CashFlows: array of Double): Extended; Вычисление внутренней скорости оборота вложения для ряда последовательных выплат
function NetPresentValue(Rate: Extended; const CashFlows: array of Double; PaymentTime: TPaymentTime): Extended; Вычисление чистой текущей стоимости вложения для ряда последовательных выплат с учетом процентной ставки
function NumberOfPeriods(Rate, Payment, PresentValue, FutureValue: Extended; PaymentTime: TPaymentTime): Extended/ Количество периодов, за которые вложение достигнет заданной величины
function Payment(Rate: Extended; NPeriods: Integer; PresentValue, Future-Value: Extended; PaymentTime: TPaymentTime) : Extended/ Размер периодической выплаты для погашения ссуды при заданном числе периодов, процентной ставке, а также текущем и будущем значениях ссуды
function PeriodPayment(Rate: Extended; Period, NPeriods: Integer; PresentValue, FutureValu'e: Extended; PaymentTime: TPaymentTime): Extended; Платежи по процентам за заданный период
function PresentValue(Rate: Extended; NPeriods: Integer; Payment, Future-Value: Extended; PaymentTime: TPaymentTime) : Extended; Текущее значение вложения
function SLNDepreciation (Cost, Salvage: Extended; Life: Integer): Extended; Вычисление амортизации методом постоянной нормы
function SYDDepreciation (Cost, Salvage: Extended; Life, Period: Integer) : Extended; Вычисление амортизации методом весовых коэффициентов

6) Перечисленные выше подпрограммы станут доступны программе только после ссылки на модуль Math в предложении Uses.

Билет №3:

Логические типы данных

Program Logic;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Var

i,j:Integer;

K:Byte;

b,c,d:Boolean;

Begin

Логические константы

b:=True; c:=False;

b:=Boolean(1); c:=Boolean(0);

Byte(b):=1; Byte(b):=0;

//Преобразование типов

i:=Byte(b); Boolean(k):=b;

Сравнения

b:=1<2; c:=1>2; d:=1=1;

b:=1<=2; c:=1>=2; d:=1<>1;

Логические операции

d:=b And c; (истинно только в случае когда оба операнда истинны)

d:=b Or c; (ложно только в случае когда оба операнда ложны)

d:=b Xor c; (истинно только в том случае когда истинностные значения операндов раличны)

d:=Not b; (истинно когда исходный операнд ложный)

4) //получение кодов х:=Byte(b); writeln(x);

//Примеры

b:=Frac(Sqrt(i))=0; // i - полный квадрат

b:=(0<=i) And (i<9); // i принадлежит [0; 9)

WriteLn(b);

ReadLn;

End.

Билет №4:

1) Обычно оператор обозначается одним словом, однако иногда это неудобно и тогда в построении оператора используют несколько слов. Операторы образованные несколькими словами называются программными структурами или конструкциями. Например Ветвление это структура, так же как и любые циклы и прочее…

2)

Ветвление

Ветвление является программной структурой (конструкцией), образованной словами

If Then Else (если) (то) (иначе)

Схема ветвления:

If логическое выражение Then
Оператор 1  
Else  
Оператор 2;  

Схема укороченного ветвления:

If логическое выражение Then
Оператор 1;  

3) (снова импровизация) В случае когда в ветвлении в момент срабатывания одного из операторов необходимо выполнить несколько команд или действий, следует заключить их в операторные скобки begin … end;

4) Примеры:

//нужно проверить является ли число целым и в случае истины вывести на //экран обратное ему значение

Var a: Real;

Begin

If Frac(a)=0 then begin a:=1/a; writeln(a);

End;

Readln;

end.

Билет №5: (Импр.)

1) Для запроса ввода данных с клавиатуры используется оператор Read/Readln(x); после ввода данных и нажатии клавиши ввода, данное помещается в переменную х.

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

3) Для ввода случайных данных с клавиатуры используется оператор Random, предположим нам нужно сгенерировать случайное число в дапозоне от 0 до 99 и поместить его в ячейку массива: Var a:=Array[1..10] of Integer; i:integer;

Randomize;

Begin

For i=1 to 10 Do a[i]:=Random(100); Оператор Randomize служит для того чтобы при каждом новом запуске программы генерировались новые случайные числа, это достигается путём того что оператор Randomize привязывает формулу к таймеру машины, который ведёт отсчёт от момента её включения.

4) Для вывода данных на экран используется оператор Write/Writeln(«данные») в скобках между переменными и текстовыми сообщениями ставятся запятые, при выводе текстового послания пользователю его стоит заключить между символами ‘…’. При выводе данных вещественного типа иногда используют параметр вывода, напиример Writeln(x:2:4) цифры где первая цифра означает разрядность числа, а вторая количество знаков после запятой.

Билет №6

Цикл с постусловием

Program Cicle_Repeat;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Var

N:Integer;

Begin

//Эта циклическая структура образована словами

// REPEAT UNTIL

// (повторять) (до тех пор, пока)

//

2)

//Схема записи:

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

// | Repeat |

// | цепочка операторов | <- тело цикла

// | Until условие завершения цикла; |

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

3) Для того чтобы досрочно завершить виток цикла используется оператор Continue, для завершения цикла полностью – оператор Break.

4)

//==================================

//Задача.

//------

// Найти первое целое число большее 1,

// которое при делении на 4, 5, 6

// даёт остаток 1

//==================================

n:=1; //Начальное значение счётчика

Repeat //Заголовок цикла

n:=n+1; //Тело цикла

Until ((n Mod 4)=1) And //Конец цикла с условием

((n Mod 5)=1) And //завершения

((n Mod 6)=1);

WriteLn('Result: ',n); //Вывод результата

ReadLn; //Задержка

End.

//====================================

//РАЗЛОЖИТЬ ЧИСЛО НА ПРОСТЫЕ МНОЖИТЕЛИ

//====================================

Write('n = '); //Приглашение к вводу

ReadLn(n); //Ввод значения n

m:=2; //Первое простое число

Repeat //Главный цикл

If n Mod m=0 Then //Если n делится на m, то

Begin

n:=n Div m; //удаляем множитель из n

Write(m,' '); //выводим его на экран

End

Else m:=m+1; //Иначе следующее m

Until n=1; //Множители закончились - конец

Writeln;

//=====================================

//НАЙТИ СУММУ ЦИФР ПОЛОЖИТЕЛЬНОГО ЧИСЛА

//=====================================

Repeat //Цикл проверки ввода

Write('n = '); ReadLn(n); //Ввод значения n

Until n>0; //Значение правильное - конец

m:=0; //Готовим сумму цифр

Repeat //Цикл суммирование цифр

m:=m+n Mod 10; //Прибавляем цифру числа

n:=n Div 10; //Удаляем цифру числа

Until n=0; //Цифры закончились - конец

WriteLn('Result: ',m);

//===============================

//ПЕРЕВЕРНУТЬ ПОЛОЖИТЕЛЬНОЕ ЧИСЛО

//===============================

Repeat //Цикл проверки ввода

Write('n = '); ReadLn(n); //Ввод значения n

Until n>0; //Значение правильное - конец

m:=0; //Готовим перевёртыш

Repeat //Цикл выделения цифр

m:=10*m+n Mod 10; //Прибавляем цифру числа

n:=n Div 10; //Удаляем цифру числа

Until n=0; //Цифры закончились - конец

WriteLn('Result: ',m);

Билет№7

Циклы с пред условиями

//Эта циклическая структура образована словами

// WHILE DO

// (пока) (выполнять)

//

2)

//Схема записи:

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

// While условие продолжения цикла Do

// оператор <- тело цикла

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

3)Отличие состоит в том что в цикле с постусловием цикл завершится в случае когда условие станет истинным, в цикле же с предустловием наоборот – ложным.

4)

//=========================

//НАЙТИ СТАРШУЮ ЦИФРУ ЧИСЛА

//=========================

Write('n = '); ReadLn(n); //Ввод значения n

n:=Abs(n); //Взятие по модулю

While n>9 Do //Цикл удаления цифр

n:=n Div 10; //Частное

WriteLn('Result: ',n);

//========================

//ВЫЧИСЛИТЬ НОД ДВУХ ЧИСЕЛ

//========================

Write('n m = '); ReadLn(n,m); //Ввод значений n, m

n:=Abs(n); m:=Abs(m); //Взятие по модулю

While m<>0 Do //Цикл поиска НОД

Begin

p:=n Mod m; //Остаток

n:=m; m:=p; //Обмен значениями

End;

WriteLn('Result: ',n);

ReadLn;

End.

Билет №8:

1) Порядковые типы данных характеризуются тем что их значения пронумерованы целими числами, эти номера называются кодами. Например все целые типы являются порядковыми, коды совпадают с самим числом, логические данные так же порядковые, т.к. значению False назначен код 0 а True – 1, символьные данные так же порядковые, они занумерованы от 0 до 255, к непорядковым относятся вещественные числа, строки и т.д.

2) Для каждого порядкового типа можно получить его код, для этого используется функция Ord, например Ord(‘A’) – код буквы А – число 65. Порядковые типы обладают тем свойством что среди данных такого типа имеются первое и последнее, а для любого данного этого типа можно найти предыдущее и последующее. Пусть х – данное такого типа, тогда предыдущее данное возвращается функцией Pred(x); следующее - Succ(x); например Write(Pred(‘A’), Succ(‘A’)); выведет на экран @B.

3) Эти циклы образуются ключевыми словами for, to(DownTo), Doчто означает: Для, по направлению вперёд(назад), выполнить соответственно. В формировании цикла учавствует некоторая переменная порядкового типа, её называют счётчиком цикла (тип любой). Перед выполнением цикла счётчику назначается начальное значение, которое меняется с каждым витком цикла, описание цикла начинается заголовком, например: Var i:integer

Begin

Ветвление является программной структурой (конструкцией), образованной словами - student2.ru в этом случае счётчик начинается со значением 5 и заканчивается значением 10, всё вместе называется заголовком цикла.

Далее пишется тело цикла в виде 1го оператора и ; перед началом выполнения цикла проверяется непротиворечивость начального и конечного значения счётчика, если будет найдено противоречие то цикл не выполнится, в противном случае счётчику присваивается начальное значение и делается первый виток (т.е. первый раз выполняется тело) по окончанию счётчик изменяет своё значение в заданном направлении, затем проверяется остаётся ли это значение внутри заданного диапазона, если да то тело цикла выполняется повторно и делается новая проверка, если нет то цикл завершается, по окончанию цикла счётчик оказывается за пределом цикла. Примеры:

Var i,n,s:integer; c:char;

Begin (вывести все обыкновенные символы)

Write(‘Result ’);

Forc:=’ ‘To#255Do

Write(c);

Вывести все делители целого числа:

Write(‘n= ‘); Readln(n);

Fori=1ToAbs(n)Do

Ifn Modi=0 thenwrite(I,’ ‘);

Writeln;

Проверить простоту числа:

Write(‘n= ‘); Readln(n);

c:=’Y’;

Fori=2 ToTrunc(Sqrt(Abs(n))) Do

Ifn Modi=0 Then Begin c:=’N’; Break; End;

Writeln(‘Result ‘,c);

//========================================

//ПРОВЕРИТЬ ФОРМУЛУ

// 3 3 3 2

// 1 + 2 + ... + N = (1+2+...+N)

//========================================

Write('n = '); ReadLn(n);

c:='Y';

s:=0;

For i:=1 To n Do

Begin

s:=s+i*i*i;

If 4*s<>sqr(i*(i+1)) Then c:='N'; //Если формула не верна

End;

WriteLn('Result: ',c);

ReadLn;

End.

4) Не знаю такого L

Билет №9:

1) Обыкновенное ветвление позволяет выбрать 1 из 2х вариантов, теоретически этого достаточно чтобы выбрать из многих вариантов, например если нужно выбрать из трёх, то проверяем сначала получается ли вариант 1, если нет то получается ли вариант 2, если снова нет, то имеет место вариант 3, здесь достаточно 2х обыкновенных ветвлений: Если вариант 1, то … иначе если вариант 2, то … иначе вариант 3. Такой способ отсечения вариантов громоздкий, поэтому имеется особая структура ветвления, которая называется множественным выбором, она годится в тех случаях когда варианты закодированы некоторой величиной порядкового типа, в организации такого ветвления участвуют ключевые слова Case, of, else, end.Между Caseиofпишется выражение имеющее значение порядкового типа, ниже описываются ветви, их может быть несколько, причём каждая начинается условием принадлежности этой ветви, сразу за условием пишется : и далее оператор, обрабатывающий эту ветвь. Ветви отделяются ; . Предусмотрена особая ветвь которая пишется без условия после слова else, она должна быть последней (либо может отсутствовать) и в конце End;.

2) При организации ветвления используются отдельные значения, величины или диапозоны, и те и другие могут объединяться через запятую. Если величина совпадает с одним из перечисленных значений, то она относится к данному варианту и должна быть обработана соответствующим оператором, после обработки ветвление завершается.

3) Ветви проверяются сверху вниз, последней выполняется ветвь else, если ветвь else не представлена, то значения величины, которые не вошли ни в одну ветвь не обрабатываются.

Program _Case;

{$APPTYPE CONSOLE}

Uses

SysUtils;

//==================================

// МНОЖЕСТВЕННЫЙ ВЫБОР

//(ветвление по значению)

//==================================

Label

Met,Met1,Met2;

Var

n,i:Integer;

b:Byte;

S:String;

Begin

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

// Выбор задачи

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

Repeat

Write(‘Number of task: ‘); ReadLn(i);

Until (i>0) And (i<3);

Case i Of

Goto Met1;

Goto Met2;

End;

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

//1. Склонение числительных

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

Met1:

Write('1. Number: '); ReadLn(n); //Ввод целого числа

S:=IntToStr(n)+' '; //Преобразование в строку

If (n Div 10) Mod 10=1 Then i:=0 //”...надцать” как 0,

Else i:=n Mod 10; //иначе как последняя цифра

Case i Of //В Ы Б О Р по значению i

0,5..9: S:=S+'негритят'; //если 0 или 5…9

1: S:=S+’негритёнок’ //если 1

Else

S:=S+’негритёнка’; //если 2..4

End;

Goto Met; //Вывести строку S

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

//2. Получение числа по b-ичной записи (без проверки)

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

Met2:

Write(‘3. Number: ‘); ReadLn(S); //Ввод записи числа

Write('Base: '); ReadLn(b); //Ввод основание системы

n:=0; S:=UpperCase(S); //Замена малых букв большими

For i:=1 To Length(S) Do //Цикл по цифрам

Case S[i] Of //В зависимости от цифры

‘0’..’9’:

n:=n*b+Ord(S[i])-Ord(‘0’) //-цифра обычная

Else

n:=n*b+Ord(S[i])-Ord(‘A’)+10; //-цифра не обычная

End;

S:='Значение '+IntToStr(b)+ //Готовим результат

'-ичного числа '+S+

‘ равно ‘+IntToStr(n);

Goto Met; //Вывести строку S

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

// Вывод текста по-русски

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

Met:

For i:=1 To Length(s) Do //Цикл по символам строки

Begin

b:=Ord(s[i]); //Получение кода символа

Case b Of

192..239: s[i]:=chr(b-64); //Код большой буквы

240..255: s[i]:=chr(b-16); //Код малой буквы

168: s[i]:=chr(240); //Малая ё

184: s[i]:=chr(241); //Большая Ё

End;

End;

WriteLn(S);

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

ReadLn;

End.

Билет №10:

Опр.Массивом называется совокупность относительных данных, которые: 1) обладают общим именем 2) имеют различные индексы. Массив может обладать несколькими размерами, (например длинна, высота, ширина) в этом смысле в массиве отражается структура многомерного параллелепипеда. Например матрица является двумерным массивом, т.к её элементы снабжаются двумя индексами. В качестве индексов элемента массива могут использоваться целые числа, символы, логические значения, т.е. любые данные порядкового типа, главное чтобы значения каждого индекса образовывали отрезок в соседних значениях, такие отрезки называются диапазонами и обладают квадратными скобками, например: [-2..5]; [‘A’..’D’]; [False..True]. Диапазон представляет собой группу элементов порядкового типа. При описании массива используется слово Array, различают статистические и динамические массивы. Статистический массив в начале выполнения программы занимает определённое место в памяти и не осовбождает его до конца программы, число элементов и диапозон индексов назначается 1 раз и не изменяются.

Он строится по схеме: Имя: Array[диапазон] of (тип данных массива). Массив может описываться вместе с начальными значениями или без них, примеры ниже в конце билета.

Динамический массив первоначально не индексируется и не содержит элементов, он приобретает элементы только в процессе выполнения программы, индексами служат исключительно целые числа от 0. Такой массив можно разрушать и создавать снова. Участок памяти, занимаемый массивом находится за пределом области программы («в куче»).

Динамический массив описывается без диапазона и без начальных значений. d: Array of integer; Количество элементов массива называется ДЛИНОЙ. Длина статистического массива определяется в момент описания, длину динамического массива надо задавать, например: SetLength(d,10). Отдельный элемент массива указывается при помощи массива и индекса в квадратных скобках: d[1]; s[‘A’]. При работе с массивом важно выяснить некоторые характеристики массива, например размер элемента массива или всего массива (число байт). Оператор Size of возвращает размер своего массива, оператор Length возвращает число элементов массива: Size of (d[0]*Length(d0,0); функции Low и High возвращают наименьший и наибольший индексы в массиве. В целом элементы массивов являются обычными переменными, но они не могут служить счётчиками цикла For, например: For a[1]:=1 To 10 Do – ошибка!

Многомерные массивы

Program Poly_Array;

{$APPTYPE CONSOLE}

Uses

SysUtils;

Var

//Статические массивы

a,b:Array[1..4,1..8] Of Integer; //Совместное описание двух массивов

c:Array[1..2,1..3] Of Integer= //Описание с начальными значениями

((3, 2,-1),

(4, 5, 0));

m,n,k:Array[1..2,1..2]Of Integer;//Для хранения матриц

//Динамические массивы

d:Array Of Array Of Char;

Наши рекомендации