ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Взаємодія основних частин ЕОМ при виконанні програми
         

     

    Комп'ютерні науки

    Завдання на курсову роботу
    Розробити навчальну програму на тему "Взаємодія основних частин ЕОМ при виконанні програми".
    Керівник:
    Реферат
    Пояснювальна записка до курсової роботи містить 22 аркуша формату А4, 2 малюнки, 1 спожитий джерело, 1 додаток.
    ПРОГРАМА ДЛЯ ЕОМ, ПАСКАЛЬ, алгоритмічні мови, ПРОГРАМУВАННЯ, ІНФОРМАТИКА.
    Метою курсової роботи є розробка програми для ЕОМ середньої складності із зручним для користувача інтерфейсом.
    Це досягається шляхом проектування, розробки та налагодження на мові Паскаль навчальної програми на тему: «Взаємодія основних частин ЕОМ при виконанні програми».
    Наведено блок-схема процедури для виводу головного меню. У додатку наведено початковий текст програми на Turbo Pascal.





    Введення
    Метою курсової роботи є розробка програми для ЕОМ середньої складності зі зручним інтерфейсом на мові програмування Паскаль.
    Блок - схема процедури «MainMenu» (виведення на екран головного меню)








































    Опис програми
    1. Призначення
    Дана програма показує і навчає, як взаємодіють основні частини ЕОМ при виконанні програми.
    Програма написана на мові Turbo Pascal [1] для персональних ЕОМ, сумісних з IBM PC, і операційною системою MS DOS.
    2. Запуск програми
    Перебуваючи в каталозі з програмою, у відповідь на підказку DOS набрати computer.exe і натиснути клавішу Enter. Вихід з програми при натисненні клавіші Esc.
    3. Робота з програмою
    Після запуску програми на екрані з'являється головне меню вибору:



    Вибір пунктів меню здійснюється за допомогою курсорні клавіш Вгору, Вниз і натиснення клавіші Enter для запуску потрібної частини програми. Для виходу з програми досить натиснути клавішу Esc або вибрати в меню опцію з написом «Esc - Вихід».
    3.1 Вибір пункту меню «Навчання»
    Навчальна частина програми має вигляд:

    Внизу екрана знаходяться функціональні клавіші
    Допомога (F1), Назад (?), Вперед (?), Вихід (Esc):
    Допомога (F1) - отримати довідку,
    Назад (?) - Повернутися назад,
    Вперед (?) - Вивести таку інформацію,
    Вихід (Esc) - вийти з навчання.



    3.2 Вибір пункту меню "Перевірка знань»
    Тест має вигляд:

    Вибір відповіді здійснюється клавішами 1, 2 і 3. При необхідності вийти можна натиснути клавішу Esc і вийти з тіста.


    По закінченні тесту виводиться вікно підсумку, яке має вигляд:

    Висновок
    У курсовій роботі була спроектована, розроблена і налагоджена на мові програмування Паскаль навчальна програма на тему: «Взаємодія основних частин ЕОМ при виконанні програми».
    Програма має зручний для користувача інтерфейс і можливістю перегляду графічного зображення процесів що проходять в ЕОМ при виконанні програми.
    Список використаних джерел
    1. Марченко А.І. Програмування в середовищі Turbo Pascal 7.0. Навчальний посібник. - К.: ВЕК +, М.: ДЕССА, 1999. - 496 с.




    Додаток А. Оригінальний текст програми
    program LEAN_Ecm;

    uses Crt, Graph, Sm_Graph, Sm_Const;
    {-------------------} (Uses)

    var
    I: Integer;
    FuncKeyWindow: array [1 .. 3] of TImage; (Масив картинок функціональних клавіш)
    Temp: array [1 .. 2] of TImage; (Масив допоміжний)
    {-------------------} (Var)

    procedure BildWin;
    const
    TxtCol: Word = Red; (Колір тексту)
    RTACol: Word = Yellow; (Колір прямокутників)
    BACCol: Word = Black; (Колір фону)
    (Малюємо головну картинку)
    begin
    SetBkColor (BACCol);
    SetColor (BRDCol);
    Rectangle (X0, Y0, X0 + 385, Y0 + 300);
    Rectangle (X0, Y0 + 305, GetMaxX - X0, YS - 5);
    SetColor (MemCol);
    (Осередки пам'яті)
    SetLineStyle (1, 0, 0);
    for I: = 1 to 4 do (Осередки пам'яті)
    begin
    Line (X0 + 130 + 16 * I, Y0 + 120, X0 + 130 + 16 * I, Y0 + 200);
    Line (X0 + 130, Y0 + 120 + 16 * I, X0 + 210, Y0 + 120 + 16 * I)
    end;
    (CPU)
    SetColor (CPUCol);
    MoveTo (X0 + 83, Y0 + 203); (0)
    LineTo (X0 + 7, Y0 + 203); (1)
    LineTo (X0 + 7, Y0 + 117); (2)
    LineTo (X0 + 40, Y0 + 117); (3)
    LineTo (X0 + 40, Y0 + 45); (4)
    LineTo (X0 + 127, Y0 + 45); (5)
    LineTo (X0 + 127, Y0 + 27); (6)
    LineTo (X0 + 213, Y0 + 27); (7)
    LineTo (X0 + 213, Y0 + 73); (8)
    LineTo (X0 + 127, Y0 + 73); (9)
    LineTo (X0 + 127, Y0 + 55); (10)
    LineTo (X0 + 50, Y0 + 55); (11)
    LineTo (X0 + 50, Y0 + 117); (12)
    LineTo (X0 + 83, Y0 + 117); (12)
    LineTo (X0 + 83, Y0 + 203); (13)
    SetLineStyle (0, 0, 0);
    (Прямокутники)
    SetColor (RTACol);
    Rectangle (X0 + 10, Y0 + 120, X0 + 80, Y0 + 200); (УУ (ЦУУ))
    Rectangle (X0 + 55, Y0 + 120, X0 + 80, Y0 + 130); (КОП)
    Rectangle (X0 + 130, Y0 + 120, X0 + 210, Y0 + 200); (ОЗП)
    Rectangle (X0 + 130, Y0 + 30, X0 + 210, Y0 + 70); (АЛУ)
    Rectangle (X0 + 130, Y0 + 250, X0 + 210, Y0 + 290); (ВЗП)
    Rectangle (X0 + 260, Y0 + 120, X0 + 360, Y0 + 150); (У. Введення)
    Rectangle (X0 + 260, Y0 + 170, X0 + 360, Y0 + 200); (У. Висновку)

    (Підписи до прямокутника)
    SetColor (TxtCol);




     SetTextJustify (2, 0);
    OutTextXY (X0 + 80, Y0 + 200, 'УУ (ЦУУ )');< br /> OutTextXY (X0 + 80, Y0 + 130, 'PC');
    OutTextXY (X0 + 210, Y0 + 200, 'ОЗУ');
    OutTextXY (X0 + 210, Y0 + 70, 'АЛУ');
    OutTextXY (X0 + 210, Y0 + 290, 'ВЗП');
    OutTextXY (X0 + 360, Y0 + 150, 'У. Введення');
    OutTextXY (X0 + 360, Y0 + 200, 'У. Висновку');
    SetTextJustify (0, 0);
    (Стрілки Big)
    SetColor (ARBCol);
    SetFillStyle (1, FILCol);
    (Вид стрілки)
    CArrow: = BArrow;
    Arrow (X0 + 85, Y0 + 140, 40, 1); (ОЗП - УУ (ЦУУ))
    FloodFill (X0 + 90, Y0 + 140, ARBCol);
    Arrow (X0 + 150, Y0 + 75, 40, 3); (ОЗП - АЛУ)
    FloodFill (X0 + 150, Y0 + 80, ARBCol);
    Arrow (X0 + 190, Y0 + 115, 40, 4); (АЛП - ОЗУ)
    FloodFill (X0 + 190, Y0 + 110, ARBCol);
    Arrow (X0 + 150, Y0 + 205, 40, 3); (ВЗП - ОЗУ)
    FloodFill (X0 + 150, Y0 + 210, ARBCol);
    Arrow (X0 + 190, Y0 + 245, 40, 4); (ОЗП - ВЗП)
    FloodFill (X0 + 190, Y0 + 240, ARBCol);
    Arrow (X0 + 215, Y0 + 135, 40, 1); (У. Введення - ОЗУ)
    FloodFill (X0 + 220, Y0 + 135, ARBCol);
    Arrow (X0 + 255, Y0 + 185, 40, 2); (У. Висновку - ОЗУ)
    FloodFill (X0 + 250, Y0 + 185, ARBCol);
    (Стрілки Small)
    SetColor (ARSCol);
    (Вид стрілки)
    CArrow: = SArrow;
    Arrow (X0 + 125, Y0 + 180, 40, 2); (УУ (ЦУУ) - ОЗУ)
    Arrow (X0 + 125, Y0 + 270, 80, 2); (УУ (ЦУУ) - ВЗП)
    Arrow (X0 + 125, Y0 + 50, 80, 2); (УУ (ЦУУ) - АЛУ = КОП)
    Line (X0 + 45, Y0 + 115, X0 + 45, Y0 + 50); (1)
    OutTextXY (X0 + 70, Y0 + 60, 'КОП'); (2)
    (УУ (ЦУУ) - У. Вводи, У. Висновку)
    Line (X0 + 45, Y0 + 205, X0 + 45, Y0 + 295); (1)
    Line (X0 + 45, Y0 + 295, X0 + 380, Y0 + 295); (2)
    Line (X0 + 380, Y0 + 295, X0 + 380, Y0 + 135); (3)
    Arrow (X0 + 365, Y0 + 135, 15, 1); (in) (4)
    Arrow (X0 + 365, Y0 + 185, 15, 1); (out) (5)
    (Носик стрілок Small)
    SetColor (LightGreen);
    Arrow (X0 + 125, Y0 + 180, 0, 2); (1)
    Arrow (X0 + 125, Y0 + 270, 0, 2); (2)
    Arrow (X0 + 125, Y0 + 50, 0, 2); (3)
    Arrow (X0 + 365, Y0 + 135, 0, 1); (4)
    Arrow (X0 + 365, Y0 + 185, 0, 1); (5)
    SetColor (BRDCol);
    Rectangle (0, 0, GetMaxX, GetMaxY);
    end; (BildWin)
    {-------------------}< br />
    procedure BildContext;
    const
    TxtCol: Word = LightBlue;
    begin
    SetColor (BRDCol); (Встановлюємо колір кордону і малюємо її)
    Rectangle (XC, YC, GetMaxX - X0, YC + 300);
    SetTextJustify (1, 1);
    SetColor (TxtCol + 1); (Заголовок)
    OutTextXY (GetMaxX - (GetMaxX - X0 - XC) div 2 - X0, YC + 20, 'Розташування' +
    'на схемі :');< br />


     CArrow: = BArrow; (Стрілки)
    SetColor (ARBCol);
    SetFillStyle (1, Blue);
    Arrow (XC + 50, YC + 50, 40, 2);
    FloodFill (XC + 40, YC + 50, ARBCol);
    CArrow: = SArrow;
    SetColor (ARSCol);
    Arrow (XC + 50, YC + 80, 40, 2);
    SetColor (LightGreen);
    Arrow (XC + 50, YC + 80, 0, 2);
    SetColor (MemCol);
    SetLineStyle (1, 0, 0);
    Line (XC + 10, YC + 110, XC + 34, YC + 110);
    Line (XC + 10, YC + 126, XC + 34, YC + 126);
    Line (XC + 14, YC + 106, XC + 14, YC + 128);
    Line (XC + 30, YC + 106, XC + 30, YC + 128);
    SetColor (CPUCol);
    Line (XC + 12, YC + 150, XC + 30, YC + 150);
    SetLineStyle (0, 0, 0);
    SetColor (TxtCol);
    SetTextJustify (0, 1); (Значення)
    OutTextXY (XC + 60, YC + 50, '- Передача даних');
    OutTextXY (XC + 60, YC + 80, '- Сигнал управління');
    OutTextXY (XC + 60, YC + 120, '- Осередок пам'яті');
    OutTextXY (XC + 60, YC + 150, '- Цією лінією');
    OutTextXY (XC + 60, YC + 160, 'обведені частини');
    OutTextXY (XC + 60, YC + 170, 'що входять до складу');
    OutTextXY (XC + 60, YC + 180, 'процесора (ЦП )');< br /> OutTextXY (XC + 20, YC + 200, '? - Вміст файлу');
    OutTextXY (XC + 20, YC + 210, '1 - адреса першого операнда ');
    OutTextXY (XC + 20, YC + 220, '2 - адреса друга операнда ');
    OutTextXY (XC + 20, YC + 230, '3 - адреса результату ');
    SetTextJustify (0, 0)
    end; (Context)
    {-------------------}< br />
    procedure BildFuncKey;
    const
    StrFK: array [1 .. 4] of string [11] =
    ( 'Допомога F1', 'Назад', 'Вихід Esc');
    FkbCol: Word = Green;
    TxtCol: Word = LightCyan;
    begin
    SetColor (BRDCol);
    Rectangle (XS, YS, GetMaxX - XS, GetMaxY - XS);
    SetTextJustify (1, 1);
    SetFillStyle (1, DarkGray);
    for I: = 1 to 4 do
    begin
    SetColor (FkbCol); (Установка кольору кордону клавіш)
    Bar ((GetMaxX - XS * 2) div 5 * I - Length (StrFK [I]) * 4, YS + 7,
    (GetMaxX - XS * 2) div 5 * I + Length (StrFK [I]) * 4, YS + 23);
    Rectangle ((GetMaxX - XS * 2) div 5 * I - Length (StrFK [I]) * 4, YS + 7,
    (GetMaxX - XS * 2) div 5 * I + Length (StrFK [I]) * 4, YS + 23);
    SetColor (Black); (Встановлення кольору тексту клавіш)
    OutTextXY ((GetMaxX - XS * 2) div 5 * I + 2, YS + 15 - 2, StrFK [I]);
    SetColor (TxtCol);
    OutTextXY ((GetMaxX - XS * 2) div 5 * I, YS + 15, StrFK [I])
    end;
    SetTextJustify (0, 0);
    (Сахраняем картинки)
    FuncKeyWindow [1]. Get (XS, YS, GetMaxX - XS, GetMaxY - XS);
    SetFillStyle (1, GetBkColor);
    Bar ((GetMaxX - XS * 2) div 5 * 3 - Length (StrFK [I]) * 4, YS + 7,
    (GetMaxX - XS * 2) div 5 * 3 + Length (StrFK [I]) * 4, YS + 23);



     FuncKeyWindow [3]. Get (XS, YS, GetMaxX - XS, GetMaxY - XS);
    FuncKeyWindow [1]. Put (XS, YS);
    Bar ((GetMaxX - XS * 2) div 5 * 2 - Length (StrFK [I]) * 4, YS + 7,
    (GetMaxX - XS * 2) div 5 * 2 + Length (StrFK [I]) * 4, YS + 23);
    FuncKeyWindow [2]. Get (XS, YS, GetMaxX - XS, GetMaxY - XS)
    end; (FuncKey)
    {-------------------}< br />
    {+----------------------------------------------+}
    ()
    (Процедури виведення текстової інформації на екран)
    ()
    {+----------------------------------------------+}

    procedure Page_1;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    ClearViewPort;
    SetColor (Blue);
    OutTextXY (GetMaxX - X - 25, 100, '1 ');
    SetColor (TxtCol);
    MyText (0, 8, 'До початку роботи програми, вона знаходиться на ВЗП,' +
    'у вигляді файлу програми');
    MyText (0, 16, '(*. exe або *. com ).');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_1)
    {-------------------}< br />
    procedure Page_2;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    ClearViewPort;
    SetColor (Blue);
    OutTextXY (GetMaxX - X - 25, 100, '2 ');
    SetColor (TxtCol);
    MyText (0, 8, 'Після того як ЕОМ отримала команду на запуск' +
    'програми, вміст');
    MyText (0, 16, 'цього файлу поміщається в комірку ОЗУ, починаючи з' +
    'осередку з деяким');
    MyText (0, 24, 'стартовим адресою .');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_2)
    {-------------------}< br />
    procedure Page_3;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    ClearViewPort;
    SetColor (Blue);
    OutTextXY (GetMaxX - X - 25, 100, '3 ');
    SetColor (TxtCol);
    MyText (0, 8, 'Вміст комірки зі стартовим адресою програми' +
    '(Перший машинна команда )');< br /> MyText (0, 16, 'пересилається в УУ. УУ розшифровує перший машинну' +
    'команду і виробативает');
    MyText (0, 24, 'їй відповідні сигнали управління для всіх систем управління .');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_3)
    {-------------------}< br />
    procedure Page_4_1;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    ClearViewPort;


     SetColor (Blue);
    OutTextXY (GetMaxX - X - 25, 100, '4 ');
    SetColor (TxtCol);
    MyText (0, 8, 'Наприклад: якщо перший машинної командою виявилася' +
    'трьох адресної командою');
    MyText (0, 16, 'складання двох чисел, відбудуться наступні дії :');< br /> MyText (0, 24, '- УУ посилає перша і друга адреса в ОЗП');
    SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_4_1)
    {-------------------}< br />
    procedure Page_4_2;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);

    SetColor (TxtCol);
    MyText (0, 32, '- ОЗУ пересилає комірки з цими адресами в АЛП ,');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_4_2)
    {-------------------}< br />
    procedure Page_4_3;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    SetColor (TxtCol);
    MyText (0, 40, '- УУ відправляє сигнал управління (КОП) в АЛП ,');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_4_3)
    {-------------------}< br />
    procedure Page_4_4;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    SetColor (TxtCol);
    MyText (0, 48, '- АЛП виконує цю операцію (додавання) над двома' +
    'операндами і повертає');
    MyText (0, 56, 'результат в ОЗУ .');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_4_4)
    {-------------------}< br />
    procedure Page_4_5;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    SetColor (TxtCol);
    MyText (0, 64, '- УУ собщаєт ОЗУ третій адреса (адреса результату ),');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_4_5)
    {-------------------}< br />
    procedure Page_4_6;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    SetColor (TxtCol);
    MyText (0, 72, '- ОЗУ поміщає отриманий результат в комірку пам'яті .');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_4_6)
    {-------------------}< br />
    procedure Page_4_7;
    begin
    SetViewPort (X, Y, GetMaxX - X, YS - 10, ClipOn);
    SetColor (TxtCol);
    MyText (0, 80, 'На цьому виконання першого машинної команди' +
    'закінчується, відбувається');


     MyText (0, 88, 'перехід до наступної по порядку машинної команді.' +
    'Вміст комірки ОЗУ з');
    MyText (0, 96, 'адресою, наступним за стартових, пересилається в УУ' +
    'і все повторюється .');< br /> SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end; (Page_4_6)
    {-------------------}< br />
    {+------------------+}< br /> ()
    (Процедури анімації)
    ()
    {+------------------+}< br />
    procedure Move_1;
    begin
    BLink (150, 285, 'kurs.exe');
    end; (Move_1)
    {-------------------}< br />
    procedure Move_2;
    begin
    SetColor (Green);
    Animation (150, 285, -125, 2, '??', True)
    end; (Move_2)
    {-------------------}< br />
    procedure Move_3;
    begin
    SetColor (GetBkColor);
    SetColor (Green);
    Animation (100, 168, -70, 1, '1 2 +', True)
    end; (Move_3)
    {-------------------}< br />
    procedure Move_4_1;
    begin
    SetColor (GetBkColor);
    OutTextXY (30, 176, '1 2');
    SetColor (Green);
    Animation (47, 198, 63, 1, '1 2', False);
    SetColor (GetBkColor);
    OutTextXY (150, 168, '? ?');< Br /> SetColor (Green);
    OutTextXY (150, 168, 'a b')
    end; (Move_4_1)
    {-------------------}< br />
    procedure Move_4_2;
    begin
    SetColor (Green);
    Animation (150, 160, -95, 2, 'a b', True)
    end; (Move_4_2)
    {-------------------}< br />
    procedure Move_4_3;
    begin
    setcolor (getbkcolor);
    OutTextXY (30, 176, '+');< br /> SetColor (Green);
    Animation (52, 160, -94, 2, '+', False)
    end; (Move_4_3)
    {-------------------}< br />
    procedure Move_4_4;



    begin
    SetColor (Green);
    Animation (52, 66, 115, 1, '+', True);
    OutTextXY (183, 73, '= c')
    end; (Move_4_4)
    {-------------------}< br />
    procedure Move_4_5;
    begin
    SetColor (GetBkColor);
    SetColor (Green);
    Animation (47, 198, 63, 1, '3 ', False);
    end; (Move_4_1)
    {-------------------}< br />
    procedure Move_4_6;
    begin
    SetColor (Green);
    Animation (191, 66, 94, 2, 'c', True)
    end; (Move_4_5)
    {-------------------}< br />

    procedure Help; (Допомога)
    const
    XH: Integer = 70;
    YH: Integer = 70;
    begin
    ClearDevice;
    SetColor (BRDCol);
    Rectangle (0, 0, GetMaxX, GetMaxY);
    SetColor (LightCyan);
    SetTextJustify (1, 0);
    OutTextXY (GetMaxX div 2, YH + 10, 'Допомога :');< br /> SetTextJustify (0, 0);
    OutTextXY (XH + 10, YH + 20, 'Адреса :');< br /> OutTextXY (XH + 10, YH + 30, 'УУ :');< br /> OutTextXY (XH + 10, YH + 40, 'АЛУ :');< br /> OutTextXY (XH + 10, YH + 50, 'АЛУ + УУ :');< br /> OutTextXY (XH + 10, YH + 60, 'ВЗП :');< br /> OutTextXY (XH + 10, YH + 70, 'ОЗУ :');< br /> OutTextXY (XH + 10, YH + 80, 'УВвода :');< br /> OutTextXY (XH + 10, YH + 90, 'УВивода :');< br /> SetColor (Cyan);
    OutTextXY (XH + 90, YH + 20, 'номер елементу пам'яті');
    OutTextXY (XH + 90, YH + 30, 'пристрій керування');
    OutTextXY (XH + 90, YH + 40, 'арифметико-логічний пристрій');
    OutTextXY (XH + 90, YH + 50, 'процесор');
    OutTextXY (XH + 90, YH + 60, 'зовнішній запам'ятовуючий пристрій (hdd, fdd та ін )');< br /> OutTextXY (XH + 90, YH + 70, 'оперативний запам'ятовуючий пристрій');
    OutTextXY (XH + 90, YH + 80, 'пристрій введення');
    OutTextXY (XH + 90, YH + 90, 'пристрій виводу');
    _Pause
    end; (Help)
    {-------------------}< br />
    procedure MainWin;
    begin
    ClearDevice;
    BildWin;
    BildContext;
    BildFuncKey
    end; (MainWin)
    {-------------------}< br />



    procedure Play;
    {-------------}< br /> procedure SelectPage (N: Byte);
    begin
    case N of
    1: begin
    FuncKeyWindow [2]. Put (XS, YS);
    Page_1;
    Move_1
    end;
    2: begin
    FuncKeyWindow [1]. Put (XS, YS);
    Page_2;
    Move_2
    end;
    3: begin
    FuncKeyWindow [1]. Put (XS, YS);
    Page_3;
    Move_3
    end;
    4: begin
    FuncKeyWindow [3]. Put (XS, YS);
    Page_4_1;
    Move_4_1;
    Delay (Time_3 * 20);
    Page_4_2;
    Delay (Time_3 * 20);
    Move_4_2;
    Delay (Time_3 * 20);
    Page_4_3;
    Delay (Time_3 * 20);
    Move_4_3;
    Move_4_4;
    Page_4_4;
    Delay (Time_3 * 20);
    Page_4_5;
    Delay (Time_3 * 20);
    Move_4_5;
    Delay (Time_3 * 20);
    Page_4_6;
    Delay (Time_3 * 20);
    Move_4_6;
    Delay (Time_3 * 20);
    Page_4_7
    end
    end
    end; (SelectPage)
    {-------------}< br />
    const
    Back = # 75;
    Next = # 77;
    F1 = # 59;
    Esc = # 27;
    var
    ArrowsAndEsc: set of Char;
    ExtentedKey: Boolean;
    Flag: Boolean;
    CH: Char;
    N: Byte;
    begin
    ClearDevice;
    MainWin;
    N: = 0;


     ArrowsAndEsc: = [Back, Next, F1, Esc];
    repeat
    ExtentedKey: = False;
    Flag: = False;
    CH: = ReadKey;
    if CH = Esc then
    Flag: = True;
    if CH = # 0 then
    begin
    CH: = ReadKey;
    ExtentedKey: = True
    end;
    if ExtentedKey then
    case CH of
    Back: begin
    Dec (N);
    SelectPage (N);
    if N <1 then N: = 1>
    end;
    Next: begin
    Inc (N);
    SelectPage (N);
    if N> 4 then N: = 4
    end;
    F1: begin
    Temp [1]. Get (X0, Y0, X0 + 380, Y0 + 300);
    Temp [2]. Get (X0, Y0 + 305, GetMaxX - X0, YS - 5);
    Help;
    MainWin;
    Temp [1]. Put (X0, Y0);
    Temp [2]. Put (X0, Y0 + 305);
    if N
    FuncKeyWindow [2]. Put (XS, YS);
    if N = 4 then
    FuncKeyWindow [3]. Put (XS, YS)
    end
    end (Case)
    until Flag;
    ClearDevice
    end; (Play)
    {-------------------}< br />
    procedure TextT (Col: TColor; S: TText);
    begin
    SetTextJustify (1, 1);
    for I: = 1 to 4 do
    begin
    SetColor (Col [I]);
    OutTextXY (GetMaxX div 2, GetMaxY div 2 + I * 10 - 40, S [I])
    end;
    SetTextJustify (0, 0)
    end; (TextT)
    {-------------------}< br />
    procedure TestMode;
    {-----------------}< br /> function Quastion (N: Byte; var CH: Char): Byte;
    var
    I: Byte;
    C: Char;
    CHEAt: string [1];
    Code: Integer;
    StrN: string [3];
    Res: Byte;
    Begin


     CH: = # 0;
    SetColor (BRDCol);
    Rectangle (0, 0, GetMaxX, GetMaxY);
    SetColor (White);
    MyText (XT, YT, 'Питання #' + QuastionS [N]);
    SetColor (Yellow);
    for I: = 1 to 3 do
    begin
    if I = Ok [N] then
    Cheat: = V
    else
    Cheat: ='';
    MyText (XT, YT + 10 * I, Answer [N, I] + Cheat)
    end;
    repeat
    C: = ReadKey;
    if C = # 27 then
    begin
    SetTextJustify (1, 0);
    SetViewPort (1, GetMaxY - 100, GetMaxX - 1, GetMaxY - 1, ClipOn);
    SetColor (Red);
    OutTextXY (GetMaxX div 2, 10, 'Ви дійсно хочете вийти ?');< br /> SetColor (Green);
    OutTextXY (GetMaxX div 2, 30, 'Так (Y), Ні (N )');< br /> SetTextJustify (0, 0);
    C: = ReadKey;
    if C = 'y' then
    C: = # 27
    else
    begin
    C: = # 0;
    ClearViewPort
    end;
    SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn)
    end
    until C in ['1 ', '2', '3 ', # 27];
    if C # 27 then
    begin

    Val (C, Res, Code);
    if Res = Ok [N] then
    begin
    Quastion: = 1;
    SetColor (Green);
    MyText (GetMaxX div 2 - 20, GetMaxY - 200, 'ВЕРНО')
    end
    else
    begin
    Quastion: = 0;
    SetColor (Red);
    MyText (GetMaxX div 2 - 28, GetMaxY - 200, 'Неправильний')
    end;
    Delay (Time_2)
    end
    else
    CH: = C;
    ClearDevice
    end; (Quastion)
    {-----------------}< br />
    function Mark (Res: Byte): Char;
    begin
    case Res of
    1: Mark: = '1 ';
    2: Mark: = '2 ';


     3: Mark: = '3 ';
    4: Mark: = '4 ';
    5: Mark: = '5 ';
    else
    Mark: = '0 '
    end
    end; (Mark)
    {-----------------}< br />
    var
    I: Byte;
    Result: Byte;
    StrRes: string [2];
    TempS: TText;
    C: Char;
    begin
    C: = # 0;
    ClearDevice;
    Result: = 0;
    TempS: = EndofTest;
    for I: = 1 to 5 do
    begin
    if Quastion (I, C) = 1 then
    Inc (Result);
    if C = # 27 then Exit
    end;
    ClearDevice;
    SetColor (BRDCol);
    Rectangle (0, 0, GetMaxX, GetMaxY);
    Str (Result, StrRes);
    TempS [3]: = EndofTest [3] + StrRes;
    TempS [4]: = EndofTest [4] + Mark (Result);
    SetColor (BRDCol);
    Rectangle (GetMaxX div 2 - 150, GetMaxY div 2 - 60,
    GetMaxX div 2 + 150, GetMaxY div 2 + 40);
    TextT (TestCol, TempS);
    _Pause;
    ClearDevice
    end; (TestMode)
    {-------------------}< br />
    procedure MainMenu;
    var
    C: Char;
    ExtentedKey: Boolean;
    TempCol: TColor;
    K: ShortInt;
    begin
    ClearDevice;
    TempCol [1]: = MenuCol [1];
    TempCol [2]: = MenuCol [3];
    TempCol [3]: = MenuCol [4];
    TempCol [4]: = MenuCol [4];
    K: = 1;
    repeat
    SetColor (BRDCol);
    Rectangle (GetMaxX div 2 - 150, GetMaxY div 2 - 60,
    GetMaxX div 2 + 150, GetMaxY div 2 + 40);
    Rectangle (0, 0, GetMaxX, GetMaxY);
    ExtentedKey: = False; (прапор надходження розширеного коду)
    TextT (TempCol, Menu);
    while KeyPressed do ReadKey; (очищення буфера клавіатури)
    C: = ReadKey; (зчитування коду нової натиснутою клавіші)
    if C = # 0 then (якщо "так" - код розширений)
    begin



     C: = ReadKey; (зчитується другий символ розширеного коду)
    ExtentedKey: = True
    end;
    if ExtentedKey then (якщо код був розширений)
    case C of
    # 72: K: = K - 1;
    # 80: K: = K + 1
    end;
    if C = # 13 then
    case K of
    1: Play; (Навчання)
    2: TestMode; (Перевірка знань)
    3: Exit (Вихід)
    end;
    if K <1 then K: = 3;>
    if K> 3 then K: = 1;
    for I: = 2 to 4 do
    TempCol [I]: = MenuCol [4];
    TempCol [K + 1]: = MenuCol [3]; (Зміна кольору виделленого пункту)
    until C = # 27 (тобто натиснута клавіша "Esc")
    end; (MainMenu)
    {-------------------}< br />
    begin
    MyInitGraph; (Ініціалізація графічного режиму)
    Title; (Титульний аркуш)
    MainMenu; (Головне меню)
    CloseGraph; (Закриття графічного режиму)
    end. (LEAN_Ecm;)
    {-------------------}< br /> Текст модуля Sm_Const
    unit Sm_Const;
    interface
    uses Graph, Sm_Graph;
    type
    TText = array [1 .. 4] of string;
    TColor = array [1 .. 4] of Word;
    ------------------- Type
    const
    X0: Integer = 10; (Початкова координата X)
    Y0: Integer = 20; (Початкова координата Y)
    XS: Integer = 10; (FuncKey)
    YS: Integer = 440; (FuncKey)
    XC: Integer = 400; (Context)
    YC: Integer = 20; (Context)
    XT: Integer = 80; (Test)
    YT: Integer = 150; (Test)
    X: Integer = 15; (Координата висновок тексту X)
    Y: Integer = 330; (Координата висновок тексту Y)
    ARBCol: Word = LightCyan; (Колір зовнішнього кордону стрілки Big)
    ARSCol: Word = Red; (Колір зовнішнього кордону стрілки Small)
    FILCol: Word = Blue; (Колір стрілки Big)
    MemCol: Word = LightGreen; (Колір комірок пам'яті)
    CPUCol: Word = DarkGray; (Колір CPU)
    BRDCol: Word = Brown; (Колір рамки)
    TxtCol: Word = White; (Колір тексту)
    BArrow: TArrow = (X1: 15; Y1: 2; Y2: 5); (Форма стрілки Big)
    SArrow: TArrow = (X1: 5; Y1: 0; Y2: 1); (Форма стрілки Small)
    TestCol: TColor = (Green, White, Blue, Red); (Колір вікна тесту)
    MenuCol: TColor = (Cyan, 0, LightGreen, Blue);
    V: string [1] ='';
    Q: string [9] = 'Питання #';
    (Питання]
    Quastions: array [1 .. 5] of string =


    ('1. Що таке ВЗП? ',
    '2. Що в ходить в процесор? ',
    '3. Через який пристрій в ЕОМ відбувається обмін даними? ',
    '4. Де в початковий момент знаходиться програма? ',
    '5. Яка з пристроїв розшифровує перший машинну команду ?');< br /> (Варіанти відповідей)
    Answer: array [1 .. 5, 1 .. 3] of string =
    (('1. Зовнішнє записуючий пристрій ', '2. Зовнішнє запам'ятовуючий пристрій', '3. Внутрішнє запам'ятовуючий пристрій '), ('1. ЦУУ + АЛУ + ВЗП', '2. УВвода + ОЗУ ', '3. ЦУУ + АЛУ + КОП '),
    ('1. АЛУ ', '2. ОЗУ', '3. ВЗП '),
    ('1. У ВЗП ', '2. У АЛУ', '3. У УУ '),
    ('1. ВЗП ', '2. ЦУУ', '3. АЛУ'));< br /> (Номери правильних відповідей)
    OK: array [1 .. 5] of Byte = (2, 3, 2, 1, 2);
    (Текст Меню)
    Menu: TText = ( 'Ваш вибір:',
    'Навчання',
    'Перевірка знань',
    'Esc - Вихід');
    (Текст підсумку тестової частини програми)
    EndofTest: TText = ( 'Ваш результат:',
    'Всього питань: 5',
    'Кількість правильних відповідей:',
    'Оцінка:');
    ------------------- Const
    implementation
    end.
    Текст модуля Sm_graph
    unit Sm_Graph;
    interface
    uses
    Graph, Crt;
    {-------------------} (Uses)

    type

    TArrow = record X1, Y1, Y2: Integer; end;

    TImage =
    object
    private
    Image: Pointer;
    Size: Word;
    public
    procedure Destroy;
    procedure Get (X1, Y1, X2, Y2: Integer);
    procedure Put (X, Y: Integer);
    end;
    {-------------------} (Type)

    const
    CArrow: TArrow = (X1: 15; Y1: 2; Y2: 5);
    Time_1: Word = 5000; (Час мерехтіння)
    Time_2: Word = 15000; (Час затримки екрану після відповіді на питання)
    Time_3: Word = 300; (Час анімації)
    Time_4: Word = 400; (Час затримки виведення тексту по буквах)
    procedure _Pause;
    procedure Animation (X, Y: Integer; D: Integer; XY: Byte; S: string; Vis: Boolean);
    procedure Arrow (X, Y, L: Integer; DIRectIOn: Byte);
    procedure BLink (X, Y: Integer; S: string);
    procedure MyInitGraph;
    procedure MyText (X, Y: Integer; S: string);


    procedure Title;

    var
    TempImage: TImage;
    implementation

    {--------- Object TImage ----------)
    procedure TImage.Destroy;
    begin
    if Image nil then
    begin
    FreeMem (Image, Size);
    Image: = nil;
    Size: = 0;
    end
    end; (Timage.Destroy)
    {-------------------}< br />
    procedure TImage.Get (X1, Y1, X2, Y2: Integer);
    begin
    Destroy;
    Size: = ImageSize (X1, Y1, X2, Y2);
    GetMem (Image, Size);
    GetImage (X1, Y1, X2, Y2, Image ^);
    end; (TImage.Get)
    {-------------------}< br />
    procedure TImage.Put (X, Y: Integer);
    begin
    if Image nil then
    PutImage (X, Y, Image ^, 0);
    end; (TImage.Put)
    {--------- Object TImage ----------)

    procedure MyInitGraph;
    var
    GD, GM: Integer;

    begin
    GD: = Detect;
    InitGraph (GD, GM ,'');< br /> if GraphResult grOK then
    Halt (1);
    end; (MyInitGraph)
    {-------------------}< br />
    procedure MyText (X, Y: Integer; S: string);
    var
    I: Word;
    C: Char;
    begin
    MoveTo (X, Y);
    I: = 0;
    repeat
    Inc (I);
    OutText (S [I]);
    Delay (Time_4);
    until (I = Length (S));
    end; (NyText)
    {-------------------}< br />
    procedure _Pause;
    begin
    ReadKey;
    end; (_Pause)



    {-------------------}< br />
    procedure Animation (X, Y: Integer; D: Integer;
    XY: Byte; S: string; Vis: Boolean);
    (Animation)
    var
    DX, DY: Integer;
    I: Integer;
    begin
    DX: = 1;
    DY: = 1;
    SetColor (Green);
    if D <0 then>
    begin
    DX: = -1;
    DY: = -1;
    end;
    case XY of
    1: DY: = 0;
    2: DX: = 0;
    end;
    D: = Abs (D);
    for I: = 1 to D do
    begin
    TempImage.Get (I * DX + X,
    I * DY + Y,
    TextWidth (S) + I * DX + X,
    TextHeight (S) + I * DY + Y);
    OutTextXY (X + I * DX, Y + TextHeight (S) + I * DY, S);
    Delay (Time_3);
    if I D then
    TempImage.Put (X + I * DX, Y + I * DY);
    if (I = D) and not VIs then
    TEMPImage.Put (X + I * DX, Y + I * DY);
    end;
    end; (Animation)
    {-------------------}< br />
    procedure Arrow (X, Y, L: Integer; Direction: Byte);
    type
    COOrAR = array [1 .. 6] of Integer;
    var
    X1: Integer;
    Y1: Byte;
    Y2: Byte;
    XX: COOrAR;
    YY: COOrAR;

    procedure Change1;
    begin
    X1: =-X1;
    L: =-L
    end;

    procedure Change2;
    var
    I: Byte;
    Temp: Integer;
    begin
    for I: = 1 to 6 do
    begin
    TEMP: = XX [I];
    XX [I]: = YY [I];
    YY [I]: = TEMP;
    end;



    end;

    procedure ArrowCCOOr;
    begin
    XX [1]: = X1; YY [1]: = Y2;
    XX [2]: = X1; YY [2]: = Y1;
    XX [3]: = L; YY [3]: = Y1;
    XX [4]: = L; YY [4]: =-Y1;
    XX [5]: = X1; YY [5]: =-Y1;
    XX [6]: = X1; YY [6]: =-Y2;
    end;

    var
    I: Byte;
    begin
    X1: = CArrow.X1;
    Y1: = CArrow.Y1;
    Y2: = CArrow.Y2;
    if L
    case Direction of
    2, 4: Change1;
    end;
    ArrowCCOOr;
    case Direction of
    3, 4: Change2;
    end;
    MoveTo (X, Y);
    for I: = 1 to 6 do
    LineTo (X + XX [I], Y + YY [I]);
    LineTo (X, Y);
    end; (Arrow)
    {-------------------}< br />
    procedure Title;
    const
    Word_1: string = 'Курсова робота з інформатики.';
    Word_2: string = 'Тема: взаємодія основних частин ЕОМ при виконанні програми';
    Word_3: string = 'Виконали студенти групи МРС-91:';
    Word_4: string = 'Єгоров О.В.';
    Word_5: string = 'Шетманюк М.В.';
    begin
    ClearDevice;
    SetColor (LightGreen);
    Rectangle (0, 0, GetMaxX, GetMaxY);
    SetFillStyle (1, Blue);
    FloodFill (1,1, LightGreen);
    SetColor (LightGray);
    Rectangle (25, 25, GetMaxX-25, GetMaxY-25);
    SetFillStyle (1, DarkGray);
    FloodFill (101,101, LightGray);
    SetTextJustify (1, 0);
    SetTextStyle (0,0,2);
    SetColor (Black);
    OutTextXY (GetMaxX div 2 +1, GetMaxY div 2-1, Word_1);
    SetColor (Brown)
    OutTextXY (GetMaxX div 2, GetMaxY div 2, Word_1);
    SetTextStyle (0,0,0);
    SetColor (Red);
    OutTextXY (GetMaxX div 2, GetMaxY-35, 'Хабаровськ 2000');
    SetColor (Black);
    OutTextXY (GetMaxX div 2 +1, GetMaxY div 2-1 +18, Word_2);
    SetColor (Brown)
    OutTextXY (GetMaxX div 2, GetMaxY div 2 +18, Word_2);
    SetTextJustify (0, 0);



    SetColor (Black);
    OutTextXY (GetMaxX-Length (Word_3) * 8 +1-180, GetMaxY-100-1, Word_3);
    SetColor (White);
    OutTextXY (GetMaxX-Length (Word_3) * 8-180, GetMaxY-100, Word_3);
    SetColor (Black);
    OutTextXY (GetMaxX +1-180, GetMaxY-90-1, Word_4);
    SetColor (LightGreen);
    OutTextXY (GetMaxX-180, GetMaxY-90, Word_4);
    SetColor (Black);
    OutTextXY (GetMaxX +1-180, GetMaxY-80-1, Word_5);
    SetColor (LightGreen);
    OutTextXY (GetMaxX-180, GetMaxY-80, Word_5);
    _Pause;
    ClearDevice;
    end; (Title)
    {-------------------}< br />
    procedure BLink (X, Y: Integer; S: string);
    var I: Byte;
    begin
    for I: = 1 to 3 do
    begin
    SetColor (Black);
    Delay (Time_1);
    OutTextXY (X, Y + TextHeight (S), S);
    SetColor (Green);
    Delay (Time_1);
    OutTextXY (X, Y + TextHeight (S), S)
    end
    end; (Blink)
    {-------------------}< br />
    end.






         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status