825.41K
Категория: ПрограммированиеПрограммирование

Методические разработки к проведению практических занятий по дисциплине «Информатика»

1.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
__________________________________________________________________
ФИЛИАЛ ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО
ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ
ВЫСШЕГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ
«МЭИ»
В Г. СМОЛЕНСКЕ
А.В. КАМИНСКИЙ
Д.О. МАРТЫНЕНКО
МЕТОДИЧЕСКИЕ РАЗРАБОТКИ
К ПРОВЕДЕНИЮ ПРАКТИЧЕСКИХ ЗАНЯТИЙ
по дисциплине «Информатика»
Смоленск
2018
1

2.

УДК 004 (076.5)
К-12
Утверждено учебно-методическим Советом филиала федерального государственного
бюджетного
образовательного
учреждения
высшего
образования
«Национальный
исследовательский университет «МЭИ» в г. Смоленске в качестве Учебного пособия для
студентов очной формы обучения бакалавриата по направлению «Электроэнергетика и
электротехника».
Рецензент
кандидат техн. наук, доцент филиала ФГБОУ ВО «НИУ» «МЭИ» в г. Смоленске
Почечуев С.В.
Подготовлено на кафедре “Электроэнергетические системы”.
КАМИНСКИЙ А.В., МАРТЫНЕНКО Д.О. Методические разработки
к проведению практических занятий по дисциплине «Информатика» / Смоленск: филиал ФГБОУ
ВО «НИУ» «МЭИ» в г. Смоленске. 2018 г.- 44 с.
Учебное пособие содержат теоретический материал и рекомендации по выполнению
практических заданий по дисциплине «Информатика». В пособие включены теоретические
сведения, необходимые для разработки алгоритмов решения задач и примеры программ решения
типовых заданий.
филиал ФГОУВО «НИУ» «МЭИ» в г. Смоленске, 2018
2

3.

ВВЕДЕНИЕ
Целью выполнения практических заданий по дисциплине
«Информатика» является ознакомления студентов с основами современных
информационных технологий, тенденциями их развития,
обучения
принципам применения информационных технологий в профессиональной
деятельности.
В результате освоения дисциплины студенты должны уверенно
работать
в
качестве
пользователя
персонального
компьютера,
самостоятельно использовать внешние носители информации для обмена
данными между машинами, создавать резервные копии и архивы данных и
программ,владеть основами автоматизации решения различных задач.
В ходе изучения данной дисциплины необходимо не только понять
методологию, но и овладеть простейшими приёмами разработки прикладных
задач. Следовательно, в случае необходимости разработки оригинальной
прикладной задачи для своей предметной области важно иметь четкое
представление о том, какие цели преследует её решение и в какой форме
должен быть представлен результат решения. На этапе формализации
определяется методы решения задачи и какие функциональные зависимости
при этом предполагается использовать, при разработке алгоритма указать
предполагаемую последовательность её решения и определить желательный
порядок и форму вывода результатов.
3

4.

1. ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ
1.1.
АЛФАВИТ ЯЗЫКА ПРОГРАММИРОВАНИЯ PASCAL 7.0
Язык программирования – фиксированная система обозначений для
описания алгоритмов и структур данных.
Разработка любой программы начинается с разработки алгоритма для
решения задач.
Для написания программного кода используются следующие символы:
a-z – буквы латинского алфавита
0-9 - цифры
+ - операции сложения
- - операции вычитания
/ - операции деления
*- операции умножения
, - разделение одной записи от другой
; - конец записи (строки) / переход к следующей записи
: - изменение записи / присваивание
. – конец программы / отделение целого знака числа
( ) – изменение порядка операции / логические действия
{ }- комментарий / изменение записи
[ ] – описание массива
Существуют три основных типа данных: числовой, символьный и
логический.
Типы переменных (принимаемые значения):
Целые числа:
Byte – (0 ÷ 255)
Word – (0 ÷ 65565)
Integer – (-32767 ÷ +32765)
Вещественные числа:
Real – (±1037)
Символьные переменные:
char
Строковые переменные:
String – не более 256 символов
В языке Pascal используются встроенные функции и предписания.
Стандартные функции:
Квадрат числа х – sqr(х)
Корень квадратный из числа х –sqrt(х)
4

5.

Возведение числа х в произвольную степень n Модуль числа х – abs(х)
Для целочисленных переменных возможны следующие операции:
Остаток от деления – Х mod N = 0; Х mod N<>0
Целая часть от деления – Х div N.
Для написания любого алгоритма используются следующие действия:
- присваивание,
- ввод значений переменных,
- вывод значений переменных,
- ветвление,
- циклические действия,
- обращение к вспомогательному алгоритму.
Алгоритм должен обладать следующими свойствами:
1.
Универсальность
2.
Правильность
3.
Повторяемость
4.
Результативность
5.
Конечность
6.
Эффективность
Решение задачи начинается с анализа задачи, определения
последовательности основных действий, разработки алгоритма решения.
Графическое построение является блок-схемой решения задачи.
1.1.
ГРАФИЧЕСКОЕ ОБОЗНАЧЕНИЕ АЛГОРИТМА
Блок-схема алгоритма строится в соответствие с типовыми элементами,
установленными ГОСТом. Примеры типовых элементов представлены в
таблице 1.
Таблица 1.
Элементы графического обозначения алгоритмов
Элемент
Н
К
Значение элемента
Начало/конец алгоритма
Ввод / вывод данных
5

6.

Выполнение действий
Принятие решения / выбор
условий
Соединитель
Подпрограмма / предопределенное
действие
Направление перехода по
алгоритму
Правила оформления отчета.
Отчет по лабораторной работе оформляется на листах формата А4. Все
записи ведутся только на одной стороне листа с соблюдением полей.
Поля: левое – 2,5 см, правое – 1,5 см, верхнее и нижнее – 1,5 см.
Отчет по лабораторной работе формируется следующим образом:
1)
Титульный лист
2)
Теоретическая подготовка (определения, понятия, типы
данных,структура модулей)
3)
Текст задания
4)
Структура программы
5)
Текст программы
6)
Блок-схема
7)
Контрольный пример
6

7.

2. ТЕМЫ ПРАКТИЧЕСКИХ ЗАНЯТИЙ
2.1. ЛИНЕЙНЫЕ АЛГОРИТМЫ
Пример 1. Вычислить выражение

Для проверки:
Program PR1;
Uses crt;
VAR
Eq, Ug, coss, sinn, I, Xd: real;
Begin
Clrscr;
Writeln(‘vvod Ug=’);
Readln(Ug);
Writeln(‘vvod cos=’);
Readln(coss);
Writeln(‘vvod sin=’);
Readln(sinn);
Writeln(‘vvod I=’);
Readln(I);
Writeln(‘vvodXd=’);
Readln(Xd);
Eq:=sqrt(sqr(Ug*coss)+sqr(Ug*sinn+I*Xd));
writeln(‘Eq=’, Eq:5:2);
readln;
end.
Пример 2. Найти расстояние между точками с заданными
координатами (X1,Y1) и (X2,Y2) (Рис. 1).
Анализ задачи: координаты точек по осям Х и Y образуют
прямоугольный треугольник, где катеты являются разностью координат.
7

8.

Рисунок 1. – Графическое решение задачи
Program PR1;
Uses crt;
VAR
X1, X2, Y1, Y2, d: real;
Begin
Clrscr;
Writeln(‘vvod koordinat X1’);
Readln(X1);
Writeln(‘vvod koordinat Y1’);
Readln(Y1);
Writeln(‘vvod koordinat X2’);
Readln(X2);
Writeln(‘vvod koordinat Y2’);
Readln(Y2);
d:=sqrt(sqr(X2-X1)+sqr(Y2-Y1));
writeln(‘rassroyanie mezhdu tochkami d=’,d:5:2);
readln;
end.
2.2. РАЗВЕТВЛЯЮЩИЕСЯ АЛГОРИТМЫ
Структура разветвляющегося алгоритма с использованием условного
оператора IF
If <условие> then <действие 1> else <действие 2>;
Если выполняется <условие> тогда выполнить <действие 1> иначе
<действие 2>;
Структура разветвляющегося алгоритма с использованием условного
оператора CASE
8

9.

Case <переменная селектора> of
< значение селектора выбора 1>:<действие 1>;
< значение селектора выбора 2>:<действие 2>;

Для составления сложных условий используются следующие
логические операторы:
And – логическое умножение «И» - выражение принимает истинное
значение при одновременном выполнении нескольких условий
Or – логическое сложение «ИЛИ» - выражение принимает истинное
значение при выполнении одного из условий
Not – логическое отрицание «НЕ» Пример 1. Использование условного оператора IF
Ввести три действительных числа. Вывести те из них, которые
дальше всего от 5. Блок-схема решения приведена на рис.2.
Program PR1;
Uses crt;
VAR
a, b, c, d, f, s: real;
Begin
Writeln(‘vvod a’);
Readln(a);
Writeln(‘vvod b’);
Readln(b);
Writeln(‘vvod c’);
Readln(c);
d:=abs(a-5);
f:=abs(b-5);
s:=abs(c-5);
if (d>f) and (d>s) then writeln(‘tochka a dalshe’)
else
if (f>d) and (f>s) then writeln(‘tochka b dalshe’)
else
writeln(‘tochka c dalshe’);
readln;
end.
9

10.

Рисунок 2 - Фрагмент блок-схемы
Пример 2. Использование условного оператора CASE
Ввести дату (день и месяц). Определить, сколько дней осталось до
начала следующего месяца.
Program qq;
Uses crt;
Var
M,D, D1:byte;
Begin
Clrscr;
Writeln (‘vvod dnya’);
Readln (D);
Writeln (‘vvod mesyacha’);
Readln (M);
Case M of
2: D1:=28;
4, 6, 9, 11: D1:=30;
1,3,5,7,8,10,12: D1:=31
Else D1:=0;
End;
If D>0 then begin
10

11.

writeln (‘v mesyache’, D:4, ‘dnei’);
writeln (‘ostalos’, (D1-D):4, ‘dnei’);
end
else writeln (‘nevenii nomer mesyacha’);
Readln;
End.
2.3. РАЗВЕТВЛЯЮЩИЕСЯ АЛГОРИТМЫ. ГЕОМЕТРИЧЕСКИЕ
ЗАДАЧИ
Описание некоторых геометрических форм приведено в табл. 2.
Таблица 2
Описание геометрических форм в Pascal
Геометрическая
форма
Окружность
Прямоугольник
Ромб
Диагональ
Эллипс
Описание в Pascal
sqr(x)+sqr(y)=sqr(r)
(abs(x)=n) and (abs(y)=m)
abs(x)+abs(y)=N (N – вершины ромба по осям)
Y=X
sqr(x/a)+sqr(y/b)=N
Пример 1. Составить алгоритм и программу, проверяющую,
попадает ли введенная точка с координатами (х,у) в заштрихованную
фигуру.
Заштрихованная область образована двумя геометрическими фигурами
с центрами в начале координат: круг и прямоугольник, причем
заштрихованная фигура находится внутри прямоугольника и вне круга
одновременно.
Описание круга –
sqr(x)+sqr(y)>=sqr(2)
Описание прямоугольника –
(abs(x)<=2) and (y>=-3)and (y<0)
Графическое представление условия задачи представлено на рис.3.
11

12.

Рисунок 3 – Условие графической задачи
Program PR1;
Uses crt;
VAR x,y: real;
Begin
Clrscr;
Writeln(‘vvod koordinat X’);
Readln(x);
Writeln(‘vvod koordinat Y’);
Readln(y);
If (abs(x)<=2) and (y>=-3) and (y<0) and (sqr(x)+sqr(y)>=sqr(2))
then writeln (‘tochka prinadlezhit’)
Else writeln (‘ne prinadlezhit’);
Readln;
End.
2.4. ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ
Структура циклического алгоритма с использованием оператора
цикла While
<Начальное значение параметра>
While <условие> do begin
<действия>;
<изменение значения параметра>;
end;
12

13.

Структура циклического алгоритма с использованием оператора
цикла Repeat
<Начальное значение параметра>
Repeat
<действия>;
<изменение значения параметра>;
Until <условие>;
Структура циклического алгоритма с использованием оператора
цикла For
For <начальное значение параметра> to <конечное значение> do
begin
<действия>
Пример. Вывести все числа от А до В с заданным шагом
изменения.
1. Использование оператора цикла While (рис.4).
Program PR1;
Uses crt;
VAR A, B, h: real;
Begin
Clrscr;
Writeln(‘vvod A’);
Readln(A);
Writeln(‘vvod B’);
Readln(B);
Writeln(‘vvod shaga’);
Readln(h);
While A<=B do
begin
Writeln (A:3:2);
A:=A+h;
End;
Readln;
End.
13

14.

Рисунок 4 - Фрагмент блок-схемы с использованием оператора While
2. Использование оператора цикла Repeat (рис. 5).
Program PR1;
Uses crt;
VARA, B, h: real;
Begin
Clrscr;
Writeln(‘vvod A’);
Readln(A);
Writeln(‘vvod B’);
Readln(B);
Writeln(‘vvod shaga’);
Readln(h);
Repeat
Writeln (A:3:2);
A:=A+h;
Until A>B;
Readln;
End.
14

15.

Рисунок5 - Фрагмент блок-схемы
3. Использование оператора цикла For (рис.6).
Program PR1;
Uses crt;
VARA, B, i: integer;
Begin
Clrscr;
Writeln(‘vvod A’);
Readln(A);
Writeln(‘vvod B’);
Readln(B);
Writeln;
For i:=A to B do
Writeln (‘A=’, i:5);
Readln;
End.
15

16.

Рис.6 - Фрагмент блок-схемы
2.5. ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ. ОБРАБОТКА ЧИСЛОВЫХ
ПОСЛЕДОВАТЕЛЬНОСТЕЙ
Пример 1. Ввести N чисел. Определить количество положительных
и отрицательных элементов числовой последовательности.
Program PR1;
Uses crt;
VAR A: real;
N, i, pol, otr: integer;
Begin
Clrscr;
Writeln(‘vvod N’);
Readln(N);
For i:=1 to N do begin
Writeln (‘A=’);
Readln(A);
If A>0 then
begin
writeln(‘polozhitelnoe’);
pol:=pol+1;
16

17.

end
else
If A<0 then
begin
writeln (‘otrichzatelnoe’);
otr:=otr+1;
end
else
Writeln (‘A=0’);
end;
Readln;
End.
2.6. ОДНОМЕРНЫЕ МАССИВЫ. ПРОСТАЯ ОБРАБОТКА
Массив – упорядоченная, ограниченная совокупность однотипных
величин. Доступ к отдельным элементам массива осуществляется через
ссылку на массив с указанием номера (индекса) нужного элемента.
Количество используемых индексов массива может быть различным:
массивы с одним индексом называют одномерными, с двумя - двумерными,
и т. д. Одномерный массив («столбец», «строка») соответствует вектору в
ма2тике; двумерный - матрице (таблице).
Описание массива:
Var <имя_массива>:array [<диапазон значений индексов>] of <тип
переменных массива>;
Заполнение массива:
- с помощью генератора случайных чисел
randomize;
for i:=1 to n do
<имя_массива>:=-5+random(25);
где компоненты формируемого массива будут в случайном порядке
принимать значения от -5 до + 20.
- ручной ввод
for i:=1 to n do begin
Writeln(‘vvedite <имя_массива>’,i);
Readln((‘<имя_массива>[i]);
end;
17

18.

Пример 1. Найти сумму и количество тех элементов массива Х(n),
каждый из которых, во-первых, больше элемента с тем же номером из
массива Y(n), а во-вторых, положителен.
Program PR1;
Uses crt;
Var X, Y:array [1..20] of real;
i, n, k: integer;
s: real;
begin
clrscr;
writeln(‘vvod kol-va n=’);
readln(n);
randomize;
writeln;
writeln(‘isxodnii massiv X[i]’);
for i:=1 to n do begin
X[i]:=-18+random(30);
Write(X[i]:7:1);
End;
Writeln;
writeln(‘isxodnii massiv Y[i]’);
for i:=1 to n do begin
Y[i]:=-20 +random(40);
Write(Y[i]:7:1);
End;
k:=0;
s:=0;
for i:=1 to n do
if (X[i]>Y[i]) and (X[i]>0) then
begin
k:=k+1;
s:=s+X[i];
end;
writeln;
writeln(‘kol-vo k=’, k:3);
writeln(‘summa s=’, s:5:2);
readln;
end.
18

19.

2.7. ОДНОМЕРНЫЕ МАССИВЫ. ОБРАБОТКА С УСЛОВИЕМ
Пример 1. Ввести массив произвольного размера А(n). Если в
массиве нет элементов, кратных 3, то уменьшить все нечетные элементы
на2, иначе –найти максимальный элемент.
Program PR1;
Uses crt;
Var A:array [1..20] of integer;
i, n, l,m: integer;
begin
clrscr;
writeln(‘vvod_n=’);
readln(n);
randomize;
writeln;
for i:=1 to n do
begin
A[i]:=-15+random(25);
Write(A[i]:4);
End;
for i:=1 to n do
if A[i] mod 3=0 then l:=l+1;
writeln;
writeln(‘kol-vo kratnix 3 l=’, l:3);
if l=0 then
for i:=1 to n do
begin
if A[i] mod 2 <>0 then
A[i]:=A[i]-2;
Writeln(A[i]:5);
end
Else
Begin
m:=A[1];
for i:=1 to n do
if (A[i]>m) then m:=A[i];
writeln(‘max = ’, m:5);
end;
readln;
end.
19

20.

2.8. ДВУМЕРНЫЕ МАССИВЫ. ПРОСТАЯ ОБРАБОТКА
Синтаксис объявления и описания двумерного массива
Var <имя_массива>:array[1..k,1..l] of <тип элементов массива>;
I,j,n,m:integer; {k – максимальное количество строк, l – максимальное
количество столбцов}
Begin
<заполнение массива с помощью генератора случайных чисел>
randomize;
for i:=1 to n do begin
forj:=1 to m do
<имя_массива>[i,j]:=<левая_граница_диапазона>+random
(<диапазон изменения случайной величины>);
End;
<заполнение массива с клавиатуры>
for i:=1 to n do begin
for j:=1 to m do
readln(<имя_массива>[i,j]);
End;
<вывод массива в форме таблицы>
for i:=1 to n do begin
for j:=1 to m do begin
Write(<имя_массива>[i,j]:7:2);
End;
Writeln;
End;
Для квадратных матриц:
для элементов главной диагонали: i=j
для элементов побочной диагонали: j=n-i+1
Пример 1: В массиве найти среднее арифметическое значение тех
элементов, значения которых не превышают заданную величину А.
Program PR1;
Uses crt;
Var X:array [1..20, 1..20] of real;
i, j, n, m, k: integer;
A, s, sr: real;
20

21.

begin
clrscr;
writeln(‘vvod strok n=’);
readln(n);
writeln(‘vvod stolbczhov m=’);
readln(m);
writeln;
randomize;
for i:=1 to n do
begin
for j:=1 to m do
X[i,j]:=-15+random(30);
End;
for i:=1 to n do begin
for j:=1 to m do begin
Write(X[i,j]:7:2);
End;
Writeln;
End;
Writeln(‘A=’);
Readln(A);
for i:=1 to n do begin
for j:=1 to m do
if X[i,j]<=A then begin
k:=k+1;
s:=s+X[i,j];
end;
end;
writeln(‘kol-vo k=’, k:3);
writeln(‘summa s=’, s:5:2);
sr:=s/k;
writeln(‘srednee arifsr=’, sr:5:2);
readln;
end.
2.9. ПОДПРОГРАММЫ
Подпрограмма - часть программы, оформленная в виде отдельной
синтаксической конструкции и снабженная именем. "Вызов" подпрограммы,
т.е. выполнение действий, заданных в подпрограмме в виде операторов,
может быть произведен в некоторой точке программы посредством указания
имени этой подпрограммы.
21

22.

Механизм подпрограмм в языке Турбо Паскаль реализован в виде
процедур и функций. Они имеют сходную структуру, один и тот же смысл,
но различаются назначением и способом вызова.
Процедуры служат для задания последовательности действий,
направленных на использование внешней по отношению к ним программной
обстановки. Примерами такого изменения являются определение значений
новых переменных, запись информации во внешний файл и т.п. Вызов
процедуры осуществляется указанием ее имени в том месте программы, где
предполагается выполнение действий, заданных в процедуре.
При использовании подпрограмм различают глобальные переменные
(эти переменные могут быть использованы во всех модулях программы) и
локальные переменные (эти переменные объявляются в подпрограмме и
используются только внутри объявленной подпрограммы).
Функции служат, прежде всего, для выполнения алгоритма
вычисления некоторого значения. В этом отношении функции
подобны выражениям, которые также вычисляют значение. В соответствии с
этим вызов функции является одним из допустимых операндов выражения,
обозначая в нем то значение, которое вычисляет ("возвращает") функция.
Подпрограммы могут быть использованы как с передачей значений
параметров, так и без передачи значений.
Параметры подпрограмм
Параметры подпрограмм используются для обмена значениями между
вызываемой и вызывающей частями программы. Описываемые в заголовке
объявления подпрограммы параметры называются формальными, а те,
которые подставляются на их место при вызове, - фактическими. Порядок
перечисления
формальных
и
фактических
переменных
должен
совпадать.Параметры
подпрограмм
разделяются
на параметрызначения, параметры-переменные и параметры-константы.
а) Параметры-значения - это локальные переменные подпрограмм,
стартовые значения которых задаются при вызове подпрограмм из внешних
блоков (им присваиваются значения соответстующих фактических
параметров). Параметры-значения, описанные в заголовке, могут изменять
свои значения наряду с прочими переменными, но эти изменения будут
строго локальными и никак не отразятся на значениях фактических
параметров.
Синтаксис описания параметров-значений:
Имя_Подпрограммы( P1 : Тип1; P2 : Тип2; ... );
В качестве фактических параметров подпрограммы, подставляемых на
место формальных параметров-значений, могут выступать: переменные,
константы и выражения (точнее их значения), причем их типы должны быть
совместимы по присваиванию с типами соответствующих формальных
параметров-значений.
22

23.

б) Параметры-переменные
передают
значение
фактического
параметра. При этом формальные параметры-переменные внутри
подпрограммы принимают значения фактических параметров.
Имя_Подпрограммы( VAR P1 : Тип1; VAR P2 : Тип2; ... );
В качестве фактических параметров подпрограммы, подставляемых на
место формальных параметров-переменных, могут выступать только
идентификаторы переменных.
в) Параметры-константы - аналогичны параметрам-значениям с той
лишь разницей, что они не могут изменять свои значения в теле
подпрограммы. Попытка изменить значение параметра-константы будет
немедленно замечена компилятором.
Имя_Подпрограммы( CONST P1 : Тип1; CONST P2 : Тип2; ... );
2.9.1. ПРОЦЕДУРЫ
Структура программы с объявлением и описанием процедуры на
языке PASCAL
Var …;
{область объявления глобальных переменных}
Procedure название (параметры);
{начало процедуры}
Var …;
{объявление локальных переменных}
Begin

{тело процедуры}
End;
{конец процедуры}
Begin

{основная программа}
Название процедуры (параметры); {вызов процедуры}
End.
Пример 1. Составить программу для нахождения индексов
максимального элемента квадратной матрицы с использованием
подпрограммы. Применить данную процедуру для двух заданных
массивов A(n,n) и B(m,m).
1)
Процедура с параметром
Program PR1;
Uses crt;
Type mas= array [1..20, 1..20] of real;
Var
A, B: mas;
i, j, n, m: integer;
23

24.

Procedure maxx(C: mas; k:integer);
Var imax, jmax: integer;
max: real;
Begin
Max:=C[1,1];
for i:=1 to k do begin
for j:=1 to k do
if C[i,j] > max then begin
imax:=i;
jmax:=j;
max:=C[i,j];
end;
end;
writeln(‘max= ’, max:5:2);
writeln(‘stroka i=’, imax:5);
writeln(‘stolbeczh j=’, jmax:5);
imax:=1;
jmax:=1;
end;
begin
clrscr;
writeln(‘vvod n=’);
readln(n);
for i:=1 to n do begin
for j:=1 to n do begin
A[i,j]:=-18+random(30);
Write(A[i,j]:7:2);
End;
Writeln;
End;
Maxx(A, n);
writeln(‘vvod m=’);
readln(m);
randomize;
for i:=1 to m do begin
for j:=1 to m do begin
B[i,j]:=-28+random(50);
Write(B[i,j]:7:2);
End;
Writeln;
End;
Maxx(B, m);
readln;
end.
24

25.

2)
Подпрограмма
Procedure без параметра
Program PR1;
Uses crt;
Type mas= array [1..20, 1..20] of real;
Var A: mas;
i, j, n, m, imax, jmax, k: integer;
max: real;
Procedure vvod;
begin
writeln(‘vvod n=’);
readln(n);
writeln(‘vvod m=’);
readln(m);
for i:=1 to n do begin
for j:=1 to m do begin
A[i,j]:=-18+random(30);
Write(A[i,j]:5:2);
End;
Writeln;
End;
End;
Procedure maxx;
Begin
Max:=A[1,1];
imax:=1;
jmax:=1;
for i:=1 to n do begin
for j:=1 to m do
if A[i,j] > max then begin
imax:=i;
jmax:=j;
max:=A[i,j];
end;
end;
writeln(‘max= ’, max:5:2);
writeln(‘strokai=’, imax:5);
writeln(‘stolbeczh j=’, jmax:5);
imax:=1;
jmax:=1;
end;
25

26.

begin
clrscr;
writeln(‘massiv 1’);
vvod;
Maxx;
writeln(‘massiv 2’);
vvod;
Maxx;
readln;
end.
2.9.2. ФУНКЦИИ
Пример: Найти среднее значение одномерного массива.
Program pr1;
Uses crt;
Var A:array[1..50] of integer;
I, sum, n: integer;
Fuction sred: real;
Var sr:real;
Begin
For i:=1 to n do
sum:=sum+A[i];
sr:=sum/n;
sred:=sr;
end;
begin
writeln(‘vvod n=’);
readln(n);
for i:=1 to n do begin
writeln(‘vvod A[’, i, ‘]’);
readln(A[i]);
end;
writeln(‘srednee sred=’, sred:5:2);
readlln;
end.
26

27.

2.10. ОБРАБОТКА ТЕКСТОВОЙ ИНФОРМАЦИИ.
2.10.1. СТРОКИ
Основными операторами для обработки текстов являются:
Вставка – insert (s1, s, poz), где s1 – символ/строка для вставки, s – имя
строки, poz – место/позиция вставки;
Копирование – copy (s, poz, n), где s – имя строки, poz – позиция начала
копирования, n – количество символов для копирования;
Удаление – delete (s, poz, n), где s – имя строки, poz – позиция начала
удаления, n – количество символов для удаления;
Длина строки – length(s) , где s – имя строки;
Сцепление – s:=s1+s2
Соединение в подстроку – concat (s1,s2,…)
Поиск фрагмента в строке – pos(s1, s) , где s – имя строки, s1 – символ/
фрагмент поиска;
Преобразование строки в число – val(s,n)
Преобразование в заглавную букву – upcase (s)
Преобразование числа в символ - str (n, s)
Пример 1. Найти количество слов в строке. Перед каждым словом
вставить «#».
Program PR1;
Uses crt;
Var
s:string;
i, n, k: integer;
begin
clrscr;
writeln(‘vvod stroke s=’);
readln(s);
n:=length(s);
for i:=1 ti n do
if s[i]=’ ‘ then k:=k+1;
if s[1]<>’ ‘ then k:=k+1;
writeln(‘kol-voslov’, k:5);
for i:=1 to n do
if s[i]=’ ’ then insert(‘#’, s, i-1);
writeln(s);
readln;
end.
27

28.

2.10.2. ИСПОЛЬЗОВАНИЕ ТЕКСТОВОГО МОДУЛЯ
При разработке программы возможно применение текстового модуля
(модуль CRT), дающего дополнительные возможности оформления ввода и
вывода информации на экране монитора. Применение текстового модуля
начинается с его объявления: USES CRT. Этот модуль позволяет менять
цвет символов на экране, цвет фона, на который выводится текст, выполнять
очистку экранной области, создавать окна и прочее.
Некоторые команды модуля имеют структуру:
TextBackground (X) ;
TextColor (X) ,
где Х – выбранный цвет фона или символов, принимается от 0 до 15.
Тип – целое число. Возможно текстовое обозначение цвета символов или
фона например: TextColor (Green),
Window( Х1,У1,Х2,У2) - объявления окна с координатами.
2.11. ЗАПИСИ
Запись – структурированный набор разнотипных данных с
фиксированным числом компонент/полей (анкеты, база данных, зачетная
книжка и т.д.).
Задание записи:
Type <имя_записи>=record
<имя_поля1>:<тип_переменных1>;
<имя_поля2>:<тип_переменных2>;

end;
var <имя_переменной>:<имя_записи>;
К каждому элементу записи можно обратиться, используя составное
имя, которое имеет следующую структуру:
<имя_переменной>:<имя_поля>
Пример 1. Описать структуру из 3 элементов с именем stud,
содержащую следующие поля:
- фамилия, инициалы,
- номер группы,
- успеваемость (из 5 элементов).
Выполнить поиск студентов, имеющих хотя бы одну 2.
Используйте константы.
28

29.

Program pr1;
Uses crt;
Type stud=record
fam:string[25];
in:string;
gr:string;
ysp1, ysp2, ysp3, ysp4, ysp5:byte;
end;
const mas:array[1..3]of stud=
((fam:’Ivanov’; in:’A.V’;gr:’E-15’; ysp1:5; ysp2:4; ysp3:3; ysp4:2;
ysp5:4),
(fam:’Petrov’; in:’V.I’; gr:’EP-14’; ysp1:5; ysp2:3; ysp3:3; ysp4:3;
ysp5:4),
(fam:’Sergeev’; in:’I.K.’;gr:’EM-16’;ysp1:5;ysp2:4; ysp3:4; ysp4:5;
ysp5:4));
Var i:byte;
Begin
Clrscr;
For i:=1 to 3 do
If (mas[i].ysp1=2) or (mas[i].ysp2=2) or (mas[i].ysp3=2)
or (mas[i].ysp4=2) or (mas[i].ysp5=2)
then writeln(mas[i].fam:27, mas[i].in:5, mas[i].gr);
Readln;
End.
Пример 2. Описать структуру из 3 элементов с именем stud,
содержащую следующие поля:
- фамилия, инициалы,
- номер группы,
- успеваемость (по 5 предметам).
Выполнить поиск студентов, имеющих хотя бы одну 2.
Использовать ручной ввод.
Programpr1;
Uses crt;
Type stud=record
fam:string[25];
in:string;
gr:string;
ysp1, ysp2, ysp3, ysp4, ysp5:byte;
end;
Var i,j:byte;
29

30.

mas:array[1..3] of stud;
Begin
Clrscr;
For i:=1 to 3 do begin
Writeln(‘familiya’);
Readln(mas[i].fam);
Writeln(‘iniczh’);
Readln(mas[i].in);
Writeln(‘gruppa’);
Readln(mas[i].gr);
Writeln(‘oczhenka1’);
Readln(mas[i].ysp1);
Writeln(‘oczhenka2’);
Readln(mas[i].ysp2);
Writeln(‘oczhenka3’);
Readln(mas[i].ysp3);
Writeln(‘oczhenka4’);
Readln(mas[i].ysp4)
Writeln(‘oczhenka5’);
Readln(mas[i].ysp5);;
End;
For i:=1 to 3 do
For j:=1 to 5 do
If (mas[i].ysp1=2) or (mas[i].ysp2=2) or (mas[i].ysp3=2)
or (mas[i].ysp4=2) or (mas[i].ysp5=2)
then writeln(mas[i].fam:27, mas[i].in:5, mas[i].gr);
Readln;
End.
2.12. ФАЙЛЫ
Применение файлов и файловых переменных значительно увеличивает
возможности хранения и обработки информации.
Турбо Паскаль поддерживает три файловых типа:
текстовые файлы;
типизированные файлы;
нетипизированные файлы.
Доступ к файлу в программе происходит с помощью переменных
файлового типа. Тип файловой переменной представляют одним из трех
видов:
File of <тип_компонент> - типизированный файл (указан тип
компоненты);
30

31.

text- текстовый файл;
file - нетипизированный файл.
Примеры описания файловых переменных:
var
f1: file of char;
f2: file of integer;
f3: file;
t: text;
Для работы с файлами и файловыми переменными применяются
следующие основные команды:
Запись значения в файл– write(f, n), где f – файловая переменная, n
– переменная для записи;
Чтение значения из файла– read(f, n)), где f – файловая переменная,
n – значение переменной;
Подготовка к записи – rewrite(f)
Подготовка к чтению – reset(f)
Указание пути доступа к файлу – assign(f, ‘D:\L\tt.txt’)
Закрытие файла – close(f)
Размер файла – failsize(f)
Переименовать – rename(f, ‘D:\y1\y2.txt’)
Добавление в конец файла – append(f)
Смещение указателя файла в позицию n– seek(f, n)
Определение достижения конца файла – eof(f)
Уничтожение файла – erase(f)
Пример 1. Выполнить запись в файл, чтение и переименование
файла. Использовать текстовый, типизированный файлы.
Program pr1;
Uses crt;
Var f1, f2: text;
f3: file of integer;
A, B:array [1..25] of integer;
n,i: integer;
begin
clrscr;
assign(f1, ‘D:\1\1.txt’);
rewrite(f1);
assign(f3, ‘D:\1\2.txt’);
rewrite(f3);
writeln(‘vvod kol-va n=’);
31

32.

readln(n);
randomize;
writeln(‘ishodnii massiv’);
for i:=1 to n do begin
A[i]:=-32+random(56);
Write (A[i]:3);
Write(f1, A[i]);
Write(f3, A[i]);
End;
Close(f1);
Close(f3);
Reset(f1);
Writeln(‘chtenie’);
assign(f2, ‘D:\1\4.txt’);
rewrite(f2);
while not eof(f1) do begin
read(f1, B[i]);
write(B[i]:4);
write(f2, B[i]);
end;
Close(f1);
Close(f2);
rename(f1, ‘D:\1\11.txt’);
close(f1);
readln;
end.
2.13. ФАЙЛЫ ЗАПИСЕЙ
Пример 1: Описать структуру из 3 элементов с именем stud, содержащую
следующие поля:
- фамилия, инициалы,
- номер группы,
- успеваемость (из 5 элементов).
Рассчитать средний балл каждого студента.
Использовать ручной ввод.
Program pr1;
Uses crt;
Type stud=record
fam:string[25];
in:string;
gr:string;
ysp1, ysp2, ysp3, ysp4, ysp5: byte;
end;
32

33.

Var
i,j,s:byte;
sr:real;
mas, mas1:array[1..3] of stud;
f:text;
Begin
Clrscr;
assign(f, ‘D:\1\4.txt’);
rewrite(f);
For i:=1 to 3 do begin
Writeln(‘familiya’);
Readln(mas[i].fam);
Write(f, mas[i].fam);
Writeln(‘iniczh’);
Readln(mas[i].in);
Write(f, mas[i].in);
Writeln(‘gruppa’);
Readln(mas[i].gr);
Write(f, mas[i].gr);
Writeln(‘oczhenka1’);
Readln(mas[i].ysp1);
Write(f, mas[i].ysp1);
Writeln(‘oczhenka2’);
Readln(mas[i].ysp2);
Write(f, mas[i].ysp2);
Writeln(‘oczhenka3’);
Readln(mas[i].ysp3);
Write(f, mas[i].ysp3);
Writeln(‘oczhenka4’);
Readln(mas[i].ysp4);
Write(f, mas[i].ysp4);
Writeln(‘oczhenka5’);
Readln(mas[i].ysp5);
Write(f, mas[i].ysp5);
End;
End;
Close(f);
Reset(f);
For i:=1 to 3 do begin
Read(f, mas1[i].fam);
readln(f, mas1[i].in);
Read(f, mas1[i].gr);
Read(f, mas1[i].ysp1);
33

34.

Read(f, mas1[i].ysp2);
Read(f, mas1[i].ysp3);
Read(f, mas1[i].ysp4);
Read(f, mas1[i].ysp5);
End;
Close(f);
For i:=1 to 3 do begin
s:=s+mas1[i].ysp1+mas1[i].ysp2+mas1[i].ysp3+mas1[i].ysp4+
mas1[i].ysp5;
sr:=s/5;
writeln(‘srednii ball sr=’, sr:5:2);
end;
Readln;
End.
2.14. СОРТИРОВКИ
Сортировкой массива называется перестановка компонент
массива в новой последовательности в соответствии с заданным
ключом.
Задача: для двумерного массива упорядочить элементы N-ого
столбца по возрастанию.
Пример 1. Выполнить сортировку методом прямого обмена («метод
пузырька»).
Program PR1;
Uses crt;
Var X: array [1..20, 1..20] of real;
i, j, n, m, k: integer;
A:real;
begin
clrscr;
writeln(‘vvod strok n=’);
readln(n);
writeln(‘vvod stolbczhov m=’);
readln(m);
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
X[i,j]:=-2+random(30);
Write(X[i,j]:7:2);
34

35.

End;
Writeln;
End;
writeln(‘vvod stolbczhа k=’);
readln(k);
for i:=1 to n-1 do
if X[i,k]>X[i+1,k] then
begin
A:=X[i,k];
X[i,k]:=X[i+1,k];
Х[i+1,j]:=A;
end;
for i:=1 to n do begin
for j:=1 to m do begin
Write (X[i,j]:7:2);
End;
Writeln;
End;
Readln;
End.
Пример 2. Выполнить сортировку методом прямого выбора.
Program PR1;
Uses crt;
Var X: array [1..20, 1..20] of real;
i, j, n, m, k, l: integer;
A:real;
begin
clrscr;
writeln(‘vvod
readln(n);
writeln(‘vvod
readln(m);
strok n=’);
stolbczhov m=’);
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
X[i,j]:=-12+random(30);
Write(X[i,j]:7:2);
End;
Writeln;
35

36.

End;
writeln(‘vvod
readln(k);
stolbczhа k=’);
for i:=1 to n-1 do begin
l:=i;
for j:=i+1 to n do
if X[j,k]<X[l,k] then l:=j;
if l>i then begin
A:=X[l,k];
X[l,k]:=X[i,k];
X[i,k]:=A;
End;
End;
for i:=1 to n do begin
for j:=1 to m do begin
Write(X[i,j]:7:2);
End;
Writeln;
End;
Readln;
End.
Результатом выполнения программы сортировки будет вывод на
экран изменённого массива в форме таблицы.
36

37.

ПРИМЕР РЕШЕНИЯ ЗАДАЧИ В PASCAL 7.0
Задание.
Найти среднее арифметическое положительных элементов двумерного
массива и сумму отрицательных элементов.
Анализ задачи:
Для выполнения поставленной задачи необходимо:
1) определить количество и тип переменных, используемых в задаче,
задать имена идентификаторов;
2) задать размерность массива при его описании в разделе
переменных;
3) Задать фактический размер двумерного массива и сформировать его
с помощью генератора случайных чисел и/или с использованием
ручного ввода элементов массива с клавиатуры, используя циклы с
оператором for;
4) вывести полученный двумерный массив на экран в форме таблицы;
5) используя структуру вложенных циклов, задающих текущие
значения строк и столбцов, с применением условного оператора if
выполнить обработку массива: поиск положительных значений
компонент массива с последующим нахождением их суммы и
количества таких элементов, определение суммы отрицательных
компонент массива. В процессе обработки массива исключить
нулевые элементы.
6) С использованием оператора if выполнить защиту вычислений
нахождения среднего арифметического от деления на ноль ( если
положительных элементов в массиве нет), и вывести
соответствующее сообщение;
7) вывести на экран результаты всех вычислений.
Текст программы.
Program PR1;
Uses crt;
Var a:array[1..25,1..25] of real;
k,i,n,j,m:integer;
sum1,sum2,sr1:real;
begin
{очистка экрана}
clrscr;
writeln(‘vvedite kol-vo strok n=’);
readln(n);
37

38.

writeln(‘vvedite kol-vo stolbchov m=’);
readln(m);
{заполнение массива с помощью генератора случайных чисел}
randomize;
for i:=1 to n do
for j:=1 to m do
a[i,j]:=-15+random(30);
{вывод массива на экран в форме таблицы}
Writeln(‘ishodnii massiv’);
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:7:2);
writeln;
end;
{обработка массива}
k:=0;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>0 then
begin
sum1:=sum1+a[i,j];
inc(k);
end
else
if a[i,j]<0 then sum2:=sum2+a[i,j];
if k > 0 then
begin
sr1:=sum1/k;
writeln(‘srednee = ’, sr1:7:2);
end
else
writeln(‘polozhitelnix elementov net’);
writeln(‘summa otrich= ’, sum2:5:2);
readln;
end.
Блок-схема решения приведена на рис.7 и рис. 8.
38

39.

39
Рисунок 7 – Блок-схема решения

40.

40
Рисунок 8 – Продолжение блок-схемы решения

41.

Контрольный пример
Рисунок 9 – Контрольный пример решения
41

42.

Литература:
1. Гусева А.И. Учимся программировать. Pascal 7.0. Задачи и методы их
решения: Учебное пособие для студентов вузов. М.: Диалог – МИФИ,
1998. -254 с.
2. Информатика и программирование. Основы информатики: учебник для
вузов по направлению «программная инженерия». Под ред. Б.Г.
Трусова. -М.; Академия, 2012. -247 с.
3. Программирование на языке Pascal – Паскаль. [Электронный ресурс] //
http://www.pascal.helpov.net
42

43.

СОДЕРЖАНИЕ
Введение………………………………………………………………...
3
1. Теоретическое введение…………………………………………….
4
1.1 Алфавит Pascal 7.0……………………………………………..
4
1.2. Графическое обозначение алгоритма………………………..
5
2. Темы практических занятий………………………………………...
7
2.1. Линейные алгоритмы………………………………………….
7
2.2. Разветвляющиеся алгоритмы…………………………………
8
2.3. Разветвляющиеся алгоритмы. Геометрические задачи……..
11
2.4. Циклические алгоритмы………………………………………
12
2.5. Циклические алгоритмы. Обработка числовых
последовательностей…………………………………………………
16
2.6. Одномерные массивы…………………………………………
17
2.7. Одномерные массивы. Обработка с условием………………
19
2.8. Двумерные массивы…………………………………………...
20
2.9. Подпрограммы………………………………………………...
21
2.9.1. Процедуры…………………………………………………
23
2.9.2. Функции…………………………………………………….
26
2.10. Обработка текстовой информации. ………………………
27
2.10.1. Строки……………………………………………………
27
2.10.2. Использование текстового модуля……………………..
28
2.11. Записи…………………………………………………………
28
2.12. Файлы…………………………………………………………
30
2.13. Файлы записей………………………………………………..
32
2.14. Сортировка……………………………………………………
34
3. Подробный пример решения задачи в Pascal 7.0………………….
37
Литература……………………………………………………………...
42
43

44.

Каминский Александр Владимирович
Мартыненко Диана Олеговна
«ИНФОРМАТИКА»
Методические разработки
к проведению практических занятий
по дисциплине «Информатика»
Технический редактор М.А. Андреев
__________________________________________________________________________
Темплан издания филиала ФГБОУ ВО «НИУ « МЭИ» в г. Смоленске, 2018 г., метод.
Подписано в печать
31.11 .2018 г.
1
Формат бумаги 60×84 /16. Тираж 100 экз. Усл. печ. л. 2,75
__________________________________________________________________
Издательский сектор филиала ФГБОУ ВО «НИУ» «МЭИ» в г. Смоленске
214013, г. Смоленск, Энергетический проезд,1
44
English     Русский Правила