- •Предисловие
- •Содержание курсов "информатика" и "основы алгоритмизации и языки программирования"
- •2.1. Лекционные занятия
- •Тема 9. Разработка и отладка программ с использованием подпрограмм-
- •Тема 10. Разработка и отладка программ с использованием данных
- •Тема 11. Разработка и отладка программ с использованием
- •Приложение
- •2.2. Лабораторные и практические занятия
- •2.3. Рекомендации к бюджету времени при изучении курсов
- •Внимание!
- •Введение Начальные сведения о компьютере ibm pc
- •Клавиатура
- •Особые комбинации клавиш
- •Файлы данных
- •Операционная система ms dos
- •Составные части dos
- •Загрузка и перезагрузка пк
- •Работа с файлами, каталогами и командами
- •Внутренние команды dos
- •Программная оболочка Norton Commander
- •Функциональные клавиши nc
- •Некоторые комбинации клавиш nc
- •Особенности работы интегрированной среды (ide) Турбо Паскаль (Тurbo Рascal)
- •Команды работы с блоками
- •Программирование на языке турбо паскаль Тема № 1 Разработка и отладка программ линейного вычислительного процесса
- •Приоритет выполнения операций
- •Примеры
- •Варианты заданий
- •Тема № 2 Разработка и отладка программ разветвляющегося вычислительного процесса. Логический условный оператор
- •Тема № 3 Разработка и отладка программ разветвляющегося вычислительного процесса. Оператор выбора варианта
- •Варианты заданий
- •15. Введите символ с клавиатуры компьютера и определите, является ли он символом английского алфавита, символом русского алфавита или знаком препинания.
- •16. Введите цифру и распечатайте соответствующий ей знак зодиака. Например единице, соответствует знак зодиака "водолей". Если такой цифры нет, то сделайте сообщение.
- •Тема № 4 Разработка и отладка программ циклического вычислительного процесса. Оператор цикла с параметром
- •Примеры
- •Варианты заданий
- •Тема № 5 Разработка и отладка программ циклического вычислительного процесса. Операторы цикла с постусловием и предусловием
- •Оператор цикла с предварительным условием (предусловием) имеет вид:
- •Тема № 6 Разработка и отладка программ с использованием структурированных типов данных – одномерных массивов
- •Тема № 7 Разработка и отладка программ с использованием структурированных типов данных – двухмерных массивов
- •Тема № 8 Разработка и отладка программ с использованием подпрограмм-функций
- •Подпрограмма-функция Структура функции
- •Примеры
- •11. Даны три массива а(10), в(8), с(12). Подсчитайте для каждого массива среднее арифметическое его положительных элементов, для чего используйте подпрограмму-функцию.
- •13. Составьте подпрограмму-функцию вычисления элементов нового массива на основании элементов массивов а и в по правилу
- •20. Вычислите суммы элементов каждой строки матрицы в(8,8), определите наибольшее значение этих сумм и номер соответствующей строки. Для подсчета сумм и наименьшего значения напишите функции.
- •Тема № 9 Разработка и отладка программ с использованием подпрограмм-процедур
- •Подпрограмма-процедура
- •Структура процедуры
- •Примеры
- •Составьте программу с подпрограммой определения максимальной и минимальной оценок, а также среднего балла, данных девятью судьями каждой из пяти фигуристок.
- •Тема № 10 Разработка и отладка программ с использованием данных символьного и строкового типов
- •Операции над символами
- •Операции над строками
- •Строковые процедуры
- •Строковые функции
- •Варианты заданий
- •Тема № 11 Разработка и отладка программ с использованием структурированных типов данных - файлов
- •Var имя : file of базовый тип;
- •Var имя : имя типа;
- •4.Массив к данных вещественного типа записать в типизированный файл, а затем считать из него средний элемент.
- •Варианты заданий
- •9. Имеется файл с данными целого типа. Считайте эти значения в исходной программе в массив, упорядочьте элементы массива в порядке возрастания (убывания) и запишите его в новый файл.
- •18. Имеется массив температур т[30]. Напишите подпрограмму, находящую среднюю температуру за дни с к1 по к2. Определите самую теплую неделю месяца. Результат запишите в файл.
- •23. Имеется массив температур т[30]. Определите среднюю температуру за месяц, самую теплую и самую холодную температуры в течение месяца. Результаты запишите в файл.
- •Приложения
- •Типы Простые Порядковые Целые
- •Процедурные Файлы
- •Длинные и короткие вещественные типы
- •В) Таблица п.3 Кодировка символов в соответствии с таблицей кодов ascii
- •I. Модуль system
- •II. Модуль dos
- •III. Модуль crt
- •IV. Модуль graph
- •V. Модуль printer
- •VI. Модуль overlay
- •Основные термины
- •Учебная литература по курсу
Тема № 6 Разработка и отладка программ с использованием структурированных типов данных – одномерных массивов
Студенты должны изучить правила использования одномерных массивов, а также уметь разрабатывать алгоритмы и методы решения поставленной задачи.
При решении математических, экономических и технических задач часто используются упорядоченные наборы данных, например таблицы, последовательности чисел, различные списки. Кроме того, в векторной алгебре и математической физике широко применяются такие понятия матричного исчисления, как вектор и матрица. Программными аналогами вектора (матрицы-столбца или матрицы-строки) является одномерный массив; матрицы - двухмерный или многомерный массив. Массив - это упорядоченный набор данных одного типа, имеющих одно символическое имя. Массив состоит из элементов. Каждый элемент массива описывается символическим именем и индексом в квадратных скобках, например:
T[1], T[I], T[2*I].
Индекс может быть целой константой, переменной целого типа или арифметическим выражением целого типа.
В Паскаль-программе массивы описываются в разделе типов TYPE или разделе переменных VAR следующим образом:
TYPE имя типа = ARRAY[n1..n2] OF базовый тип;
VAR имя переменной №1: имя типа;
имя переменной №2: ARRAY[к1..к2] OF базовый тип;
где n1, к1 и n2, к2 – соответственно начальные и конечные значения индексов массивов.
Примеры описания массивов:
VAR T:ARRAY[1..365] OF INTEGER;
ST:ARRAY[1..50] OF CHAR;
A:ARRAY[1..10] OF REAL;
B:ARRAY[1..8] OF STRING;
или
TYPE MAS = ARRAY[1..365] OF INTEGER;
VAR T:MAS;
В первой строке тип MAS определяется в виде массива с 365 "элементами" целого типа. Переменная T имеет тип MAS, построенный на базовом типе ARRAY[1..365] OF INTEGER;.
Если в задании рассматривается N элементов массива, то возможна следующая конструкция:
CONST N=50;
TYPE RY= ARRAY[1..N] OF REAL;
VAR D:RY;
Если A и B являются именами массивов одного типа, то их можно описать следующим образом:
TYPE MAS=ARRAY[1..20] OF INTEGER;
VAR A, B : MAS;
Ввод одномерных массивов
Массивы вводятся с помощью следующего оператора:
FOR I:=1 TO N DO READ(X[I]);
где I порядковый номер элемента массива.
Вывод одномерного массива
Распечатать массив можно в строку или следующим образом:
FOR I:=1 TO N DO WRITE(X[I],' ');
или таким образом
FOR I:=1 TO N DO WRITE(X[I]:6:3); .
Элементы массива можно распечатать в столбик:
FOR I:=1 TO N DO WRITELN(X[I]);
Примеры.
1. Вычислите произведение 10 элементов массива A вещественного типа.
PROGRAM MASSIV1;
VAR P:REAL; I:INTEGER;
A:ARRAY [1..10] OF REAL;
BEGIN
P := 1; WRITELN(’Введите массив А’);
FOR I: = 1 TO 10 DO
BEGIN READ(A[I]); P: =P*A[I]; END;
WRITELN (’P= ’, P:10:4 );
END.
2. Даны n натуральных чисел a1, a2, ... an. Определите среднее арифметическое членов последовательности, которые кратны 3 и не кратны 5.
PROGRAM SR;
USES CRT;
VAR A:ARRAY[1..50] OF INTEGER;
I,N,K:INTEGER;
S,SA:REAL;
BEGIN
CLRSCR;
WRITELN(‘Введите N’);
READLN(N);
WRITELN(‘Введите элементы массива A’);
FOR I:=1 TO N DO READ(A[I]);
WRITELN;
S:=0; K:=0;
FOR I:=1 TO N DO
BEGIN
IF (A[I] MOD 3=0) AND (A[I] MOD 5<>0) THEN
BEGIN
S:=S+A[I]; K:=K+1;
END; END;
IF K=0 THEN WRITELN(‘ Нет решения’)
ELSE BEGIN
SA:=S/K;
WRTELN(‘SA=‘,SA:12:4); END; END.
3. Задан массив. Расставьте все элементы по убыванию.
При сортировке по убыванию ищется и переставляется наибольшее значение массива. Другие алгоритмы сортировки приведены в приложении.
PROGRAM PR;
USES CRT;
CONST N=18
VAR X:ARRAY[1..N] OF INTEGER;
I,K,R,MAX,IMAX:INTEGER;
BEGIN
CLRSCR;
WRITELN(‘Введите элементы массива X’);
FOR I:=1 TO N DO READ(X[I]);
{Сортировка}
FOR K:=1 TO N-1 DO
BEGIN { K количество перестановок}
MAX:=X[K]; IMAX:=K;
{IMAX порядковый номер максимального элемента }
FOR I:=K+1 TO N DO
BEGIN
IF X[I]>MAX THEN
BEGIN
MAX:=X[I];
IMAX:=I;
END; END;
{R вспомогательная переменная}
{Перестановка элементов}
R:=X[K];
X[K]:=MAX;
X[IMAX]:=R;
END;
WRITELN;
WRITELN(‘Упорядоченный массив’);
FOR I:=1 TO N DO WRITE(X[I],’ ‘) ;
END.
Варианты заданий
Дан массив С(10). Найдите отношение S/P, где , а .
Дан массив А(n). Найдите сумму положительных элементов массива.
Дан массив В(n). Определите количество отрицательных элементов массива.
Дан массив А(20). Все отрицательные элементы массива замените на их квадраты. Остальные элементы оставьте без изменения.
Дан массив С(m). Найдите среднее арифметическое положительных элементов массива.
Даны два целочисленных массива: М(10) и К(10). Проверьте совпадение соответствующих элементов массивов. Если они совпадают, то выведите совпадающее значение, если не совпадают, то сделайте соответствующее сообщение.
Дан массив А(m). Найдите минимальный элемент массива и его индекс.
Дан массив Т(n). Подсчитайте количество элементов массива, которые по модулю меньше 1.
Дан массив целых чисел А(12). Найдите количество и сумму тех элементов данного массива, которые делятся на 5 и не делятся на 7, т.е. исключите, например, элемент со значением 35.
Дан массив А(20). Получите удвоенную сумму всех положительных элементов массива.
Дан массив В(n). В массиве все отрицательные элементы увеличьте на 0,5, а все неотрицательные замените на 0,1.
Найдите сумму элементов одномерного массива размером n. Разделите каждый элемент исходного массива на полученное значение. Результат получите в том же массиве.
Решите уравнение АХ = В для пяти пар значений А и В, заданных в виде двух массивов. Результат поместите в массив Х.
Вычислите скалярное произведение векторов (одномерных массивов) Х(8) и Y(8). Скалярное произведение вычисляется по формуле .
Определите среднее значение элементов массива Х(20). Найдите индекс элемента массива, наиболее близкого к среднему значению.
Задан массив С(10). Сформируйте два массива из пяти элементов каждый, включая в первый массив элементы исходного массива с четными индексами, а во второй - с нечетными.
Дан массив А(n). Получите сумму положительных и отрицательных элементов массива.
Дан целочисленный массив С(n). Замените все элементы массива, большие семи, числом 7. Вычислите количество таких элементов.
Дан массив С(25). Получите массив В(25), который отличается от исходного тем, что все нечетные элементы удвоены.
При заданных массивах Х(10) - абсцисс, Y(10) - ординат точек плоскости XOY , подсчитайте, сколько из них находится в пределах круга с заданным радиусом R и центром в начале координат (0,0).
При заданных массивах Х(15) - абсцисс, Y(15) - ординат точек плоскости XOY , определите, сколько из них находится в 1, 2, 3, 4 квадрантах (четвертях) плоскости.
При заданных массивах А(8), В(8) сформируйте массив С(8) по правилу Ci = max (Ai, Bi), i = 1, 2, ... , 8. Подсчитайте, сколько элементов Сi получили значение Ai.
Найдите наибольшее значение (Xi + Yi ) для массивов X(15) и Y(15).
Найдите и запишите вместо X(1) - наибольший элемент, а вместо X(2) - наименьший элемент массива Х(20).
Для массива А(n) вычислите наибольшее и наименьшее значения модуля разности между соседними элементами.