
- •1. Этапы подготовки и решения задач на эвм. Понятие алгоритма.
- •2. Элементарные базовые управляющие структуры
- •3. Состав и работа системы программирования Турбо Паскаль
- •4. Алфавит языка
- •5. Простейшие конструкции и типы данных
- •6. Структура программ на Паскале
- •7. Ввод и вывод данных
- •8. Программирование линейных структур в Паскале
- •Var b,y,z: real;
- •Var day: integer;
- •Var X,y: real; к: integer;
- •11. Программирование циклов с неизвестным числом повторений
- •Var X: integer;
- •Var X,a,p: real; k:integer;
- •12. Программирование вложенных циклов. Массивы.
- •Var amin:real; I, j : integer; a:array[1..100] of real;
- •13. Процедуры и функции в Паскале
- •Var a,b,c,s1,s2,s3,k,r,z:real;
- •Var c,n,m,l: integer;
- •Var p,I: integer;
- •14. Записи в Паскале.
- •15. Работа с файлами в Паскале
- •I:byte;
- •16. Программирование в графическом режиме
- •17. Анимация изображений в Паскале
- •X,y,dy,dx,time,delta,radius,Gd,Gm: integer;
- •18. Построение графика аналитически заданной функции
- •Xn, xk, X, y, Ymin, Ymax, dx:real;
- •19. Численные методы вычисления определённого интеграла
- •I, n: integer;
- •20. Численные методы решения нелинейных уравнений. Общие принципы.
- •22. Численные методы решения нелинейных уравнений. Метод Ньютона (метод касательных).
- •23. Численные методы решения нелинейных уравнений. Метод хорд (метод ложного положения).
- •24. Численные методы решения обыкновенных дифференциальных уравнений. Общие принципы.
- •25. Численные методы решения обыкновенных дифференциальных уравнений. Метод Эйлера.
- •Xn,xk,yn,h,X,y:real;
- •I:integer;
- •26. Численные методы решения обыкновенных дифференциальных уравнений. Модифицированный метод Эйлера.
- •Xn,xk,yn,yw,h:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
- •27. Численные методы решения обыкновенных дифференциальных уравнений. Метод Рунге-Кутта.
- •Xn,xk,yn,h,k0,k1,k2,k3:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
Var a,b,c,s1,s2,s3,k,r,z:real;
{описание процедуры}
procedure step(var x,y,s:real);
begin
s:=exp(y*ln(x));
end;
{блок операторов}
begin
read (a,b,c,); {ввод данных}
step(a,b,S1); {вызов процедуры}
r:=b-c;
step(a,r,S2); {вызов процедуры}
k:= sqr(b)-sqr(c);
step(a,k,S3); {вызов процедуры}
z:=(S1-sqr(S2))/sqrt(S3);
writeln(‘z=’,.z);
end.
В достаточно сложных программах отдельные логические блоки целесообразно оформлять в виде отдельных процедур. Это могут быть процедуры без параметров. Тогда раздел операторов будет выглядеть как перечисление имен процедур.
Пример использования нестандартной функции: Рассчитать
Алгоритм решения: в программе используется нестандартная функция fact типа integer с параметром k, в которой описано вычисление выражения k! При использовании функции в блоке операторов вместо k указывается какой-либо другой параметр, факториал которого при этом рассчитывается.
Текст программы на Паскале:
program sochet;
Var c,n,m,l: integer;
function fact(k: integer): integer;
Var p,I: integer;
begin
p:=1;
for i: =1 to k do
p: = p*i;
fact:=p;
end;
begin
read(n,m);
l:=n-m;
c:=fact(n)/fact(m)/fact(l);
writeln (‘c=’,c);
end.
14. Записи в Паскале.
При организации хранения информации на ЭВМ требуется группировать данные разного типа, относящиеся к одному объекту. Например, целесообразно объединить данные об автомобиле и его владельце (номер, марка машины, год выпуска, цвет, фамилия владельца, его адрес) в одной структуре. Для этого в языке Паскаль предназначен тип, который называется запись. Записи используют в тех случаях, где желательно группировать логически связанные элементы в один блок.
Запись – это структурированный тип данных, состоящий из фиксированного числа компонентов разного типа. Определение записи начинается идентификатором Record и заканчивается ключевым словом end . Между ними заключён список компонентов, называемых полями, с указанием идентификаторов (имён) полей и типа каждого поля.
Формат описания типа запись:
Type
<имя типа> = Record
<идентификатор поля>:<тип компонента>;
.......
<идентификатор поля>:<тип компонента>;
end;
Var
<идентификатор, ...> : <имя типа>;
Например, описание записи, содержащей регистрационный номер автомобиля, его марку, год выпуска, цвет, фамилию и адрес владельца, может выглядеть так:
Type
avto = record
Nomer:string[6]; { Регистрационный номер }
Marka:string[15]; { марка автомобиля }
God:integer; { год выпуска }
Color: string[20]; { цвет }
Fam:string[20]; { фамилия владельца }
Adress:string[40]; { адрес владельца }
end;
Var
m,v:avto;
В данном примере запись avto содержит 6 компонентов: номер, марка машины, год выпуска, цвет, фамилия владельца, его адрес. Доступ к полям записи осуществляется через переменные m и v типа record.
Имя поля должно быть уникальным в пределах записи. Объём памяти, необходимый для хранения записи, складывается из длин полей.
Значения полей записи могут быть использованы в выражениях. Обращение к значению поля осуществляется с помощью составного имени, включающего идентификатор переменной и идентификатор поля, разделённые точкой. Например, чтобы получить доступ к полям записи m типа avto, надо записать: m.nomer, m.marka, m.god, m.color, m.fam, m.adress .
Для присваивания полям записей значений используются оператор присваивания. m.nomer:=’ав345х’; m.marka:=’ВАЗ 2110’; m.god:=1995;
Составные имена можно использовать, в частности, в операторах ввода-вывода, например: Write(’Введите фамилию владельца автомобиля ’,m.nomer, ’ ’); Readln(m.fam);
Допускается применение оператора присваивания к записям в целом, если они имеют один и тот же тип, например, m:=v. После этого значения полей записи m станут равны значениям соответствующих полей записи v.
В ряде задач удобно пользоваться массивами из записей. Их можно описать, например, следующим образом:
Type
Person = record
Fam:string[20]; { фамилия сотрудника }
Pol:char; { Пол сотрудника }
Age:16..60; { возраст сотрудника}
Dolgnost: string[20]; { должность }
end;
Var
otdel:array [1..50] of Person;
Обращение к полям записей имеет несколько громоздкий вид, что особенно заметно при использовании идентификаторов длиной более 5 символов. Чтобы избежать этого,применяется оператор with, который имеет следующий формат:
With <переменная типа record> do <оператор>;
Один раз указав имя переменной типа record в операторе with, далее в пределах блока <оператор> можно работать с именами полей, как с обычными переменными, то есть без указания перед идентификатором поля имени переменной, определяющей запись:
With Otdel[25] do
begin
fam:=’Васильев’;
Pol:=’М’;
Age:=45;
Dolgnost:=’Директор’;
end;
Паскаль допускает вложение записей друг в друга, т.е. поле в записи может в свою очередь быть записью, соответственно оператор with может быть вложенным.
Записи используются обычно для организации файлов с данными на дисках.