Министерство транспорта
Российской Федерации
Федеральное агентство
железнодорожного транспорта
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ
БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
(СамГУПС)
Кафедра «Информационные системы
и телекоммуникации»
Курсовая работа
по дисциплине: «Сетевые операционные
системы»
на тему:
«Основы программирования в
ОС Unix»
Вариант 10
Выполнил: студент 3 курса
гр. ИС-11
Землякова О. В.
Проверил:
Франтасов Д. Н.
Самара 2013
ЛИСТ ЗАМЕЧАНИЙ
СОДЕРЖАНИЕ
РЕФЕРАТ
Курсовая работа.
Пояснительная записка 16 с.,
6 рис., 4 источников.
ОПЕРАЦИОННЫЕ СИСТЕМЫ, ЯЗЫК
ПРОГРАММИРОВАНИЯ С++, КОМПИЛЯТОР, КОМАНДНАЯ
СТРОКА, ПРОГРАММА, ФАЙЛ, UNIX, GCC, MANDRIVA(MAGEIA).
Объектом разработки является
программа на языке C++.
Цель работы – написать программу
для нахождения наибольшего общего делителя
на языке C++. в ОС Unix, с использованием модулей
и заголовочных файлов.
В процессе работы были разработаны
исходные файлы программы. В курсовой
работе выполнена задача нахождения объёма
цилиндра. Разработана блок-схема алгоритма
работы программы.
ВВЕДЕНИЕ
Впервые система Unix была описана
в 1974 году в статье Кена Томпсона и Дэнниса
Ричи в журнале "Communications of the ACM". С
этого времени она получила широкое распространение
и завоевала широкую популярность среди
производителей ЭВМ, которые все чаще
стали оснащать ею свои машины. Особой
популярностью она пользуется в университетах,
где довольно часто участвует в исследовательском
и учебном процессе.
За время, прошедшее с момента
ее появления в 1969 году, система Unix стала
довольно популярной и получила распространение
на машинах с различной мощностью обработки,
от микропроцессоров до больших ЭВМ, обеспечивая
на них общие условия выполнения программ.
Система делится на две части. Одну часть
составляют программы и сервисные функции,
то, что делает операционную среду Unix такой
популярной; эта часть легкодоступна пользователям,
она включает такие программы, как командный
процессор, обмен сообщениями, пакеты
обработки текстов и системы обработки
исходных текстов программ. Другая часть
включает в себя собственно операционную
систему, поддерживающую эти программы
и функции.
В этой работе мы будем работать
в командной строке ОС Linux (Mandriva Mageia), создадим
исполняемый файл для нахождения объёма
цилиндра, используя компилятор GNU Compiler
Collection,а так же мета-пакет task – c++ -developer.
ЗАДАНИЕ
Цель работы: изучение и использование
языка программирования С++ для работы
с ресурсами операционной системы Unix.
Написать программу на языке
С++ в соответствии с вариантом, откомпилировать
её, запустить на выполнение и запротоколировать
в отчете все действия, результат выполнения
и текст программы.
ВАРИАНТ 10.
Вычислить объем цилиндра. Исходные
данные считываются программой из файла.
Результат сохранить в файл.
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ
СВЕДЕНИЯ
Язык
программирования С++ был создан в начале
1980-х годов, его создатель сотрудник фирмы
Bell Laboratories — Бьёрн Страуструп.
Он придумал
ряд усовершенствований к языку программирования
C, для собственных нужд. Т. е. изначально
не планировалось создания языка программирования
С++. Ранние версии языка С++, известные
под именем »Cи с классами», начали появляться
с 1980 года. Язык C, будучи базовым языком
системы UNIX, на которой работали компьютеры
фирмы Bell, является быстрым, многофункциональным
и переносимым. Страуструп добавил к нему
возможность работы с классами и объектами,
тем самым зародил предпосылки нового,
основанного на синтаксисе С, языка программирования.
Синтаксис C++ был основан на синтаксисе
C, так как Бьёрн Страуструп стремился
сохранить совместимость с языком C.
C++ компилируемый язык программирования
общего назначения, сочетает свойства
как высокоуровневых, так и низкоуровневых
языков программирования. В сравнении
с его предшественником, языком программирования
Cи, наибольшее внимание уделено поддержке
объектно-ориентированного и обобщённого
программирования. Название «язык программирования
C++» происходит от языка программирования
C, в котором унарный оператор ++ обозначает
инкремент переменной.
В 1983 году произошло переименование
языка из «Cи с классами» в «язык программирования
C++».
В него были добавлены новые
возможности: виртуальные функции, перегрузка
функций и операторов, ссылки, константы
и многое другое. Его первый коммерческий
выпуск состоялся в октябре 1985 года.
Язык программирования C++ является свободным,
то есть никто не обладает на него правами.
Язык
программирования C++ широко используется
для разработки программного обеспечения.
А именно, создание разнообразных прикладных
программ, разработка операционных систем,
драйверов устройств, а также видео игр и
многое другое. Существует несколько реализаций
языка программирования C++ — как бесплатных,
так и коммерческих. Их производят проекты:
GNU, Microsoft и Embarcadero (Borland). Проект GNU — проект
разработки свободного программного обеспечения
(СПО).
GNU Compiler Collection (обычно
используется сокращение GCC) — набор компиляторов для различных языков
программирования, разработанный в рамках проекта
GNU. GCC является свободным
программным обеспечением, распространяется фондом
свободного программного обеспечения (FSF) на условиях GNU GPL и GNU LGPL и является ключевым компонентом GNU toolchain. Он используется как стандартный
компилятор для свободных UNIX-подобных
операционных систем.
Изначально названный GNU C Compiler поддерживал
только язык Си. Позднее GCC был расширен для
компиляции исходных кодов на таких языках
программирования, как C++, Objective-C, Java, Фортран и Ada.
Мета-пакет task
– c++ -developer. Этот пакет является мета-пакетом,
что означает, что его целью является,
чтобы содержать зависимости для полноценной
среды разработки программ на языке программирования
Си.
Пакет сам по себе не содержит
ПО, только зависимости.
Модульность в языках программирования
— принцип, согласно которому программное
средство (ПС, программа, библиотека, веб-приложение
и др.) разделяется на отдельные именованные
сущности, называемые модулями. Модульность
часто является средством упрощения задачи
проектирования ПС и распределения процесса
разработки ПС между группами разработчиков.
При разбиении ПС на модули для каждого
модуля указывается реализуемая им функциональность,
а также связи с другими модулями.
Роль модулей могут играть структуры
данных, библиотеки функций, классы, сервисы
и др. программные единицы, реализующие
некоторую функциональность и предоставляющие
интерфейс к ней.
Программный код часто разбивается
на несколько файлов, каждый из которых
компилируется отдельно от остальных.
Такая модульность программного кода
позволяет значительно уменьшить время
перекомпиляции при изменениях, вносимых
лишь в небольшое количество исходных
файлов, и упрощает групповую разработку.
Также это возможность замены отдельных
компонентов конечного программного продукта,
без необходимости пересборки всего проекта
(например, разработка плагинов к уже готовой
программе).
Одним из методов написания
модульных программ является объектно-ориентированное
программирование. ООП обеспечивает высокую
степень модульности благодаря таким
свойствам, как инкапсуляция, полиморфизм
и позднее связывание.
РАБОТА ПРОГРАММЫ
После входа в операционную
систему Mandriva Mageia нужно перейти в консоль,
затем в директорию с программой - командой
“cd KR”. Чтобы просмотреть список файлов
и папок необходимо ввести команду “ls”
(см. рис. 1)
Рисунок 1 – Каталог KR
Для того, чтобы посмотреть
исходный файл нужно ввести команду cat in. Для выполнения
компиляции программы нужно ввести команду “g++ –o main.exe main.cpp
Math.cpp”, где main.exe – имя выходного
файла.
После компиляции исполняемый
файл можно запустить командой “./main.exe” (см.
рис. 2)
Рисунок 2 – Выполнение программы
Для открытия созданного файла,
содержащего результат, необходимо ввести
команду “cat in” (см. рис. 3)
Рисунок 3 – Вывод результата
ЛИСТИНГ И ТЕСТИРОВАНИЕ
main.cpp
//Программа вычисления объема
цилиндра. Исходные данные считываются
программой из файла. Результат сохранить
в файл.
#include <iostream>
#include <fstream>
#include <string>
#include "Math.h"
#include <cmath>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
string fileName;
double r, h;
//просим пользователя
ввести имя файла
cout<<"Введите имя файла:\n>>
";
cin>>fileName;
//открываем этот файл
и проверяем что он открылся
fstream iFile(fileName.c_str());
if(!iFile)
{
cout<<"Невозможно открыть
файл\n";
return -1;
}
//считываем значения и
проверяем что они считались
iFile>>r>>h;
if(iFile.bad() && iFile.gcount() == 0)
{
cout<<"Невозможно прочитать
числа из файла\n";
iFile.close();
return -2;
}
//переводим указатель
на начало файла чтобы затереть старые
значения
iFile.seekg(0);
//вызываем наши функции
и сохраняем результаты
iFile<<"v= "<<objem(r,h)<<endl;
iFile.close();
cout<<"Объем подсчитан.
См. файл \""<<fileName<<"\"."<<endl;
return 0;
}
Math.cpp
#include "Math.h"
#define M_PI 3.14
double objem(double r, double h)
{
return M_PI*r*r*h;;
}
Math.h
#ifndef MATH_H
#define MATH_H
#include <iostream>
using std::ostream;
using std::cin;
using std::cout;
using std::endl;
double objem(double r, double h);
#endif
БЛОК-СХЕМА
Блок-схема главной функции
программы (main) изображена на рисунке 4.
Main.cpp
Рисунок 4 – блок-схема main.cpp
Блок-схема модуля (Math.cpp) изображена
на рисунке 5.
Math.cpp
Рисунок 5 – блок-схема math.cpp
Блок-схема заголовочного файла
(Math.h) изображена на рисунке 6.
Math.h
Рисунок 6 – блок-схема math.h
ЗАКЛЮЧЕНИЕ
В ходе выполнения работы, мы
ознакомились с серверной версией операционной
системы Mandriva (Mageia) семейства Linux, приобрели
основные навыки работы с командной строкой.
В результате выполненной работы были
разработаны программа для нахождения
объема цилиндра, основанная на использовании
модулей в языке С++. Были достигнуты
цели, поставленные перед началом тестирования.
Модульность
– наиважнейшая функция в языке Си/C++.
Принцип модульного программирования,
который основан на применении функций,
позволяет решить комплекс однотипных
задач при применении заранее описанных
функций. Созданные модули можно будет
легко использовать в дальнейшем при разработке
других программ.
Программа
была написана в операционной системе
Mandriva (Mageia), основанной на Debian GNU/Linux. Для
создания исполняемого файла использовался
компилятор GNU Compiler Collection,а так же task –
c++ -developer.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Бруй В. В., Карлов С. В. LINUX-сервер:
пошаговые инструкции, инсталяции и настройки.
- М.: СИП РИА, 2003.
2. Маслинский К. Операционная
система Linux. – ИНТУИТ.ру, 2005.
3. Немет Э., Снайдер Г., Хейн Т.
Руководство администратора Linux. – 2-e изд.
/ пер. с англ. – М.: ООО «И.Д. Вильямс», 2007.
4. Павловская Т. Программирование
на языке высокого уровня C/С++. - CПб.: Питер, 2003.