
- •Алфавит языка, имена, числа, строки
- •8. Оператор присваивания
- •19.Комбинированные типы данных (запись).
- •23. Операции над данными множественного типа.
- •1. Объявление указателя; 2. Формирование динамических данных, память которых отводится во время выполнения программы.
- •29. Функции.
- •30. Параметры процедур и функций. Формальные и фактические параметры
- •43. Сортировка Выбором min
29. Функции.
Функции - это отдельная функционально независимая часть программы. Любая функция обладает той же структурой, которой обладает и вся программа. (*) решают три важные задачи:
•избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
•улучшают структуру программы, облегчая ее понимание;
•повышают устойчивость к ошибкам программирования и непредвидимым последствиям при модификациях программы.
Оформляется функция аналогично процедуре. Отличительной особенностью функции является то, что она возвращает только один результат выполнения. Этот результат обозначается именем функции и возвращается (передается) в основную программу (место вызова). Функция состоит из заголовка, раздела описаний и раздела операторов. Function <Name>(<Список формальных параметров>):<Type>; … {Раздел описаний} Begin …{Раздел операторов процедуры} Name:=<выражение соответствующего типа&; … End; где Function - служебное слово; Name - произвольный идентификатор, определяющий имя функции. В отличии от процедур в разделе операторов тела функции обязательно должен быть хотя бы один оператор присвоения имени функции выражения или значения соответствующего типа. После работы функции результат присваивается имени функции. Таким образом, алгоритм можно оформить в виде функции в том случае, если в качестве результата получается одно единственное значение. Для вызова функции достаточно указать ее имя (с фактическими параметрами) в любом выражении, где тип результата функции будет приемлем. Имя функции можно использовать в арифметических выражениях и других командах.Функция, определяющая по двум катетам гипотенузу прямоугольного треугольника: Function Gepoten(a,b:real):real; Begin Gepoten:=Sqrt(Sqr(a)+Sqr(b)) End; Вызов функции из основной программы может выглядеть следующим образом: z:=Gepoten(x, y); {z присваивается значение гипотенузы} или WriteLn('Значение гипотенузы', Gepoten(x, y));
30. Параметры процедур и функций. Формальные и фактические параметры
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой программе (количество примеров, их последовательность, тмпы). Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группу формальных параметров включаются однотипные параметры одной категории. Все формальные параметры можно разбить на четыре категории:
•параметры значения (эти параметры в основной программе подпрограммой не меняются );
•параметры - переменные ( эти параметры подпрограмма может изменить в основной программе );
•параметры-константы ( используются только в версии 7.0);
•параметры-процедуры и параметры-функции (т.е. процедурного типа). Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - его категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недостурным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип. Например, нельзя писать
function Max( A: array[ 1..100 ] of real ): real;
Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке: type tArr =array [ 1..100 ] of real;
function Max ( A: tArr ) : real;
При обращении к подпрограмме формальные параметры заменяют на соответствующие фактические вызывающей программой или подпрограммы.
34. Перевод из десятичной в двоичную СС.
Перевод из десятичной в двоичную систему счисления
Для перевода необходимо делить число с остатком на основание счисления до тех пор, пока частное больше основания счисления.
Пример:
44 переведём в двоичную систему
44 делим на 2. частное 22, остаток 0
22 делим на 2. частное 11, остаток 0
11 делим на 2. частное 5, остаток 1
5 делим на 2. частное 2, остаток 1
2 делим на 2. частное 1, остаток 0
1 делим на 2. частное 0, остаток 1
Частное равно нулю, деление закончено. Теперь записав все остатки слева направо получим число 101100
35. Перевод из двоичной в десятичную.
Для перевода из двоичной системы в десятичную удобно пользоваться суммированием по степеням двойки. Например: (10100)2 = 1х24 + 0х23 + 1х22 + 0х21 + 0х20 = 16+4 = (20)10
36. перевод числа из двоичной системы в восьмеричную(не хватает в 16-ю).
Для этого двоичное число разбивают на триады относительно крайнего правого разряда (или двоичной запятой) и, используя таблицу 7, каждой триаде ставят в соответствие восьмеричную цифру. (000 – 0 001- 1 010-2 011-3 100-4 101-5 110-6 111-7)перевод числа из восьмеричной системы в шестнадцатеричную через другие
37. Перевод чисел из 8-ричной и 16-ричной системы счисления в десятичную(не хватает из 16-йо)
Для перевода восьмеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания восьмеричной системы счисления на соответствующие цифры в разрядах восьмеричного числа: 4728=4*82+7*81+2*80=256+56+2=314
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число 5A3 в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
5A316=5·162+10·161+3·160=5·256+10·16+3·1=1280+160+3=144310
38.внутр. представление двоичных чисел с фиксир. точкой.
Целые числа представлены в компьютере в 2-х формулах – знаковой и без знаковой. Для типа integer выделя 2 байта, под longint -4 байта. Отрицательные числа в формате с фиксированной точкой хранится в дополнительном коде (для отриц. числа А он обозначается Д(А)).
Он обозначается следующим образом:
по прямому коду числа (А) заменой всех 0 на 1,а 1 на 0 строится обратный (конвертируется) код R(А)
к обратному коду R(А) добав. 1: D(А)=R(А)+1
пример:
1.прямой 2-х байтный код 144 – 0000 0000 1001 0000
2.Обратный R(А) : 1111 1111 0110 1111
3.прибавим а R(А) единицу и получим дополнительный код D(А) – 111 1111 0111 0000
По D(A) восстанавливается число в обратном порядке или след. образом.
1.построить кол R(D(A)), обратный D(A)
2.к R(D(A)) прибавить 1
39. Внутр. Представление числа с плавающей точкой
Число типа real хранится в опред. Памяти в виде формулы с плавающей точкой. Под тип real выделяется 4 байта (для других типов (вещ.) выд. 6,8,10 байт), разделим на 3 поля.
<знак> <порядок> <монтисса>
1.знак (1бит): значение 0 если '+' значение 1,если '-'
2.порядок (7 бит)
3.мантисса – числа меньше 1 но больше 0
Нормализованной назыв. Мантисса, у которой разрез после точки не нулевой (0,57E1)
В IBM 360,370 – нормализ. 16-ричная мантисса
Например, число 5,7 с мантиссай запишется так 0,57E1 или 0,057E2
41. Метод часового
Суть данного метода заключается в следующем: в исходном массиве выбирается пара элементов и сравнивается. Если их положение не удовлетворяют исходному требованию упорядоченности, то элементы переставляются. Затем выбирается следующая пара и так до тех пор, пока не получится упорядоченный массив.
”Дробинки с флагом”
Procedure Drobinka_Flag;
Var I,J,Q:Integer;
A : array[1..20] of Integer;
Flag:Boolean;
begin
For I:=1 to N-1 do
begin
Flag:=True;
For J:=1 to N-I do
begin
If F[J]>F[J+1] then
begin
Q:=F[J];
F[J]:=F[J+1];
F[J+1]:=Q;
Flag :=False
end
{end If}
end;
{end For J}
If Flag=True then break
{end If Flag ...}
end;
{end For I}
End;
42. Сортировка пузурьковым методом. Сортировка пузырьковым методом использует метод обменной сортировки. Она основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов. Ее название происходит из-за подобия процессу движения пузырьков в резервуаре с водой, когда каждый пузырек находит свой собственный уровень. Ниже показана самая простая форма программы сортировки методом пу зырька
Следующий метод - это пузырьковая сортировка. Проходить через массив, обменивая если нужно элементы; когда на каком-то шаге обменов не потребуется - сортировка окончена. Реализация этого метода дана ниже.
procedure bubble; var i, j, t : byte; begin for i :=2 to N do for j:=N down to i do if x[i-1]>x[j] then begin t:=x[j-1];x[j-1]:=x[j];x[j]:=t; end; end; end;
Чтобы поверить в то, что она на самом деле работает, может потребоваться некоторое время. Для этого заметьте, что когда во время первого прохода встречаем максимальный элемент, обмениваем его с каждым элементом справа от него пока он не окажется в крайне правой позиции. На втором проходе помещаем второй максимальный элемент в предпоследнюю позицию и так далее. Пузырьковая сортировка работает также как и сортировка выбором, хотя она и делает гораздо больше работы на то, чтобы переместить элемент в его конечную позицию.