Для работы с ОС Windows в режиме командной строки необходимо запустить командный интерпретатор (выбрав пункт «Командная строка» в меню кнопки «Пуск»). В зависимости от версии Windows запустится интерпретатор Cmd.exe (для MS Windows 2000, XP, Vista) или PowerShell (для Windows 7, Windows 8 или
Windows Server 2008 R2). Работа с командной строкой поддерживается всеми Desktop-версиями Windows и Windows RT, на базе ARM-процессоров, включая планшетные компьютеры (в ОС Windows Phone не поддерживается). Команды, используемые в практикуме универсальны практически для всех версий Windows с поддержкой командного интерпретатора.
Разд. 3 пособия представляет основы программирования на «традиционных» (императивных) языках высокого уровня, которые (так же как и ОС, и любые другие информационные системы одинакового назначения) имеют общие базовые принципы. Изучение программирования, в классическом варианте, связано с рассмотрением структуры программных единиц (главной программы и подпрограмм), основных и производных типов данных и реализации стандартных алгоритмов, использующих условные операторы, циклы, массивы и другие структуры данных.
С учетом специфики подготовки научно-технических кадров, для программирования задач практикума выбран стандартный для научно-инженерных и расчетов алгоритмический язык Фортран. Название языка является сокращением от FORmula TRANslator (транслятор или переводчик формул), это самый первый язык программирования высокого уровня, для которого был создан транслятор (с 1954 по 1957 г. под руководством Джона Бэкуса в компании IBM был создан первый коммерческий компилятор Фортрана). До этого программы записывались либо в машинных кодах, либо на символических ассемблерах.
Фортран широко используется и остается доминирующим языком программирования для научных и инженерных вычислений уже более 50-ти лет. За это время создано огромное количество библиотек, содержащих готовые решения для многих сложных научных и инженерных проблем. Не существует практически ни одной операционной системы или процессора, для которых не был бы создан компилятор Фортрана, поскольку реализовать транслятор Фортрана для новой программно-аппаратной платформы, а затем
11
использовать готовые библиотеки – гораздо проще, чем преобразовывать миллионы строк программного кода на другие языки или создавать все заново. Так, компиляторы Фортрана (обычно это g77 и Gfortran) от фонда свободного программного обеспечения GNU входят в состав открытого программного обеспечения для суперкомпьютеров, на базе кластеров Beowulf и openMosix (для платформ, совместимых с GCC).
Общей отличительной чертой всех без исключения компиляторов Фортрана (собственно, с этой целью они и разрабатывались) является оптимизация машинного кода для максимального быстродействия вычислений с плавающей точкой (включая адресацию памяти). Сравнительное тестирование компиляторов различных языков программирования всякий раз показывает, что Фортрану нет равных по скорости вычислений.
Сначала Фортран существовал в рамках корпоративных стандартов компании IBM: FORTRAN II и FORTRAN IV, а затем в международных стандартах: рамках Американского национального института стандартов (ANSI) и Международной организации по стандартизации (ISO). В ANSI создан технический комитет X3J3, ответственный за стандартизацию Фортрана. Международная группа наблюдателей ISO/IEC JTC1/SC22/WG5 (сокращенно WG5) курирует работу X3J3 с целью стандартизации Фортрана в рамках ISO. Совместимость стандартов обеспечивается процедурой работы комитета X3J3, согласно которой исключение устаревших свойств языка возможно только по истечении заявленного предупредительного периода (как правило, не менее 10 лет).
На базе корпоративного стандарта фирмы IBM был создан первый международный стандарт FORTRAN 66 (1966 г.), затем последовали: FORTRAN 77 (1978 г.), обеспечивающий поддержку процедурного и структурного программирования, и Fortran 90 (1991 г.) с поддержкой объектно-ориентированного программирования. Принятый в 1997 г. стандарт Fortran 95 по существу является исправленной и улучшенной версией Fortran 90. В последующих стандартах Fortran 2003 (2004 г.) и Fortran 2008 сделан акцент на дальнейшее развитие средств поддержки объектноориентированного программирования и взаимодействия языка с операционной системой.
12
Втестах на производительность вычислений лидирующие позиции занимает коммерческий компилятор корпорации Intel (Intel Fortran Compiler) для платформ Intel IA-32 и IA-64, а для персо-
нальных компьютеров (IBM PC) долгое время лучшим компилятором Фортрана считался компилятор Watcom Fortran.
Среди бесплатных компиляторов Фортрана кроме Watcom Fortran, выделенного в отдельный проект Open Watcom, стоит отметить компилятор от компании Sun Microsystems, входящий в интегрированную среду разработки Oracle Solaris Studio и уже упомянутый ранее GNU Gfortran. Все примеры и задания данного практикума составлены и отлажены с помощью компилятора Gfortran.
Вкомпиляторе Gfortran (free Fortran 95/2003/2008 compiler for GCC, the GNU Compiler Collection, реализующем стандарт
[ISO/IEC 1539-1:1997(E)], с поддержкой элементов объектноориентированного программирования) реализованы практически все конструкции стандарта Фортран 95 и многие конструкции стандартов Фортран 2003 и Фортран 2008. Обеспечена полная совместимость со стандартом Фортран 77.
Вразд. 3 представлено краткое (ориентированное на програм-
мирование базовых алгоритмов) описание языка Фортран, в рамках стандарта [ISO/IEC 1539-1:1997(E)], содержащее около 100 коротких отлаженных примеров, дающих наглядное представление об основных языковых конструкциях Фортрана.
Решение зачетных заданий разд. 3 предполагает использование математического аппарата. Для удобства зачетные задания раздела сгруппированы по соответствующим темам.
13
1. КОМАНДНЫЕ ОБОЛОЧКИ UNIX
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К РАЗД. 1
Первый раздел лабораторного практикума посвящен знакомству с командными оболочками UNIX-систем на примере GNU/Linux. Поскольку в практикуме изучаются и используются минимальные базовые возможности командных интерпретаторов на примере наиболее распространенного из них интерпретатора bash, то подготовка практикума преподавателем и системным администратором, а затем его выполнение студентами возможно практически на любых версиях Linux или других UNIX-подобных систем.
В стандартной для ОС Linux конфигурации каталогов файловой системы (подробное рассмотрение которой не входит в задачу данного лабораторного практикума) предусматривается расположение студенческих групп в директории /home/groups (в дальнейших описаниях и примерах предполагается, что лабораторные работы выполняются гипотетическим студентом группы v100, с домашним каталогом (логином) v100-1).
/
|-- home
| |
`-- groups |
| |
`-- v100 |
| |
`-- v100-1 |
`-- usr
`-- share
`-- liblab
`-- proverbs
Рис. 1.1. Часть дерева файловой системы, используемая в практикуме
Работая в своем домашнем каталоге и системных каталогах, предназначенных для использования в практикуме (рис. 1.1), студент должен научиться (см. примеры и зачетные задания к разд. 1):
1)использовать абсолютные и относительные пути (от корневого, домашнего и текущего каталога) для навигации по файловой системе (примеры 1.1 ÷ 1.7);
2)осуществлять просмотр информации в доступных каталогах
ифайлах (примеры 1.8 ÷ 1.15, а так же задание 1.1);
14
3)создавать и редактировать дерево каталогов и файлов, используя различные варианты записи путей к каталогам и файлам (примеры 1.16 ÷ 1.21, а также задание 1.1);
4)выполнять копирование и перемещение объектов файловой системы с использованием различных способов записи путей к ним
(примеры 1.23 ÷ 1.26, задание 1.2);
5)выяснять, какие пользователи и процессы работают в системе и устранять ненужные процессы (примеры 1.27 ÷ 1.31);
6)управлять правами доступа к личным файлам и директориям (примеры 1.32 ÷ 1.39, задание 1.3);
7)понимать на пользовательском уровне основные вопросы, связанные со стандартными потоками ввода/вывода и вводом/выводом команд (примеры 1.33 ÷ 1.44);
8)осуществлять поиск заданных фрагментов текста в файлах
(примеры 1.45 ÷ 1.47, задание 1.3);
9)использовать стандартный для UNIX-систем файловый менеджер Midnight Commander (mc) для выполнения вышеуказанных заданий (задания 1.4 ÷ 1.5).
Для успешного выполнения задания 1.3 (поиск заданных фрагментов текста в файлах) преподавателю и системному администратору необходимо подготовить соответствующий каталог с текстовыми файлами в стандартной кодировке UTF-8, для корректного отображения кириллицы. Вместе с тем при подготовке такого каталога желательно комбинировать тексты на кириллице и латинице на тот случай, если по какой-то причине кириллица не отображается. Тогда можно выполнять поиск фрагментов текста на латинице. Чтобы не тратить усилия на придумывание текстов и фрагментов для поиска, целесообразно воспользоваться распространенными в интернете короткими английскими текстами с готовым переводом: например, известными английскими поговорками или популярными законами Мерфи (Murphy).
Вдальнейшем описании и примерах данного лабораторного практикума предполагается, что файлы для поиска фрагментов текста размещены в директории /usr/share/liblab/proverbs – это тексты известных английских поговорок с переводом.
Каждый UNIX (Linux)-сервер имеет свое собственное название
всети (Host Name). Все примеры данного лабораторного практикума (включая вход в систему) были протестированы на сервере
15