Програма емуляції роботи командного процесора операційної системи
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?ним завданням повинен мати наступний вигляд:
Після аналізу команд, дана підпрограма проводить аналіз існування вхідного файлу. У випадку, якщо даний файл існує, він відкривається для читання, і виконується подальший алгоритм його обробки. Інакше, якщо файл не існує, виводиться інформація про не існування даного файлу, і підпрограма припиняє своє виконання.
У випадку, якщо файл знайдено і відкрито, відкриваються два вихідних файл для запису. У випадку, якщо файли не існували, вони будуть створені програмою, однак якщо вони вже були створені, то необхідно бути обережним, оскільки вони будуть цілком перезаписаними програмою, і всі попередні дані будуть втраченими.
Опис функцій які використовувались при написанні програми.
Функція fopen
Функція fopen ( ) відкриває потік і повязує з цим потоком певний файл. Потім вона повертає покажчик цього файлу. Найчастіше під файлом мається на увазі дисковий файл. Прототип функції fopen () такий:
FILE *fopen(const char *імя_файла, const char *режим)
де імя файла це покажчик на рядок символів, що є допустимим імям файлу, в яке також може входити специфікація шляху до цього файлу. Рядок, на яку вказує режим, визначає, яким чином файл буде відкритий.
Функція fopen () повертає покажчик файлу.
Функція fclose
Функція fclose () закриває потік, який був відкритий за допомогою виклику fopen (). Функція fclose () записує у файл всі дані, які ще залишалися в дисковому буфері, і проводить офіційне закриття файлу на рівні операційної системи. Відмова при закритті потоку несе всілякі неприємності, включаючи втрату даних, зіпсовані файли і можливі періодичні помилки в програмі. Функція fcloseO також звільняє блок управління файлом, повязаний з цим потоком, даючи можливість використовувати цей блок знову. Оскільки кількість одночасно відкритих файлів обмежена, то, можливо, доведеться закривати один файл, перш ніж відкривати інший. Прототип функції f close () такий:
int fclose(FILE *пф);
пф покажчик файлу, повернений в результаті виклику fopen (). Повернення нуля означає успішну операцію закриття. У разі ж помилки повертається EOF.
Щоб точно взнати, в чому причина цієї помилки, можна використовувати стандартну функцію ferror (). Звично відмова при виконанні fclose () відбувається тільки тоді, коли диск був передчасно видалений (стертий) з дисковода або на диску не залишилося вільного місця.
Функція putc ()
У системі введення/виведення мови С++ визначаються дві еквівалентні функції, призначені для виведення символів: putc () і fputc (). (Насправді putc () зазвичай реалізується у вигляді макросу).
Функція putc () записує символи у файл, який за допомогою fopen () вже відкритий в режимі запису. Прототип цієї функції наступний:
int putc(int ch, FILE *пф);
Де пф це покажчик файлу, повернений функцією fopen (), а ch що виводиться символ. Покажчик файлу повідомляє putc (), в якій саме файл слід записувати символ. Хоча ch і визначається як int, проте записується тільки молодший байт. Якщо функція putc () виконалася успішно, то повертається записаний символ. У протилежному випадку повертається EOF.
Функція getc ()
Для введення символу також є дві еквівалентні функції: getc() і fgetc (). Обидві визначаються для збереження сумісності із старими версіями С++.
Функція getc () записує символи у файл, який за допомогою fopen() вже відкритий в режимі для читання. Прототип цієї функції наступний:
int getc(FILE *пф);
пф це покажчик файлу, що має тип FILE і повернений функцією fopen(). Функція getc () повертає ціле значення, але символ знаходиться в молодшому байті. Якщо не відбулася помилка, то старший байт (байти) буде обнулений.
Якщо досягнутий кінець файлу, то функція getc () повертає EOF.
Функція fseek
Повторно поміщає вказівник файлу потоку. Тобто встановлює
вказівник файлу, звязаний з потоком в нове положення. Fseek використовується з введенням-виведенням потоку. Якщо вказівник переміщений успішно fseek повертає 0, а при помилці fseek повертає якесь інше відмінне від 0. fseek повертає значення помилки лише в тих випадках коли не відкривається файл. Замість FILE *stream вказується імя файлу, long offset , int whence зазначається місце куди потрібно відправити вказівник.
fseek(FILE *stream, long offset, int whence);
Функція ftell.
Повертає поточний вказівник файлу. Точніше кажучи повертає вказівник файлу для потоку. Функція ftell, яка повертає вказівник може використовуватись в наступному запиті до функції fseek. При успішній роботі функція повертає поточне положення вказівника файлу. При помилці повертає 1. FILE *stream вказується назва файлу, тобто файл якому потрібно повернути вказівник.
ftell(FILE *stream);
ВИСНОВКИ
В результаті виконання курсового проекту було створено програму-емулятор командного процесора, яка в свою чергу виконує наступні команди: створення текстових файлів, зєднання текстових файлів в один (зміст зєднуваних файлів подається одним суцільним текстом в результуючому файлі), архівація файлів та розріз файлів на частини. В процесі виконання даної роботи було досліджено принципи функціонування командного процесора та розроблено програму на мовах програмування C++ та Асемблера. При написанні програми було використано принципи функціонування командного процесора.
Програма має головну довідку, яка містить перелік виконуваних команд, довідки по кожній команді з правильним синтаксисом, що значно спростить використання її користувачем
У курсовому проекті було використано функції мови програмування С++ та мови низького р?/p>