Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Аверянов Введение в оператсионные системы и основы программирования 2015

.pdf
Скачиваний:
4
Добавлен:
12.11.2022
Размер:
4.77 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»

ВВЕДЕНИЕ В ОПЕРАЦИОННЫЕ СИСТЕМЫ

И ОСНОВЫ ПРОГРАММИРОВАНИЯ

Лабораторный практикум

Рекомендовано к изданию УМО «Ядерные физика и технологии»

Москва 2015

УДК 004(075) ББК 32.97я7 В24

ВВЕДЕНИЕ В ОПЕРАЦИОННЫЕ СИСТЕМЫ И ОСНОВЫ ПРОГРАМ-

МИРОВАНИЯ: лабораторный практикум / Г.П. Аверьянов, В.А. Будкин,

В.В. Дмитриева, И.А. Кунов. – М.: НИЯУ МИФИ, 2015. – 260 с.

В учебно-методическом пособии представлены две темы, входящие в состав обзорного курса «Информатика» («Информатика и программирование»).

Первая тема посвящена изучению общих принципов и функциональных возможностей (с точки зрения пользователя) современных операционных систем (ОС) семейства Windows и UNIX-подобных ОС. Приведены два типа пользовательского интерфейса: «командная строка», на примере командных интерпретаторов (bash для ОС UNIX и cmd.exe дляMS Windows), а также полноэкранныйалфавитно-цифровой интерфейс, на примере наиболее популярных «файловых менеджеров» (Midnight Commander (mc) для ОСUNIX и FAR Manager дляMS Windows).

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

Gfortran (free Fortran 95/2003/2008 compiler for GCC, the GNU Compiler Collection),

реализующий стандарт [ISO/IEC 1539-1:1997(E)], с поддержкой объектноориентированного программирования (ООП).

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

Пособие предназначено для студентов очной и очно-заочной (вечерней) формы обучения факультета «Автоматика и электроника» НИЯУ МИФИ, а также может быть полезно студентам физических и инженерно-технических специальностей вузов.

Подготовлено в рамках Программы создания и развития НИЯУ МИФИ.

Рецензент Е.А.Сухарева, канд. физ.-мат. наук, доц. Московского машиностроительного университета (МАМИ)

ISBN 978-5-7262-1994-3

© Национальный исследовательский

 

ядерный университет «МИФИ», 2015

 

Редактор М.В. Макарова

Подписано в печать 20.11.2014.

Формат 60х84 1/16

Уч.-изд.л. 16,75. Печ.л. 16,25.

Тираж 250 экз.

Изд. № 1/10. Заказ № 27.

Национальный исследовательский ядерный университет «МИФИ». 115409, Москва, Каширское ш., 31.

ООО «Баркас». 115230, Москва, Каширское ш., 4..

ОГЛАВЛЕНИЕ

 

ПРЕДИСЛОВИЕ...............................................................................................

7

1. КОМАНДНЫЕ ОБОЛОЧКИUNIX ...............................................................

14

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К РАЗД. 1.....................................................

14

1.1. СЕАНСРАБОТЫВ UNIX СИСТЕМЕ......................................................

19

1.1.1. Терминали командная строка..................................................

19

1.1.2. Логины, пароли и доступ ксерверу...........................................

20

1.1.3. Вход всистему/завершение работы..........................................

22

1.2. РАБОТА С ФАЙЛОВОЙСИСТЕМОЙUNIX...........................................

24

1.2.1. Файлыи каталоги. Абсолютный (полный) путь.........................

24

1.2.2. Домашний и текущий каталог. Относительный путь.................

26

1.2.3. Просмотркаталогови файлов...................................................

29

1.2.4. Создание и удаление каталогови файлов.................................

32

1.2.5. Пример построения дерева каталогов......................................

33

1.2.6. Копирование и перемещение файлов.......................................

37

1.3. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ UNIX.......................................

40

1.3.1. Пользователи и учетные записи................................................

40

1.3.2. Задачи и процессы всистеме....................................................

41

1.3.3. Правадоступак файлам и каталогам........................................

42

1.3.4. Ввод/выводи конвейеры..........................................................

47

1.3.5. Поиск и обработка текстовыхданных.......................................

50

1.4. ФАЙЛОВЫЙМЕНЕДЖЕР MIDNIGHT COMMANDER ...........................

52

1.4.1. Внешний вид, началои завершение работы.............................

52

1.4.2. Работас каталогами и файлами ................................................

55

ЗАЧЕТНЫЕ ЗАДАНИЯК РАЗД. 1................................................................

59

Задание 1.1..........................................................................................

59

Задание 1.2..........................................................................................

62

Задание 1.3..........................................................................................

62

Задание 1.4..........................................................................................

66

Задание 1.5..........................................................................................

66

2. КОМАНДНЫЕ ОБОЛОЧКИ WINDOWS ......................................................

67

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К РАЗД. 2.....................................................

67

2.1. ОСНОВЫКОМАНДНОЙСТРОКИ MS WINDOWS................................

68

3

2.1.1. Началоработыс командной строкой........................................

68

2.1.2. Структура файловой системы Windows.....................................

71

2.1.3. Работас текстовыми файлами вCmd.exe..................................

81

2.1.4. Копирование и перемещение файлови директорий ...............

85

2.2. ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ CMD.EXE ................................

90

2.2.1. Полезныеинструменты командной строки ..............................

90

2.2.2. Настройка параметров командной оболочки...........................

96

2.2.3. Перенаправлениеввода/выводаи конвейеры.........................

99

2.3. ФАЙЛОВЫЙМЕНЕДЖЕР FAR...........................................................

106

2.3.1. Началоработыи внешний вид FAR .........................................

106

2.3.2. Основные операции FAR Manager ...........................................

109

2.3.3. Дополнительные возможности FAR ........................................

113

ЗАЧЕТНЫЕ ЗАДАНИЯК РАЗД. 2..............................................................

116

Задание 2.1........................................................................................

116

Задание 2.2........................................................................................

118

Задание 2.3........................................................................................

119

Задание 2.4........................................................................................

119

Задание 2.5........................................................................................

119

3. ПРОГРАММИРОВАНИЕ НАЯЗЫКЕ FORTRAN .........................................

120

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К РАЗД. 3...................................................

120

3.1. ПРАВИЛАЗАПИСИПРОГРАММЫ....................................................

122

3.1.1. Наборсимволов Фортрана......................................................

122

3.1.2. Форматы записи программы...................................................

123

3.1.3. Фиксированный формат..........................................................

125

3.1.4. Свободный формат..................................................................

127

3.2. ТРАНСЛЯЦИЯПРОГРАММЫ............................................................

129

3.2.1. Программа водном исходном файле.....................................

129

3.2.2. Трансляция исходногофайла..................................................

130

3.2.3. Трансляция несколькихисходных файлов..............................

132

3.2.4. Трансляция модулей................................................................

135

3.3. КОНЦЕПЦИЯДАННЫХ ЯЗЫКА ФОРТРАН.........................................

136

3.3.1. Имена(идентификаторы) ........................................................

136

3.3.2. Понятиетипа............................................................................

138

3.3.3. Буквальные константы.............................................................

140

4

3.3.4. Разновидности типови диапазонызначений.........................

142

3.3.5. Скалярные переменные и константы......................................

146

3.3.6. Массивы...................................................................................

150

3.3.7. Производные типыданных .....................................................

158

3.4. ВЫРАЖЕНИЯИ ПРЕОБРАЗОВАНИЕ ТИПОВ.....................................

160

3.4.1. Скалярное присваивание.........................................................

160

3.4.2. Арифметика Фортрана.............................................................

161

3.4.3. Логические выражения............................................................

166

3.4.4. Работас текстовыми строками................................................

168

3.4.5. Операции с массивами............................................................

170

3.5. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ..........................................................

172

3.5.1. Условный оператори конструкция IF ......................................

172

3.5.2. Оператор варианта– конструкцияCASE..................................

175

3.5.3. Циклы – разновидности конструкции DO................................

177

3.5.4. ОператорGO TO .......................................................................

183

3.6. ВВОД/ВЫВОДДАННЫХ...................................................................

184

3.6.1. Простейшие операции ввода/вывода.....................................

184

3.6.2. Форматный ввод/вывод данных.............................................

188

3.6.3. Неявные циклыи ввод/вывод массивов.................................

193

3.6.4. Файловый ввод/вывод.............................................................

195

3.7. ПРОГРАММНЫЕ КОМПОНЕНТЫ ИЭЛЕМЕНТЫООП.......................

201

3.7.1. Структура программных компонентов....................................

201

3.7.2. Внешниеподпрограммы.........................................................

202

3.7.3. Внутренние подпрограммы.....................................................

205

3.7.4. Модули как библиотеки производныхтипов..........................

206

3.7.5. Встроенные функции Фортрана...............................................

209

4. ТЕМЫИЗАДАЧИ ДЛЯПРОГРАММИРОВАНИЯ......................................

212

4.1. ПРОСТЫЕ ИНТЕРПОЛЯЦИОННЫЕ ПОЛИНОМЫ..............................

212

4.1.1. Интерполяционные полиномыпервой степени .....................

212

4.1.2. Интерполяционные полиномывторой степени......................

214

Задачи потеме «Простые итерационные полиномы» .....................

216

4.2. ФИГУРЫНАКООРДИНАТНОЙ ПЛОСКОСТИ....................................

222

4.2.1. Треугольник накоординатной плоскости...............................

222

4.2.2. Криволинейная трапеция накоординатной плоскости..........

224

5

Задачи потеме «Фигуры накоординатной плоскости» ...................

226

4.3. РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ.............................................

229

4.3.1. Подход к решению нелинейныхуравнений............................

229

4.3.2. Деление отрезка пополам (дихотомия). .................................

230

4.3.3. Методхорд. .............................................................................

232

4.3.4. Методкасательных(метод Ньютона)......................................

234

4.3.5. Методсекущих.........................................................................

236

Задачи потеме «Решение нелинейныхуравнений» ........................

237

4.4. ИНТЕРПОЛЯЦИЯФУНКЦИЙПОЛИНОМАМИ..................................

238

4.4.1. Интерполяция функции полиномами степениN.....................

238

4.4.2. Кусочная интерполяция полиномами малыхстепеней..........

241

4.4.3. Кусочная интерполяция полиномом степени N......................

243

Задачи потеме «Интерполяция функций полиномами»..................

245

4.5. ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ.............................................

248

4.5.1. Формулы дифференцирования, вытекающие из кусочной

 

интерполяции функций.....................................................................

248

4.5.2. Конечно разностные формулыдля производных...................

250

Задачи потеме «Численное дифференцирование».........................

251

4.6. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ......................................................

253

4.6.1. Формулыинтегрирования, вытекающие из кусочной

 

интерполяции функций.....................................................................

253

4.6.2. Методпрямоугольников.........................................................

255

Задачи потеме «Численное интегрирование».................................

257

СПИСОКЛИТЕРАТУРЫ...............................................................................

258

6

ПРЕДИСЛОВИЕ

Данное пособие написано авторами на основе более чем 20-летнего опыта проведения практических занятий со студентами первых курсов МИФИ и является дополнением к теоретическому курсу «Современная информатика» (НИЯУ МИФИ, 2011).

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

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

Разд. 1 и 2 посвящены знакомству с базовыми управляющими командами операционных систем (ОС), которые обеспечивают интерфейс пользователя с «железом» и прикладными программами, но при этом скрыты (в современных ОС) за пиктограммами, системами меню и другими элементами графических оболочек.

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

итерфейсом («Window, Icon, Menu, Pointing device»). Что по-русски означает: «Окно, значок, меню, указательное устройство». На практике все еще значительно проще – использование «тыкательного инстинкта» пользователя и действие по одной и той же стереотипной схеме, с использованием в качестве указательного устройства «мыши» (или пальца, для сенсорного экрана), как практически единственного инструмента управления.

С одной стороны, использование означенных выше «указательных устройств» облегчает жизнь рядового пользователя, но при этом значительно снижает возможность эффективного использования компьютерной техники. Это становится критично, если от пользователя требуется немного больше, чем набрать текст в Word или поисковый запрос в Яндекс или Google.

Не рассматривая подробно все типы пользовательских интерфейсов, стоит отметить, что помимо графического интерфейса пользователя (GUI – Graphic User Interface), частным случаем кото-

7

рого является WIMP, профессионалами IT достаточно широко применяются инструменты из категории текстовых пользовательских интерфейсов (или «полноэкранных алфавитно-цифровых интерфейсов»). Такие интерфейсы (англ. Text user interface, TUI или

Character User Interface, CUI) используют при вводе-выводе и представлении информации только набор буквенно-цифровых символов и символов псевдографики. TUI (CUI) характеризуется малой требовательностью к вычислительным ресурсам и высокой скоростью отображения информации.

Особая разновидность CUI – командная строка (англ. Command Line Interface, CLI) имеет отдельные преимущества перед графическим интерфейсом (при наличии определенной квалификации в его использовании). «Продвинутые» пользователи не могут обойтись без командной строки. Зная, какие средства командной строки выбрать и как их использовать, можно избежать многочисленных проблем и добиться быстрого и качественного выполнения не только административных, но и вполне «пользовательских» задач. Работа с ОС в режиме командной строки позволяет выявить общие и отличительные черты (с точки зрения пользователя) различных семейств ОС. С этой целью рассмотрены два наиболее распространенных на сегодняшний день семейства ОС для серверов, рабочих станций и домашнего применения. Это UNIX-подобные ОС и семейство проприетарных ОС Windows корпорации Microsoft.

UNIX-системы – многопользовательские многозадачные операционные системы. История создания UNIX начинается с операци-

онных систем BESYS (1957 г.) и Multics (1964 г.), созданных в кор-

порации Bell Labs, под руководством Виктора Высотского (русского по происхождению). Следующая система – UNICS (позже название сократилось до UNIX) была разработана в конце 1960-х годов сотрудниками Bell Labs, воплотившими многие идеи Multics на компьютерах нового поколения. Версия UNIX для наиболее успешного семейства миникомпьютеров 1970-х, PDP-11, (в СССР его аналоги были известны как СМ ЭВМ и «Электроника», затем ДВК) получила название Edition 1 и была первой официальной версией. Системное время всей реализации UNIX отсчитывают с 1 января 1970 г. Первые версии UNIX были написаны на ассемблере и не имели встроенного компилятора с языком высокого уровня. В

8

1975 г. вышла пятая редакция UNIX, полностью написанная на языке высокого уровня Си.

В конце 1970-х и начале 1980-х начали появляться UNIXподобные ОС, большинство из которых угадываются по названию

(их еще называют *nix-системами): AIX, HP-UX, IRIX, Ultrix, Xenix, Mac OS X и т.д., хотя встречаются и исключения из этого правила, например, BSD/OS, Solaris и OSF/1. UNIX-подобные ОС обычно называют просто UNIX-системами и по классификации Эрика Рэймонда подразделяются на 3 типа:

1)генетический UNIX – ОС, в которых прослеживается происхождение от разработок AT&T;

2)«настоящий» UNIX ОС, имеющие юридическое право называться UNIX; к ним относятся системы, сертифицированные консорциумом The Open Group (правообладателем бренда UNIX) на соответствие Единой спецификации UNIX;

3)UNIX по функциональности.

В1991 г. финским программистом Линусом Торвальдсом было опубликовано ядро Linux –*nix системы для ПК, содержащей в названии имя автора. Так было положено начало ОС, известной как GNU/Linux. Дистрибутивы этой системы, включающие ядро, утилиты GNU и дополнительное программное обеспечение, стали весьма популярными среди энтузиастов Free Ware. Один из создателей UNIX Деннис Ритчи отмечает, что ОС, подобные Linux, несомненно являются UNIX-системами.

Продвигаемая Google операционная система для смартфонов и планшетных компьютеров Android, как и проект MeeGo, поддерживаемый такими известными компаниями, как Intel (на сегодня ос-

новной участник проекта), Nokia, AMD, Novell, ASUS, Acer, MSI,

созданы на основе ядра Linux.

Впринципе, пытливому студенту ничто не мешает установить на своем мобильном устройстве Android Terminal Emulator (или другое приложение из Play Market, поддерживающее командную строку) и поупражняться в выполнении заданий этого практикума.

Хорошо продуманная командная строка была и остается сильной стороной UNIX-систем. За черным экраном и мерцающим на нем курсором скрывается чрезвычайно мощный и нетребовательный к ресурсам инструмент – командный интерпретатор (приложение, реализующее интерфейс командной строки – чаще всего это

9

bash), вот уже более полувека являющийся незаменимым посредником между человеком и компьютером.

Наиболее характерными признаки UNIX-систем являются:

взаимодействие с пользователем посредством виртуального устройства – терминала;

широкое применение командных интерпретаторов (shell) утилит, запускаемых из командной строки;

применение файлов для представления физических и виртуальных устройств, а также некоторых средств взаимодействия между процессами;

использование конвейеров из нескольких программ, каждая из которых выполняет одну задачу;

использование простых текстовых файлов для настройки и управления системой.

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

Скаждой новой версией Windows командная строка совершенствовалась, а ее возможности расширялись. Командная строка претерпела значительные изменения, связанные не только с повышением производительности, но и с увеличением гибкости. Теперь с помощью командной строки Windows можно решать задачи, которые нельзя было решить в предыдущих версиях Windows.

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

Для студентов инженерных специальностей, не связанных непосредственно с разработкой программного обеспечения, работа с командной строкой способствует формированию культуры инженерного мышления и пониманию базовой логики сложных технических систем, в том числе на примере операционной системы

Windows.

10