- •Постановка задачи
- •Анализ, формальная постановка и выбор метода решения
- •Проектирование
- •Реализация
- •Билет №2 Понятие алгоритма, его основные свойства
- •Свойства алгоритма
- •Пошаговая детализация и нисходящее проектирование
- •Билет № 4Базисные структуры алгоритмов и операторная поддержка их в языке Паскаль.
- •Концепция модульного программирования
- •Билет №6 Назначение и структура модуля Header.
- •Билет №7 Стандартные модули Unit в Турбо-Паскале.
- •Передача данных через формальные параметры.
- •Локальные и глобальные идентификаторы
- •Одномерный массив.
- •Integer - тип всех элементов массива.
- •Билет №10 Признаки хорошего стиля программирования.
- •Билет №15 Архитектура современного пк.
- •Билет №17 Основные характеристики микропроцессоров.
- •Билет № 18 Организация и основные виды памятей, имеющихся в эвм.
- •Билет № 19 Алгоритм нахождения корня уравнения методом дихотомии.
- •Билет № 22 Алгоритм решения интеграла методом трапеции.
- •Ещё одним важным свойством алгоритма является его сфера применения. Здесь основных типов упорядочения два:
- •Поиск в неупорядоченной последовательности.
- •Билет №27 Алгоритм бинарного поиска заданного элемента в упорядоченной последовательности.
Передача данных через формальные параметры.
Формальные параметры могут быть трех разновидностей:
Параметры-значения, параметры - переменные, параметры - кон-
станты.
Параметры-значения описываются следующим образом:
имя(a,b:Тип1; c,d,e:Тип2; ...)
Для каждого формального параметра – значения транслятор внутри
подпрограммы резервирует дополнительные ячейки памяти в соответствии с
типом параметра. При вызове подпрограммы, происходит пересылка факти-
ческого параметра в эти ячейки памяти, после чего выполняется подпрограм-
ма. При этом значение ячейки, где находился сам фактический параметр, не
изменяется. Этот механизм обеспечивает, как, защищенность фактического
параметра, так и его универсальность, т.е. то, что фактическим параметром
может быть константа, переменная или арифметическое выражение.
Например:
Varx,u,zreal;
Function sqxy(x,y:real):real;
begin
if x<0 then x:=0;
if y<0 then y:=0;
Result:=sqrt(x)+sqrt(y);
end;
begin
...
x:=-0.5;
u:=4;
z:=sqxy(x,u);//вызовфункции
write(‘ x=’,x,‘ u=’,u,‘ z=’,z);
z:=sqxy(sin(u)+x,1.86);
...
end;
Здесь внутри функции ( х, у ) – формальные параметры, а в программе
( х, и ) и ( sin(u)+x, 1.86 ) фактические.
При работе данной программы будет напечатано
x= -0.5 u=4 z=2
хотя внутри подпрограммы будет вычислено х=0.
Недостатком формального параметра-значения является необходимость
дублирования ячеек памяти в вызывающей и в вызываемой программах, что в
65
случае, например, параметра-массива приводит к неоправданным затратам
памяти.
Параметры – константы описываются следующим образом:
имя(Consta,b:Тип1; Constc,d,e:Тип2; ...)
В этом случае фактическимпараметром может быть только имя пере-
менной. При вызове подпрограмм передается адрес ячейки переменной, в ко-
торой находится фактический параметр, и все действия производятся над
этой ячейкой. Поэтому после работы подпрограммы в ячейке фактического
параметра при необходимости будет находиться результат.
Например:
typevek = array[1..10] of integer;
procedure sab(n:byte; cоnsta,b:vek; var s:integer);
Var i:byte;
begin
s:=0;
for i:=1 to n do
s:=s+a[i]*b[i];
end;
...
Varx,y:vek;
sk:integer;
begin
Read(x,y);//вводмассивов
sab(5,x,y,sk);
Write(sk);
end;
В процедуре sab массивы a, b описаны как константы, а переменная s
описана как параметр-переменная. Это позволило для массивов x, y сэконо-
мить память, а через параметр-переменную s вывести результат. Ячейку, вы-
деляемую под параметр n, экономнее переслать саму, чем через её адрес, по-
этому для нее используется параметр-значение.
Локальные и глобальные идентификаторы
Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
Основные правила работы с глобальными и локальными именами можно сформулировать так:
Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
Билет №9 Понятие и основные характеристики массива. Описание и способы ввода массива в Паскаль-программе.
Понятие массива
Массив - это упорядоченный набор данных одного типа.
У массива есть имя и размерность (количество элементов в массиве).
Элемент массива представляет собой обычную переменную.
Описание массива
Массив описывается служебным словом Dim:
Dim A (n)-----Cоздаст массив на n элементов и присвоит ему имя А
...
Input A(3)----Запросит ввод третьего элемента массива А
-
1
2
3
4
5
------ Элементы
Чтобы описать массив с символьными элементами, надо к имени массива добавить "$":
DimSt$(10)---Массив на 10 переменных символьного типа.
Заполнение массива
Учитывая, что массив - это упорядоченный набор данных, то для его заполнения целесообразно использовать оператор цикла For.
Пример: заполнить массив на 5 элементов.
Dim A(5)
For i = 1 To 5
Input A(i)
Next i
Вместо № элемента массива можно использовать переменную, значение которой не будет выходить за границы массива. Также может использоваться математическое выражение, результатом которого является целое число, не выходящее за границы массива:
For i = -5 To -1
Input A(i+6)
Next i
За один раз можно описать несколько массивов разного типа и размера (их перечисляют через ","):
Dim A(5), St$(10)
Массивы бывают одномерные (вектор), двухмерные (матрица) или n-мерные.
Двухмерный массив.
Двухмерный массив в нашем представлении имеет вид таблицы (матрицы):
Линия I
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
Линия J I-строка, J-столбец
Для удобства заполнения двухмерного массива используют вложенный цикл.
Ввод данных в двухмерный массив происходит построчно:
For i = 1 To 3
For j = 1 To 5
Input A(i,j)
Next J
Next i
Массив, в котором количество столбцов равно количеству строк, называют квадратичной матрицей.
У квадратичной матрицы есть главная и побочная диагонали:
главная - с элемента (1,1) по (4,4)
побочная - с (1,4) по (4,1)
N - мерный массив заполняется как и двухмерный, но количество циклов разное.