- •Введение Литература
- •Сокращения
- •Тема № 1. Основные понятия программирования
- •1.1. Состав программы на языкеPascal
- •1.2. Элементы программы в языкеPascal
- •1.3. Типы данных в языкеPascal
- •1.4. Операции в языкеPascal
- •1.5. Выражения в языкеPascal
- •1.6. Стандартные функции в языкеPascal
- •1.7. Операторы языка Pascal
- •Тема № 2. Программирование базовых алгоритмов
- •2.1. Программирование последовательных вычислений
- •2.2. Программирование разветвлений
- •2.3. Программирование циклов
- •Тема № 3. Программирование задач с массивами
- •3.1. Одномерные массивы
- •Фрагменты вычисления характеристик одномерного массива
- •Фрагменты операций с одномерными массивами
- •Особенности элементов одномерного массива
- •3.2. Двумерные массивы
- •Фрагменты вычисления характеристик двумерного массива
- •Фрагменты вычисления характеристик строк и столбцов двумерного массива
- •Фрагменты операций с двумерными массивами
- •Особенности элементов квадратных матриц
- •3.3. Перестановка и сортировка элементов массива
- •Тема № 4. Программирование подпрограмм и структурных типов данных
- •4.1. Подпрограммы
- •4.2. Программирование задач с функциями
- •4.3. Программирование задач с процедурами
- •4.4. Программирование задач с файлами
- •4.5. Программирование задач с символами и строками
- •4.6. Программирование задач с записями
- •4.7. Программирование задач со множествами
- •Тема № 5. Моделирование
- •5.1. Моделирование как метод познания
- •5.2. Классификация моделей
- •5.3. Задачи и методы моделирования
- •5.4. Виды численных методов
- •Тема № 6. Введение в компьютерную графику
- •6.1. Предмет компьютерной графики
- •6.2. Виды компьютерной графики
- •6.3. Направления компьютерной графики
- •Тема № 7. Модели компьютерной графики
- •7.1. Геометрические модели
- •7.2. Цветовые и оптические модели
- •Тема № 8. Аффинные преобразования
- •8.1. Общий вид двумерных преобразований
- •8.2. Элементарные двумерные преобразования
- •8.3. Однородные координаты на плоскости
- •8.4. Композиции двумерных преобразований
- •8.5. Преобразования систем координат
- •8.6. Двумерные преобразования на экране монитора
- •8.7. Матричное представление трёхмерных преобразований
4.2. Программирование задач с функциями
Заголовок описания функцииимеет вид:
function Func ( SFP1 : T1 ; … ; SFPN : TN ) : T ;
где function– функция,Func– имя функции,SFP1– список формальных параметров 1-й, SFPN– список формальных параметровN-й,T1– тип параметров в 1-м списке,TN– тип параметров вN-м списке,T– тип значения, возвращаемого функцией.
Это означает, что задаётся подпрограмма-функция с именем Func, зависящая от формальных параметров из списка SFP1 типа T1 , … из списка SFPN типа TN , а также вычисляющая значение типа T.
Вызов функциииз другой части программы имеет вид:
Func(SFP )
где Func – имя функции,SFP – список фактических параметров.
Это означает, что вычисляется значение функции Func, зависящей от фактических параметров из списка SFP, причём вызов функции может осуществляться в составе выражения.
Задача 1.
Условие задачи. Вычислить , а также найтис использованием подпрограммы-функции возведения в степень.
Программа.
Program z1;
Var
A:array[0..100] of real;
B,C,x:real;
i,n:integer;
Function Step(a,b:real):real;
begin
Step:=exp(b*ln(a));
end;
Begin
read(n,x);
for i:=0 to n do
read(A[i]);
B:=Step(2.1,5)+Step(7,0.3);
C:=0;
for i:=0 to n do
C:=C+A[i]*Step(x,i);
writeln(B,C);
End.
4.3. Программирование задач с процедурами
Заголовок описания процедурыимеет вид:
procedure Proc ( SFP1 : T1 ; … ; SFPN : TN ) ;
где procedure– процедура,Proc– имя процедуры,SFP1– список формальных параметров 1-й, SFPN– список формальных параметровN-й,T1– тип параметров в 1-м списке,TN– тип параметров вN-м списке.
Это означает, что задаётся подпрограмма-процедура с именем Proc, зависящая от формальных параметров из списка SFP1 типа T1 , … из списка SFPN типа TN, а также выполняющая какие-либо действия.
Вызов процедурыиз другой части программы имеет вид:
Proc(SFP )
где Proc – имя процедуры, SFP – список фактических параметров.
Это означает, что выполняются действия в теле процедуры Proc, зависящей от фактических параметров из списка SFP, причём вызов процедуры не может осуществляться в составе выражения.
Задача 2.
Условие задачи. В двумерном массиве A из 3 строк и 4 столбцов вычислить сумму и произведение отрицательных элементов с использованием подпрограммы-процедуры, именованных констант и типов данных.
Программа.
Program z2;
Const m=3; n=4;
Type TT=array [1..m,1..n] of real;
Var A:TT; i,j:integer; s,p:real;
Procedure SumPro(B:TT; m,n:integer; var s,p:real);
var i,j:integer;
begin
s:=0; p:=1;
for i:=1 to m do
for j:=1 to n do
if B[i,j]<0 then
begin
s:=s+B[i,j];
p:=p*B[i,j];
end;
end;
Begin
for i:=1 to m do
for j:=1 to n do
read(A[i,j]);
SumPro(A,3,4,s,p);
writeln(s,p);
End.
4.4. Программирование задач с файлами
Файлы– упорядоченные наборы данных различного типа, хранящиеся в памяти.
В языке Pascalфайлы бывают:
Текстовые (типа Text).
Типизированные (типаFile of …).
Нетипизированные (типаFile).
Для текстовых файлов обычно применяются следующие стандартные процедуры:
Assign(FP,F)– связь файловой переменнойFPс именем файлаF.
Reset(FP)– открытие файла, связанного с файловой переменнойFP, для чтения.
ReWrite(FP)– открытие файла, связанного с файловой переменнойFP, для записи новых данных с удалением старых.
Append(FP)– открытие файла, связанного с файловой переменнойFP, для записи новых данных с добавлением к старым.
Close(FP)– закрытие файла, связанного с файловой переменнойFP.
Read(FP,P1,…,PN)– ввод значений переменныхP1, … ,PNиз файла, связанного с файловой переменнойFP.
ReadLn(FP,P1,…,PN)– ввод значений переменныхP1, … ,PNиз файла, связанного с файловой переменнойFP, и перевод указателя в файле на новую строку.
Write(FP,V1,…,VN)– вывод значений выраженийV1, … ,VNв файл, связанный с файловой переменнойFP.
WriteLn(FP,V1,…,VN)– вывод значений выраженийV1, … ,VNв файл, связанный с файловой переменнойFP, и перевод указателя в файле на новую строку.
Задача 3.
Условие задачи. Ввести матрицу A размером 33 из файла a1.txt, заменить в ней элементы выше главной диагонали на нули, а затем вывести эту матрицу в файл a2.txt.
Программа.
Program z3;
Var
A:array[1..3,1..3] of real;
i,j:integer;
f1,f2:text;
Begin
assign(f1,'a1.txt');
assign(f2,'a2.txt');
reset(f1);
rewrite(f2);
for i:=1 to 3 do
for j:=1 to 3 do
read(f1,A[i,j]);
for i:=1 to 3 do
for j:=1 to 3 do
if i<j then A[i,j]:=0;
for i:=1 to 3 do
begin
for j:=1 to 3 do
write(f2,A[i,j]);
writeln(f2,'');
end;
close(f1);
close(f2);
readln;
End.
Контрольный пример.
Исходные данные: |
. |
Результаты: |
. |