Генерация массива и сортировка

Автор работы: Пользователь скрыл имя, 14 Декабря 2013 в 23:51, доклад

Краткое описание

Программа должна быть защищена от ввода недопустимых данных, которые могут привести к сбою программы. Должны контролироваться:
- все вводимые с клавиатуры данные (размеры массивов, значения переменных и т.д.);
- наличие файлов исходных данных на диске (если таковые используются);
- наличие обрабатываемых данных (например, нельзя пытаться выводить еще не сформированный массив).
В этом задании предполагается решение следующих задач:
- формирование массива Х;
- формирование массива Y как функции Y(X);
- выполнение некоторых действий над массивом Y, вследствие чего получается новый массив YN;
- вывод результата - массивов X,Y и YN - в форме таблицы.

3

Содержание

1. Задание .........................................................................................................3
2. Введение ..............................................................................................................6
3. Описание применения .......................................................................................7
3.1. Назначение программы ...............................................................................7
3.2. Структура программы ..................................................................................8
3.3. Входные данные ...........................................................................................9
3.4. Выходные данные .......................................................................................10
3.5. Алгоритм работы программы ....................................................................11
4. Руководство пользователя ...............................................................................13
5. Руководство программиста...............................................................................15
6. Заключение ........................................................................................................16
Список литературы ............................................................................................17

Вложенные файлы: 1 файл

записка паскаль.docx

— 182.70 Кб (Скачать файл)

 

 

 

 

 

 

 

 

 

 

                                                      10 

3.5.АЛГОРИТМ РАБОТЫ ПРОГРАММЫ

 

Изначально  программа запускает бесконечный  цикл while . В этом цикле , с помощью операторов Write , ведётся диалог с пользователем ( меню) . Тоесть программа предлагает пользователю нажать соответствующие клавиши на клавиатуре для выполнения какого-либо действия . Например , для формирования массивов пользователю предлагается нажать клавишу F2 – после того , как пользователь сделал выбор(нажал клавишу) - переменной типа Сhar присваивается оператор Readkey , который записывает код той клавиши , которую нажал пользователь в переменную типа Сhar. После того , как переменная типа Сhar была проинициализирована -  программа, при помоши оператора Case , анализирует переменную . Есле переменная содержит символы « #59 » (Клавиша F1) то программа запускает процедуру  V , которая запрашивает у пользователя ввести исходные данные , а именно : ввести значение первого елемента массива , ввести значение последнего елемента массива – после чего запускается цикл While , который будет запрашивать ввод размера массива до тех пор , пока пользователь не введет значение больше 20 . Есле пользователь выполнил условие цикла , то процедура прекращается , и управление передается в начало бесконечного цикла While , который ведёт диалог с пользователем (меню).

 Далее  , есле пользователь выбрал иной  пунк меню(проинициализировал переменную  типа Сhar значением « #60 »(клавиша F2)) то запускаются сразу 3 процедуры последовательно , первой запускается процедура massiv_x , которая формирует массив x с помощью одного цикла , по закону x[i] := a + (i-1) * dx ,

Дальше первому  и последнему елементу массива –  присваиваются значения A,B (х[1]:=a, x[n]:=b)  - дальше процедура заканчивается и компилятор запускает вторую процедуру massiv_y , которая формирует массив у . В процедуре massiv_y используется цикл , который присваивает i-му елементу массива у угол sin i-го елемента массива х и умножает угол на 10 . Далее запускается процедура massiv_yn , которая формирует масив yn . В этой процедуре используется 2 цикла и еше одна процедура . Первый цикл заполняет массив YN только положительными числами массива У ( j:=1; for i:=1 to n do

Begin if(y[i] > 0) then yn[j] := y[i]; j:=j+1;end;) . Второй цикл заполняет массив YN отрицательными числами (for i:= j to n do Begin if(y[i] < 0) then yn[j] := y[i]; j:=j+1;end;) . После чего из процедуры massiv_y запускается процедура find_max_min , которая использует 2 цикла , которые находит максимальный и минимальный елемент массива у – дальше процедура заканчивается , и управление вновь передается в процедуру massiv_y ,которая ,в свою очередь, передает управление в начало бесконечного цикла While , который ведет диалог с пользователем (меню).

     Есле пользователь выбирает пункт  меню ( клавиша F3) , то компилятор  запускает процедуру rezult , которая  выводит исходные данные в  верху икрана ,

 

                                                  11

 

ниже процедура  формирует таблицу  и в цикле  от 1-го до 24 и используя оператор GotoXY(1,y); y:= y +1 - выводит значения всех трех массивов ( х.у.уn) , есле елемент y[i] соответствует переменной max или min ( которые были инициализированы в процедуре find_max_min) то елемент массива у подсвечивается с помошью оператора textcolor , дальше цвет текста устанавливается в исходный (white)и цикл продолжается , есле y d cтановится равен  24 (следовательно таблица не помешается на экран ) компилятор выводит сообшение (write('нажми любую клавишу для продолжения'); и используется оператор Readkey; ,после того , как пользователь  нажал какую-то клавишу , переменной Y:= 8 и елементы массива вновь печатаются сначала таблицы до тех пор , пока переменная i не станет равна переменной n ( размер массива ) есле i = n тогда цикл завершается- компилятор выводит сообшение о том , что таблица сформирована полностью и предлагает ввести любую клавишу для продолжения ( для выхода в главное меню ) .

     Выход из бесконечного цикла(из  самой программы ) осуществляется  после того , как пользователь  нажмет клавишу ESC. Таким образом , после того , как оператор СASE который находится в бесконечном цикле (который осуществляет диалог с пользователем ( меню)) , распознал переменную типа Сhar , которая содержит код клавиши ESC (#27) компилятор использует оператор Exit , который немедленно завершает работу программы .

В операторе  Сase также предусмотрен иной вариант , когда пользователь ввводит ту клавишу , которая не привязана к выполнению того или иного действия . Есле же пользователь всё-таки нажал клавишу , которая не предусмотрена в Сase – компилятор выводит предупреждение (GotoXY(1,25); Write('Неверно введена клавиша , повторите попытку '); и управление снова передается в начало бесконечнечного цикла While .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                        12

                                  4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

 

Для запуска  программы maska необходимо запустить файл maska.exe после чего вы увидите :

  1. Главное меню

Рис.1 –  «Главное меню»

         В главном меню вам предлагается выбрать подпункт для выполнения той  или иной процедуры :

Выбор следует  подтвердить нажатием клавиши Enter(есле вы используете кливишу , стрелку в низ ).

 

     Внимание!!!! Пункты меню 1,2,3 ( ввод исходных данных,формирование массивов , и вывод результата) – следует выбирать последовательно начиная с ввода исходных данных , есле же не придерживаться этих правил – программа может выдать ошибку и завершиться .

 

   -   Для ввода исходных данных ( благодаря которым будут формироваться массивы) вам нужно нажать клавишу F1. После того , как вы выбрали этот пункт меню , вам нужно ввести исходные данные (подробней о них можно почитать в справке , 5-й пункт меню ) также , программа предупредит вас , что исходный размер должен быть больше 20 , есле вы проигнорируете это требование , то программа вновь выведет запрос – так будет продолжаться до тех пор , пока вы не выполните условия которые описаны вверху .  Есле вы выполните требования программы , то перед вами вновь появится меню , в котором вы сможете выбрать любое другое действие ( или повторить ввод исходных данных заного ).

         -  Для  запуска процедуры формирования  массивов (которые будут представлены  в пункте меню « Вывод результата») вам нужно нажать клавишу

F2 после чего вы увидите бегушую   строку , которая будет сигнализировать 

                                                                  13

том , что программа выполняется  и масив формируется . После того , как массивы сформируются , перед вами вновь появится исходное меню , в котором вы можете выбрать последующие действия .

 

 

 Рис.2 – «Формирование массива»

            Для вывода результата на экран  в виде таблице , вам нужно  нажать клавишу F3( или выбрать при помощи стрелки в низ третий пунк меню и подтвердить клавишей Enter.)  . Чтобы отобразить след. Часть таблицы или выйти в меню( есле таблица полностью сформирована) вам следует нажать любую клавишу ( как видно на рисунке ниже , программа подскажет вам что делать ).

      

                                                                14 
                                     5.  РУКОВОДСТВО ПРОГРАММИСТА

      Для того , чтобы посмотреть исходный код моей программы – вам нужно открыть файл Masca.bac ( при помоши компилятора Pascal или обычного текстового блокнота )

      Для понимания  я прокомментировал все элементы программы ( переменные, процедуры и т.д)

      В моей программе содержатся 7 процедур :

           - Mainshow (вывод на экран информацию о программе,справку)

           - V ( запрос исходных данных)

           - Rezult (Выводит результаты 3х массивов в таблице)

           - FindMAXmix (находит максимальное и минимальное значение

Массива у )

           - MassivY(формирует массив у при помоши массива х и процедуры sin)

           - MassivX(формирует массив благодаря исходным данным)

           - MassivYN(формирует массив УN из массива У)

    Т.К все переменные , которые  используются в программе глобальные ( тоесть описаны  в самом  начале программы ) то все процедуры  видят их и работают с ними  напрямую ( благодаря этому , я  не указывал типы , и имена переменных , которые принимают процедуры)

     Вы можете переделать  программу используя функции  , которые будут работать с  теми , значениями ( и даже с теми , типами ) которые вы укажите ( передадите в функцию) .

    Также в моей программе  используются бесконечные циклы  While , которые  вы можете изменить на циклы Until Repeat , либо использовать рекурсию .

    Большой недоработкой  этой программы , является то , что все пункты меню программы  следует вызывать последовательно  ( запись исходных данных -> формирования  массива -> вывод результа) если  пользователь захочет выбрать  сначала формирования массива  – то программа выдаст ошибку  и завершит работу ( т.к  в  моей программе используются  динамические массивы и их  размеры не были установлены  ) Чтобы предотвратить эту ошибку  – вам следует поставить заглушки , которые не будут позволять  пользователю выбрать последующий  пункт меню не посетив предыдущего  ( для этого нужно объявить переменную и присваивать ей значение по номеру выбранного меню , а дальше проверять её . Например ,  изначально присвоить переменной а единицу , дальше при вызове второго пункта меню проверить , является ли а единицей , есле да , то присвоить переменной а значение 2 , и выполнить действие , есле не является , то вывести уведомление для пользователя и использовать оператор Соntinue ).

          

 

 

                                                         15

                                    6.ЗАКЛЮЧЕНИЕ

В результате выполненной работы была разработана  программа, позволяющая самостоятельно формировать массивы по определённым параметрам и законам и выводить их на монитор в табличном виде.

Программы была выполнена на языке Turbo Pascal в интегрированной среде разработки Free Pascal IDE.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                  16 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Решение задач средствами языка  Turbo Pascal7.0.: А.Н.Моргун – Москва, Юниор, 2002г. – 216 с.

2. [cyberforum.ru] - http://www.cyberforum.ru/pascal/thread133142.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                         17

                                                                   


Информация о работе Генерация массива и сортировка