Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Отчет по лабораторной работе



Результаты выполнения лабораторной работы должны быть сохранены в файлы и представлены для контроля преподавателю. Отчет по лабораторной работе должен содержать: цели и задачи работы, блок-схему алгоритма (если это требуется в задании к упражнению), распечатку исходного кода программ, исходные данные задачи и результаты ее решения.

Контрольные вопросы

1. Какие действия выполняются оператором перехода?

2. Зачем необходимо при отладке программы тестировать все ветви алгоритма?

3 Указать последовательность действий, выполняемых при организации циклических участков программы с заданным числом повторений.

4. Указать назначение и правила организации цикла.

5. Перечислить возможные способы организации цикла с заданным числом повторений в изучаемом языке программирования.

6. Указать отличия в организации циклов с заданным числом повторении и итерационных.

7. Какие средства языка целесообразно использовать для организации циклов с заданным числом повторений?

8. Указать, какие операторы составляют тело цикла.

9 В чем состоят преимущества использования операторов цикла в программах?


Лабораторная работа № 3
Обработка одномерных и многомерных массивов

Цель работы — овладение практическими навыками работы с массивами, особенностями их ввода и вывода, приобретение дальнейших навыков по организации программ циклической структуры с использованием приемов программирования.

 

 

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Объявление массива Массив, как и любая переменная программы, перед использованием должен быть объявлен в разделе объявления переменных. В общем виде инструкция объявления одномерного массива выглядит следующим образом: Имя: array [нижний_индекс..верхний_индекс] of тип имя – имя массива; array – зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива; нижний_индекс и верхний_индекс – целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива; тип – тип элементов массива.   Пример: temper: array[1..31] of real; коef: array[0..2] of integer; name: array[1..30] of string[25]; В общем виде инструкция объявления двумерного массива выглядит так: Имя: array[НижняяГраница1..ВерхняяГраница1, НижняяГраница2..ВерхняяГраница2] of Тип Имя – имя массива; array – слово языка Delphi, указывающее, что объявляемый элемент данных является массивом; НижняяГраница1, ВерхняяГраница1, НижпяяГраница2, ВерхняяГраница2 – целые константы, определяющие диапазон изменения индексов и, следовательно, число элементов массива; Тип – тип элементов массива.   Пример: itog: array [1..12, 1..6] of integer При объявлении массива удобно использовать именованные константы. Именованная константа объявляется в разделе объявления констант, который обычно располагают перед разделом объявления переменных. Начинается раздел объявления констант словом const. В инструкции объявления именованной константы указывают имя константы и ее значение, которое отделяется от имени символом «равно». После объявления именованной константы ее можно использовать в программе как обычную числовую или символьную константу. Ниже в качестве примера приведено объявление массива названий команд-участниц чемпионата по футболу, в котором используются именованные константы. Пример: const NT = 18; team: array[1..NT] of string[SN];   Для того чтобы в программе использовать элемент массива, надо указать имя массива и номер элемента (индекс), заключив индекс в квадратные скобки. В качестве индекса можно использовать константу или выражение целого типа, например: team [ 1]: = 'Зенит'; d: = koef[l]*koef[l]-4*koef[2]*koef[1]; ShowMessage(name[n+1]); temper[i]: = StrToFloat(Edit1.text); Если массив не является локальным, т. е. объявлен не в процедуре обработки события, а в разделе переменных модуля, то одновременно с объявлением массива можно выполнить его инициализацию, т. е. присвоить начальные значения элементам массива. Инструкция объявления массива с одновременной его инициализацией в общем виде выглядит так: Имя: array [нижний_индекс..верхний_индекс] of тип = (список); список – разделенные запятыми значения элементов массива. Пример: a: array[10] of integer = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0); Team: array[1..5] of String[10]=('Зенит', 'Динамо', 'Спартак', 'Ротор', 'СКА'); Операции с массивами Ввод (вывод) массива Под выводом массива понимается вывод на экран монитора (в диалоговое окно) значений элементов массива. Если в программе необходимо вывести значения всех элементов массива, то для этого удобно использовать инструкцию for. Пример: const NT = 5; var team: array[1..NT] of string[10] =('Зенит', 'Динамо', 'Ротор', 'Спартак', 'СКА' procedure TForml.ButtonlClick(Sender: TObject); var st: string; i: integer; begin for i: =l to NT do st: = st + IntToStr(i)+ ' '+ team[i] + #13; end;   Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива. Ввод осуществляется только поэлементно в цикле, подобно выводу. Любая обработка элементов массива также - в цикле, поэлементно.   Двумерные массивы Существует несколько способов объявления двумерного массива в Pascal. Мы уже умеем описывать одномерные массивы, элементы которых могут иметь любой тип, а, следовательно, и сами элементы могут быть массивами. Рассмотрим следующее описание типов и переменных: Пример описания двумерного массива Type Vector = array [1..5] of < тип_элементов>; Matrix= array [1..10] of vector; Var m: matrix; Мы объявили двумерный массив m, состоящий из 10 строк, в каждой из которых 5 столбцов. При этом к каждой i -й строке можно обращаться m [ i ], а каждому j -му элементу внутри i -й строки – m [ i, j ]. Определение типов для двумерных массивов можно задавать и в одной строке: Type Matrix= array [1..5] of array [1..10] of < тип элементов >; или еще проще: type matrix = array [1..5, 1..10] of < тип элементов>; Обращение к элементам двумерного массива имеет вид: M [ i, j ]. Это означает, что мы хотим получить элемент, расположенный в i -й строке и j -м столбце. Тут главное не перепутать строки со столбцами, а то мы можем снова получить обращение к несуществующему элементу. Например, обращение к элементу M [10, 5] имеет правильную форму записи, но может вызвать ошибку в работе программы. Основные действия с двумерными массивами Паскаля Все, что было сказано об основных действиях с одномерными массивами, справедливо и для матриц. Единственное действие, которое можно осуществить над однотипными матрицами целиком – это присваивание. Т.е., если в программе у нас описаны две матрицы одного типа, например, type matrix= array [1..5, 1..10] of integer; var a, b: matrix; то в ходе выполнения программы можно присвоить матрице a значение матрицы b ( a: = b ). Все остальные действия выполняются поэлементно, при этом над элементами можно выполнять все допустимые операции, которые определены для типа данных элементов массива. Это означает, что если массив состоит из целых чисел, то над его элементами можно выполнять операции, определенные для целых чисел, если же массив состоит из символов, то к ним применимы операции, определенные для работы с символами. Ввод двумерного массива. Для последовательного ввода элементов одномерного массива мы использовали цикл for, в котором изменяли значение индекса с 1-го до последнего. Но положение элемента в двумерном массиве Паскаля определяется двумя индексами: номером строки и номером столбца. Это значит, что нам нужно будет последовательно изменять номер строки с 1-й до последней и в каждой строке перебирать элементы столбцов с 1-го до последнего. Значит, нам потребуется два цикла for, причем один из них будет вложен в другой. Рассмотрим пример ввода двумерного массива с клавиатуры: Пример программы ввода двумерного массива с клавиатуры type matrix= array [1..5, 1..10] of integer; var a, : matrix; i, j: integer; { индексы массива } begin for i: =1 to 5 do {цикл для перебора всех строк} for j: =1 to 10 do {перебор всех элементов строки по столбцам} readln ( a [ i, j ]); {ввод с клавиатуры элемента, стоящего в i -й строке и j -м столбце} Двумерный массив можно заполнить случайным образом, т.е. использовать функцию random (N), а также присвоить каждому элементу матрицы значение некоторого выражения. Способ заполнения двумерного массива выбирается в зависимости от поставленной задачи, но в любом случае должен быть определен каждый элемент в каждой строке и каждом столбце. Вывод двумерного массива на экран. Вывод элементов двумерного массива также осуществляется последовательно, необходимо напечатать элементы каждой строки и каждого столбца. При этом хотелось бы, чтобы элементы, стоящие в одной строке, печатались рядом, т.е. в строку, а элементы столбца располагались один под другим. Для этого необходимо выполнить следующую последовательность действий (рассмотрим фрагмент программы для массива, описанного в предыдущем примере): Пример программы вывода двумерного массива for i: =1 to 5 do {цикл для перебора всех строк} begin for j: =1 to 10 do {перебор всех элементов строки по столбцам} write ( a [ i, j ]: 4); {печать элементов, стоящих в i -й строке матрицы в одной экранной строке, при этом для вывода каждого элемента отводится 4 позиции} writeln; {прежде, чем сменить номер строки в матрице, нужно перевести курсор на начало новой экранной строки} end;  

 

Динамические массивы.

Динамические массивы не имеют никакой предраспределенной памяти. Определяется только когда создан указатель. Размеры таких массивов должны быть установлены прежде, чем они будут использоваться. С помощью процедуры SetLength для таких массивов необходимо выделить динамическую память.

Например

SetLength(dynArray, 5);

устанавливает размер одномерного массива dynArray в 5 элементов. При этом будет распределена динамическая память под массив.
Все динамические массивы начинаются с индекса = 0.

Далее обработка элементов динамического массива программируется также как для статического массива.


Индивидуальные подмассивы многомерного динамического массива могут иметь различные измерения - они, конечно, являются отдельными массивами. После одной такой операции SetLength, на элементы набора массива уже можно ссылаться, даже при том, что остальная часть массива неопределена.

Задание для самостоятельной подготовки

1. Изучить:

— способы описания размеров массивов на языке программирования;

— способы ввода и вывода одномерных и многомерных массивов;

— реализацию на конкретном языке программирования приемов накопления суммы и произведения, запоминания результатов, нахождения наибольшего и наименьшего элементов в массивах.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тест для проверки программы.

Задание 1.

1. Обработать на ЭВМ одномерный массив в соответствии с вариантом задания, указанного в табл. 4.1.

2. Проверить правильность выполнения программы с помощью тестового варианта.

 

Таблица 4.1

Вариант задания Массив Действия Условия и ограничения
Х(100) Вычислить сумму и количество элементов массива Х
А (80) Вычислить среднее арифметическое значение элемента массива А
Х(70) Переписать элементы массива Х в массив Y и подсчитать их количество
В (50) Определить максимальный элемент массива В и его порядковый номер
С (40) Вычислить минимальный элемент массива С и его номер
D (80) Найти максимальный и минимальный элементы массива D и поменять их местами  
Y(20) Вычислить среднее геометрическое элемента массива Y
Z(30) Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z  

 

Таблица 4.1 Окончание

Вариант задания Массив Действия Условия и ограничения
N(50) Определить сумму элементов массива N, кратных трем
X(N) Вычислить сумму и количество элементов массива Х
A(N) Найти среднее геометрическое элементов массива А
X(N) Переписать в массив Y подряд положительные элементы массива Х
X(N) Переписать подряд в массив Y положительные и в массив Z отрицательные элементы массива Х
B(K) Определить максимальный элемент массива В и его порядковый номер
C(K) Определить минимальный элемент массива С и его порядковый номер

Задание 2.

1. Обработать на ЭВМ матрицу в соответствии с вариантом задания, указанного в табл. 5.1. Вывести на печать результаты и исходную матрицу в общепринятом виде.

2. Проверить правильность выполнения программы с помощью тестового варианта.

 

Таблица 5.1

Вариант задания Имя матрицы и размеры Действия Условия ограничения
А (10, 15) Вычислить и запомнить сумму и чис­ло положительных элементов каждого столбца матрицы. Результаты отпечатать в виде двух строк
А (N, M) Вычислить и запомнить суммы и числа элементов каждой строки мат­рицы. Результаты отпечатать в виде двух столбцов
В (N, N) Вычислить сумму и число элементов матрицы, находящихся под главной диагональю и на ней
С (N, N) Вычислить сумму и число положи­тельных элементов матрицы, находя­щихся над главной диагональю
D (К, К) Записать на место отрицательных элементов матрицы нули и вывести ее на печать в общепринятом виде
D(10, 10) Записать на место отрицательных элементов матрицы нули, а на место положительных — единицы. Вывести на печать нижнюю треугольную мат­рицу в общепринятом виде  
F (N, M) Найти в каждой строке матрицы максимальный и минимальный эле­менты и поместить их на место первого и последнего элемента строки соответ­ственно. Матрицу напечатать в обще­принятом виде
F(10, 8) Транспонировать матрицу и вы­вести на печать элементы главной диа­гонали и диагонали, расположенной под главной. Результаты разместить в двух строках  
N (10, 10) Для целочисленной матрицы найти для каждой строки число элементов, кратных пяти, и наибольший из полу­ченных результатов
N (10, 10) Из положительных элементов мат­рицы N сформировать матрицу М (10, КМАХ), располагая их в строках матрицы подряд, где КМАХ — макси­мальное число положительных эле­ментов строки матрицы N. Записать нули на место отсутствующих элемен­тов. Отпечатать обе матрицы в обще­принятом виде  
P(N, N) Найти в каждой строке наибольший элемент и поменять его местами с эле­ментом главной диагонали. Отпеча­тать полученную матрицу в общепри­нятом виде
R (К, N) Найти наибольший и наименьший элементы матрицы и поменять их местами
S (25, 8) Ввести исходные данные в первые 24 строки и первые 7 столбцов. Вы­числить среднее арифметическое зна­чение элементов каждой строки и записать его в 8-й столбец, а так­же среднее арифметическое каждого столбца и записать его в 25-ю строку. Отпечатать полученную матрицу в об­щепринятом виде  
T (N, M) Найти строку с наибольшей и наи­меньшей суммой элементов. Вывести на печать найденные строки и суммы их элементов
V(15, 10) Упорядочить по возрастанию эле­менты каждой строки матрицы. Отпе­чатать полученную матрицу в обще­принятом виде  

 

Контрольные вопросы

1. Что такое массив как структура данных?

2. Что указывается в операторе объявления статического массива?

3. Какой вид цикла, как правило, применяют при обработке элементов массива?

4. Как организовать работу со статическим массивом переменной размерности?

5. Указать основные правила организации вложенных циклов.

6. Указать способы выхода из внутреннего цикла.

7. Как организовать вывод матрицы в общепринятом виде?

8. Как организовать вывод нижней треугольной матрицы в общепринятом виде?

9. Как организовать ввод матрицы размером N x M элементов?


Лабораторная работа № 4
Программирование с использованием подпрограмм пользователя

Цель работы — овладение навыками алгоритмизации и программирования задач с использованием подпрограмм пользователя различных видов, овладение навыками написания подпрограмм и обращения к ним, использования параметров подпрограмм по значению и по ссылке.

Задания для самостоятельной подготовки

1. Изучить:

— правила записи подпрограмм различных видов и способов обращении к ним;

— способы передачи параметров в подпрограмму;

— правила записи программ, использующих подпрограммы различных видов;

— порядок выполнения программ, использующих подпрограммы.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи с использованием

А) подпрограммы-функции

Б) подпрограммы-процедуры.

4. Подготовить тестовый вариант программы и исходных данных.

 

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Подпрограмма – это логически завершенный компонент про-граммы. Подпрограмма представляет собой некоторую функцию об-работки информации, которая отображает конкретный набор аргу-ментов в некоторый набор результатов. Определение подпрограммысостоит из двух частей: спецификации и реализации. Спецификация (прототип) подпрограммы включает: тип подпрограммы: function (функция), procedure (процедура). function – подпрограмма явно возвращает только один результи-рующий объект данных; procedure – подпрограмма возвращает бо-лее одного значения или действия подпрограммы сводятся только кмодификации ее аргументов вместо возвращения результата; имя подпрограммы; формальные параметры: аргументы (порядок следования, типкаждого аргумента) и результаты (порядок следования, тип каждогорезультата). Реализация подпрограммы (тело подпрограммы) включает: описание локальных данных, используемых подпрограммой; операторы, задающие действия, которые должна выполнитьподпрограмма. Локальные данные и операторы инкапсулированы (спрятаны), такчто ни локальные данные, ни операторы по отдельности не доступныпользователю подпрограммы. Пользователь может только вызватьподпрограмму. В тело подпрограмм могут входить определения дру-гих (вложенных) подпрограмм. Вызывающая программа – программа (подпрограмма), котораяобращается к подпрограмме (вызывает подпрограмму). Оператор вызова – оператор вызывающей программы, с помо-щью которого она обращается к подпрограмме. Оператор вызоваподпрограммы содержит: имя подпрограммы; список фактических параметров. Фактические параметры – это элементы вызывающей программы(константы, переменные, массивы и др.), значения которых переда-ются в подпрограмму или возвращаются из нее. При вызове подпро-граммы значения фактических параметров присваиваются соответст-вующим формальным параметрам (типы фактических и формаль-ных параметров должны совпадать! ). Вызываемая программа – подпрограмма, к которой обращает-ся вызывающая программа. Вызываемая программа возвращает уп-равление вызывающей программе, которая продолжает свое выпол-нение с оператора, следующего за оператором вызова. Обмен информацией между вызывающей и вызываемой програм-мами может осуществляться с использованием глобальных данныхили передачей параметров. Глобальные данные Глобальные данные – это данные (константы, переменные, мас-сивы и др.), объявленные в начале программы и доступные в подпро-граммах и «главной программе» (основном блоке программы). Глобальные данные следует использовать только для передачиинформации от одной программы (подпрограммы) к другой. Напри-мер, одна подпрограмма формирует значения данных, а другая под-программа использует эти значения Способы передачи параметров Когда вызывающая программа обращается к подпрограмме, тре-буется связать фактические параметры вызывающей программы сформальными параметрами подпрограммы. Чаще всего применяютсядва подхода: либо фактический параметр вычисляется, и полученноезначение передается формальному параметру (передача значением); либо формальному параметру становится доступен адрес значенияфактического параметра (передача по ссылке). Передача значением В этом случае формальный параметр a обрабатывается в под-программе как локальная переменная, инициализируемая в началевыполнения подпрограммы значением соответствующего фактиче-ского параметра x. В операторе вызова фактическим параметром может быть: константа; переменная; выражение; функция. Значение фактического параметра при изменении соответст-вующего ему формального параметра не изменяется. Передача по ссылке В этом случае формальный параметр (описание параметра начинается со слова var) обрабатывается в подпрограмме как переменная, адрес которой есть адрес соответствующего фактического параметра. В операторе вызова фактическим параметром может быть только переменная. Любое изменение формального параметра есть изменение со-ответствующего ему фактического параметра. Функции Формат спецификации функции: function < имя> (< список формальных параметров> ): < тип результата>; Для возвращения результата функция должна содержать хотя быодин оператор присваивания следующего вида: < имя подпрограммы> : = < результат>; где результат – это вычисленное значение в подпрограмме (констан-та, переменная, элемент массива и другие элементы данных). Вызов функции включается в оператор языка Pascal. Пример вызова функции P(x): y: = P(x); {вызов P(x) в операторе присваивания} if P(x)> 0 then {вызов P(x) в операторах if и writeln } writeln(P(x)); В качестве примера рассмотрим описание и использование функ-ции power, которая возводит переменную base в степень exponent – function power( base, exponent: real): real; begin power: = exp( exponent ∗ ln(base)); {exp, ln – встроенные функции Pascal: exp (x) – ex, ln (x) – натуральный логарифм x } end; Вызов функции power может быть, например, таким: writeln(power(3, 5)); Процедуры Формат спецификации процедуры: procedure < имя> (< список формальных параметров> ); Входные параметры (аргументы) процедуры передаются значени-ем или по адресу, а выходные параметры (результаты) – по адресу. Вызов процедуры – это отдельный оператор, который содержитимя процедуры и список фактических параметров. Например: P(x); {это вызов процедуры P(x) } В качестве примера использования процедуры рассмотрим описа-ние и использование той же самой подпрограммы power. В этомслучае, наряду с аргументами base и exponent, которые передаютсяпо значению, необходимо добавить в спецификацию процедуры вы-ходной параметр (результат), который должен быть передан по ссыл-ке (в примере это pow). procedure power( base, exponent: real; var pow: real); begin pow: = exp( exponent ∗ ln(base)); end; Пример вызова процедуры power: power(3, 4, j); writeln(j); Передача массивов в качестве параметров В качестве примера будем использовать подпрограмму вычисле-ния суммы значений элементов одномерного массива.. Формальные параметры как массивы с фиксированными размерами В данном примере для описания типов параметров используетсязаранее определенный тип massiv с фиксированной размерностью. uses crt; const N=3; type massiv = array[1..N] of integer; function sum_1( x: massiv ): integer; var i: integer; sum: integer; begin sum: = 0; for i: = 1 to N do sum: = sum+x[i]; sum_1: = sum; end; var {main – главная программа } i: integer; a: massiv; begin clrscr; writeln('massiv a'); for i: =1 to N do readln(a[i]); writeln('summa= ', sum_1(a)); end.Формальные параметры как массивы со «свободными» размерами Существует несколько возможностей передавать массивы в под-программу, не указывая их размеры. В языке Pascal для этого можноиспользовать функции low, high и sizeof. Использование функцийlow, high и sizeof требует подключения модуля crt. Функции low и high возвращают соответственно наименьшее инаибольшее значение индекса массива. Функция sizeof возвращает размер объекта данных в байтах. Обратите внимание, что в данных примерах описание размеровфактического массива a начинается с 0. Передача подпрограммы как параметра Если необходимо передать в качестве фактического параметраимя подпрограммы, то соответствующий ему формальный параметрдолжен иметь процедурный тип, соответствующий прототипу под-программы. В качестве примера рассмотрим программу, которая строит таб-лицу сумм и произведений целых чисел. Для построения таблицыиспользуется процедура PrintTable, которая для вычисления значе-ния таблицы вызывает функцию add (вычисление суммы) или функ-цию Multiply (вычисление произведения). Имя вызываемой функциипроцедура получает как параметр Operation. В программе описание процедурного типа имеет вид type Func = function (x, y; integer): integer; Спецификация подпрограммы, имя которой используется в каче-стве параметра, должна содержать ключевое слово far («дальний вы-зов»). Это указание необходимо компилятору для правильной гене-рации исполняемой программы. Рекурсивные подпрограммы Слово рекурсия происходит от латинского слова «recursio» – воз-вращение. В программировании рекурсия означает, что подпрограмма обра-щается сама к себе непосредственно или через цепочку вызовов дру-гих подпрограмм.

Задание

 

Таблица 6.1

Вариант Условия задачи Примечания    
Вычислить наибольшие корни квадратных уравнений Все корни дейст­вительные вычислять в подпрограмме      
Подсчитать число точек, находящихся внутри круга радиусом г с центром в начале координат; координаты заданы массивами Х(100), Y(100)   Расстояние до точки от начала координат вычислять в подпрограмме    
Определить периметры треугольников, заданных координатами их вершин ХА (3), ХВ (3), ХС (3) YA (3), YB (3), YC (3) Длину стороны треугольников вы­числять в подпро­грамме    
Вычислить , где v1, v2, v3 – объемы шаров с радиусами r1, r2, r3 соответственно vi вычислять в подпрограмме    
Вычислить суммы положительных элементов массивов X (N), Y (M), Z (K)    
Вычислить среднее арифметическое положительных элементов для массивов A (N1), B (N2), C (N3)    
Подсчитать количество отрицательных элементов матриц X (10, 15) и Y (20, 12) Количество отрицательных элементов матрицы вычислять в подпрограмме    
Вычислить суммы положительных элементов каждой строки для матриц A (5, 4) и B (3, 6)   Сумму положительных элементов строки матрицы вычислять в подпрограмме    
Вычислить , где xm1 и xm2 - наименьшие элементы массивов X1 (70), X2 (80) Наименьший элемент одномерного массива вычислять в подпрограмме    
Вычислить , где s1 и k1 сумма и количество положительных элементов массива Х(N); s2 и k2 сумма и количество положительных элементов массива Y (M) Сумму и количество положительных элементов массива- в подпрограмме  
 
Вычислить , где s1 и k1 сумма и количество отрицательных элементов массива Х(100); s2 и k2 сумма и количество отрицательных элементов массива Y (80) Вычислять в одной подпрограмме s и k  
 
Вычислить и запомнить суммы положительных элементов каждой строки матрицы А (10, 20), В (15, 10) Сумму положительных элементов строки -в подпрограмме    
Вычислить , где x1 и x2 – корни уравнения , y1 и y2 - В подпрограмме-все действительные корни  
Найти наибольшие элементы и их порядковые номера массивов Х (N) и Y (М) Наибольший элемент массива и его порядковый номер вычислять в подпрограмме  
Переписать положительные элементы массива Х(100) и Y (80) в массив Z подряд Запись в массив Z осуществлять в подпрограмме  
Найти наименьшие элементы и номера строк и столбцов, в которых они расположены, для матриц А (10, 15) и В (15, 12) Наименьшие элементы и номера строк и столбцов- в подпрограмме  
Вывести на печать элементы целочисленных матриц N (5, 8) и М (10, 6), кратные трем Кратность трем определять в подпрограмме  
Вычислить , где xi и yi заданы массивами Все суммы вычислять с использованием подпрограммы  
Вычислить , где xmax – максимальный элемент массива Х (50); ymin – минимальный элемент массива Y (40) xmax и ymin вычислять в подпрограмме  

 

2. Проверить правильность выполнения программы с помощью тестового варианта исходных данных.

3. Составить блок-схему алгоритма задачи с любым вариантом подпрограммы.

Контрольные вопросы

1. Указать, при каких условиях целесообразно использование подпрограмм, какие выгоды они предоставляют пользователю.

2. Указать, в чем отличие различных видов подпрограмм пользователя.

3. Указать способы обращения к подпрограммам пользователя.

4. Указать способы передачи параметров в подпрограмму.

5. Указать, как организовать подпрограмму без параметров.

6. Перечислить, как согласуются формальные и фактические параметры.

7. Указать конструкции, которые могут быть формальными и фактическими параметрами.


Лабораторная работа № 5
Обработка файловых структур данных

Цель работы — овладение навыками алгоритмизации и программирования файловых структур данных; проектирование структуры файла, вывод данных в файл, чтение данных из файла.

Задания для самостоятельной подготовки

1. Изучить:

— основную терминологию, связанную с файловыми структурами данных: файл и его структура, физическая и логическая записи, методы доступа, форматные и бесформатные записи, запись конца файла для файлов с последовательным доступом;

— возможности языка программирования по обработке файла с последовательной организацией: запись данных в файл, чтение из файла, добавление записей в файл, корректировка записей и т. п.

— возможности языка программирования по обработке типизированного файла.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тестовый вариант программы и исходных данных.

 

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ


Поделиться:



Популярное:

  1. АНАЛИЗ СТРУКТУРЫ И ДИНАМИКИ БАЛАНСОВЫХ ДАННЫХ БАНКА СОГЛАСНО ДЕЙСТВУЮЩИМ ФОРМАМ ПУБЛИКУЕМОЙ ОТЧЕТНОСТИ
  2. Анализ финансовой отчетности ОАО «Волжский трубный завод».
  3. Аудит бухгалтерской отчетности
  4. Аудит отдельных форм бухгалтерской отчетности
  5. Аудит расчетов с поставщиками, покупателями, дебиторами и кредиторами, подотчетными лицами
  6. Аудиторская проверка организации системы бухгалтерского учета и отчетности и соблюдения принципа непрерывности деятельности
  7. Бланки документов строгой отчетности в туризме
  8. Бухгалтерская отчетность - информационная отчетность финансового менеджмента.
  9. БУХГАЛТЕРСКОЙ ФИНАНСОВОЙ ОТЧЕТНОСТИ
  10. Бхагаван, не могли бы Вы рассказать что-либо о Вашей внешней и Вашей внутренней работе?
  11. В качестве приложения к курсовой работе может быть баланс предприятия (Ф. №1), отчет о прибылях и убытках (Ф. №2) и справки к ним.
  12. В курсовой и выпускной и выпускной работе применяются только затекстовые и подстрочные ссылки. В затекстовых ссылках – полное библиографическое описание книги, в подстрочных – краткое.


Последнее изменение этой страницы: 2017-03-11; Просмотров: 1132; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.052 с.)
Главная | Случайная страница | Обратная связь