- •Методические указания
- •Выполнить реализацию и отладку программу на языке с одной программной функцией (ф-ей main());
- •Выполнить улучшение (унификацию) программы преобразовав отдельные сегменты кода в вызываемые (именованные) функции.
- •Методические указания
- •Методические указания
- •На панели инструментов содержатся следующие кнопки:
- •Методические указания
- •Общие сведения.
- •Представление системы на контекстном уровне.
- •Представление диаграммы на уровне подсистем.
- •На панели инструментов содержатся следующие кнопки:
- •Методология описания бизнес-процессов idef3
- •Синтаксис и семантика моделей idef3
- •Модели idef3
- •Диаграммы
- •Единица работы. Действие
- •Соединения
- •Указатели
- •Декомпозиция действий
- •Требования idef3 к описанию бизнес-процессов
- •Определение сценария, границ моделирования, точки зрения
- •Определение действий и объектов
- •Последовательность и параллельность
- •Задание на лабораторную работу
- •I приложение 1 Перечень стандартов, входящих в еспд
- •1. Общие положения
- •2. Описание схем
- •3. Описание символов
-
Выполнить реализацию и отладку программу на языке с одной программной функцией (ф-ей main());
Программный код, выполненный по данной схеме можно представить в виде следующей реализации единственной на языке C:
#include<cstdio> //подключение библиотек
#include<cmath> //подключение библиотек
#define MAXN 10000 //объявление константы
using namespace std;
int a[MAXN][MAXN],n,m,f=0; //объявление матрицы а, и
//вспомогательных переменных
int main() //начало главной функции программы
{
scanf("%d %d",&n,&m); //ввод переменных n и m (количество стром и //столбцев в матрице. при помощи оператора scanf задаётся значение с //консоли, переменным n и m, т.е. размеры для нашей матрицы)
//при помощи оператора scanf задаётся значение каждому //элементу //матрицы в ручную
for (int i=0;i<n;++i) //пересчет номера столбца матрицы (i)
for (int j=0;j<m;++j) //пересчет номера строки матрицы (j)
{
scanf("%d",&a[i][j]); // ввод элементов матрицы
}
for (int i=0;i<m;++i) //пересчет номера столбца матрицы (i)
{
f=1; //переменная для проверки условия (если равна 0, то столбец //содержит хотя бы 1 полож элемент, а если 1 то столбец без полож. элем.)
for (int j=0;j<n;++j) //пересчет номера строки матрицы (j)
if (a[j][i]>0) //проверка каждого элемента матрицы на знак
f=0; //присвоится 0 если положит. элем. найден
if (f==1) //проверка, найдена ли положительная переменная
//в данном столбце
{
for (int i1=0;i1<n;++i1) //пересчет номера строки матрицы (i1)
a[i1][i]=-a[i1][i]; //смена знаков для всех элементов столбца
//вывод на консоль преобразованной матрицы
for (int i1=0;i1<n;++i1) //пересчет номера столбца матрицы (i1)
{
for (int j1=0;j1<m;++j1) //пересчет номера строки матрицы (j)
{
printf("%d ",a[i1][j1] //вывод изменеенной матрицы
}
printf("\n"); //перенос на новую строку при выводе
}
return 0; //завершение функции main с передачей ей значения 0
}
}
//вывод в консоль старой матрицы
for (int i1=0;i1<n;++i1) //пересчет номера строки матрицы (i1)
{
for (int j1=0;j1<m;++j1) //пересчет номера столбца матрицы (i1)
{
printf("%d ",a[i1][j1]); //вывод матрицы, если в ней ничего не меняли
}
printf("\n"); //перенос на новую строку при выводе
}
return 0; //завершение функции main с передачей ей значения 0
}
-
Выполнить улучшение (унификацию) программы преобразовав отдельные сегменты кода в вызываемые (именованные) функции.
Выделим в данном коде сегменты, которые можно (целесообразно) преобразовать в отдельные функции (см. схему, выделенные сегменты кода). Обоснование выделения 3-х отдельных функций, на представленной ниже схеме прогрраммы:
-
1-й овал содержит код заполнения матрицы вводимыми данными;
-
2-й овал содержит код преобразование значений матрицы;
-
3-й овал вывод значений преобразованной матрицы.
-
Ф-я main() определение границ массива, управление подчиненными функциями и код завершения работы программы.
Рис. 2. Предлагаемая унификация программы. Выделение 3-х вызываемых функций.
Задачи пунктов 5,6 и 7 предлагается выполнить самостоятельно.
Индивидуальные задания:
-
Найти номер последнего максимального элемента среди положительных элементов, начиная с первого элемента, большего заданного числа Т.
-
Найти минимальное значение среди элементов, меньших заданного числа В, и расположенных до первого элемента, большего заданного числа А1.
-
Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего заданного числа Т.
-
Найти максимальное значение среди отрицательных элементов, расположенных до первого элемента, равного Т.
-
Найти максимальное значение среди отрицательных элементов, расположенных до первого элемента, меньшего заданного числа Х.
-
Найти номер последнего максимального значения среди отрицательных элементов, расположенных правее элемента, равного Т.
-
Найти номер последнего минимального элемента среди элементов, меньших Т1 и расположенных до первого элемента, большего Т2.
-
Найти значение максимального элемента среди четных (по значению) элементов, расположенных до первого нечетного элемента.
-
Найти номер первого минимального элемента среди элементов, больших Т1 и расположенных правее первого элемента, равного Т2.
-
Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне [c,d] и расположенных до первого четного элемента.
-
Найти номер последнего минимального элемента среди четных положительных элементов, лежащих правее первого отрицательного элемента.
-
Найти номер последнего минимального элемента среди элементов, меньших Т1 и лежащих правее первого элемента, равного Т2.
-
Найти номер первого максимального элемента среди элементов, лежащих в диапазоне от ak до bk и расположенных правее первого положительного элемента.
-
Найти номер первого максимального значения среди отрицательных элементов, расположенных до первого элемента, равного Т.
-
Найти минимальное значение положительных элементов, расположенных правее первого элемента, кратного двум.
-
Найти номер первого минимального значения среди положительных элементов, расположенных правее первого элемента, равного нулю.
-
Найти значение максимального элемента среди элементов, кратных k1 и расположенных до первого отрицательного элемента.
-
Найти номер первого минимального элемента среди положительных элементов, расположенных до первого элемента, кратного пяти.
-
Найти минимальное значение положительных элементов, расположенных правее первого элемента, равного нулю.
-
Найти минимальное значение положительных элементов, расположенных до первого элемента, равного нулю.
-
Найти номер первого максимального значения среди отрицательных элементов, расположенных правее первого элемента, равного Т.
-
Найти номер первого максимального значения среди элементов, меньших a1 и расположенных правее первого элемента, кратного трем.
-
Найти максимальное значение среди отрицательных элементов, расположенных до первого элемента, равного Т.
-
Найти номер последнего максимального элемента среди элементов, лежащих в диапазоне [t1,t2] и расположенных до первого элемента с четным значением.
-
Найти номер последнего максимального значения среди нечетных (по значению) элементов, расположенных до первого четного элемента.
-
Найти номер первого максимального элемента среди положительных элементов, расположенных до первого отрицательного элемента.
-
Найти максимальное значение положительных элементов, расположенных правее первого элемента, кратного пяти.
ЛАБОРАТОРНАЯ РАБОТА №2
«Модели и парадигмы проектирования и программирования. Императивная парадигма. Структурное программирование».
Цели работы:
-
Освоит основы проектирования и разработки программных систем на основе:
-
Принципов модульного подхода;
-
Методологии структурного программирования;
-
Метода нисходящего (восходящего) проектирования и разработки программных средств (систем).
ЗАДАЧИ.
-
Ознакомиться с общей концепцией Императивной парадигмы программирования и основами структурного подхода в проектировании и программировании, принципами и методиками модульной разработки программных приложений, методологией и техниками структурного программирования и методами нисходящего и восходящего проектирования и программирования;
-
Выполнить проектирование системы, в соответствие со стандартами ЕСПД, на основе нисходящей технологии проектирования (сверху вниз) и/или восходящую (снизу вверх)), т.е. разработать схемы работы системы, представив выделенные функции в обобщенном, абстрактном (в виде заглушек) виде.
-
Разработать схемы работы отдельных программ-функций, согласовывая их вызовы из спроектированного ранее архитектурного решения.
-
Представить разрабатываемую систему набором 5-ти диаграмм, соответствующих стандарту ЕСПД.
-
Выполнить нисходящее программирование системы, фиксируя у преподавателя промежуточные программные решения.