
- •Содержание:
- •I. Библиотеки подпрограмм как составная часть систем программирования
- •II. Включение текстов из файлов
- •III. Библиотеки объектных модулей
- •IV. Создание статической библиотеки
- •V. Создание библиотеки.
- •VI. Создание динамической библиотеки
- •VII. Пример использования некоторых библиотек
- •VIII. Язык программирования Python. Стандартная библиотека
- •Сетевые протоколы
- •Другие модули
- •IX. Библиотека turbo vision для turbo pascal
- •Пример программы на TurboPascalс использованием библиотекиTurboVision
- •Заключение
- •Список используемой литературы:
VII. Пример использования некоторых библиотек
Задача: Написать программу, которая задумывает число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 3 попытки.
#include <conio.h>
#include <stdlib.h> // для доступа к srand
#include <time.h>
void main()
{
int comp; // задуманное число
int igrok; // вариант, игрока
int n; //количество попыток
time_t t; // текущее время - для инициализации генератора случайных чисел
srand((unsigned) time(&t));
comp=rand()%10+1;
clrscr();
cprintf("\n\rKomputer\"zdumal\"chislo ot 1 do\10\n\r");
cprintf("Vi dolzni ego ugadat za 3 popitki");
n=0;
do {
cprintf("\n\r->");
cscanf("%i",&igrok);
n++;
} while ((igrok != comp)&&(n < 3));
if (igrok == comp)
{
textcolor (RED+BLINK);
cprintf("\n\r VI VIIGRALI!");
}
else
{
textcolor(GREEN);
cprintf("\n\r Vi proigrali");
cprintf ("Komputer zadumal chislo %d",comp);
}
textcolor(LIGHTGRAY);
cprintf("\n\r Dla zavershenia nazmite lubuu klavishu...");
getch();
getch();
}
В данной задаче использованы библиотеки conio.h, stdlib., time.h, их предназначение заключается в следующем:
Библиотека conio.h предназначена для работы с терминалом в текстовом режиме, в данной задаче используется функция textcolor(), которая устанавливает цвет символов по значению параметра, находящегося внутри круглых скобок (textcolor(GREEN)).
Библиотека stdlib.h предназначена для доступа к функции srand – функция инициализации генератора случайных чисел.
Библиотека time.h предназначена для определения дат и времени, в данной задаче предназначена для определения текущего времени для инициализации генератора случайных чисел.
VIII. Язык программирования Python. Стандартная библиотека
Большим достоинством Python как инструмента программиста является стандартная библиотека, входящая в дистрибутив. Первое, с чем сталкивается программист - это, конечно, встроенные типы данных, встроенные исключения, и встроенные функции. Список их невелик, и программисты, привыкшие, что у них сразу есть функции для манипуляций со строками, с датой и временем, регулярные выражения - спрашивают "есть у вас в Питоне вообще хоть что-нибудь?" Все есть, только не в списке встроенных функций, а в модулях стандартной библиотеки. Манипуляции со строками делаются с помощью модуля string, дата и время приходят из модуля time, регулярные выражения в модуле re, доступ к функциям операционной системы - модуль os, и так далее.
Рассмотрим подробнее стандартную библиотеку Питона. Библиотека состоит из нескольких разделов. Во-первых, модули, дающие доступ к внутренностям интерпретатора и особенностям языка и реализации. Во-вторых, модули для манипуляции со строками, в том числе и с юникодовыми строками. Модули, дающие доступ к системной библиотеке, в первую очередь математические функции. Модули для написания тестов в стиле Extreme Programming. Модули для (относительно) переносимого способа доступа к функциям операционной системы. В библиотеку же входит простой пошаговый отладчик и профилировщик - средство нахождения "узких мест" кода. Отдельный большой раздел библиотеки - сетевые протоколы и средства интернет. Python - отличный инструмент для написания клиентов и серверов, CGI, парсеров HTML/XML и т.д.
Рассмотрим некоторые из этих разделов поподробнее. Первый важный модуль - sys, модуль доступа к Системе. Не операционной системе, а Системе. То есть к интерпретатору. Самая популярная функция из этого модуля - exit, то есть завершение работы интерпретатора. Впрочем, она в модуле не единственная. Еще есть функции получения информации о последнем исключении, и тому подобные составляющие интерпретатора. Несколько интересных переменных - стандартные потоки ввода/вывода - stdin, stdout и stderr.
Еще несколько модулей, тесно связанных с интерпретатором. Модуль gc позволяет управлять сборкой мусора. Модуль atexit дает возможность каждому модулю зарегистрировать функцию де инициализации, которая вызовется при завершении программы. В модуле types перечислены все встроенные типы данных, так что программист может выполнить проверку if type(myvar) == types.ListType...
Модуль inspect - для интроспекции объектов во время выполнения. Модуль traceback позволяет получить и распечатать информацию об исключении. Parser действительно дает доступ ко внутреннему парсеру языка, а imp позволяет управлять импортом модулей. Казалось бы, зачем им управлять? Очень просто - вдруг программа распространяется в нестандартном виде или на нестандартном носителе, скажем, в zip-файле. Тут возможность импортировать модули особенным образом программисту сильно пригодится.
Модули marshal, pickle и shelve позволяют сериализовать объекты, то есть превращать их в поток байт, который потом можно сохранить в файл или передать по сети. Впоследствии сериализованные объекты можно восстановить средствами тех же модулей. Marshal умеет сериализовать только встроенные типы данных, включая питоновский байт-код. Этот модуль используется самим интерпретатором для загрузки сохраненного байт-кода из файла при импорте модуля. Pickle не умеет сериализовать и восстанавливать байт-код, и это сделано специально, для безопасности, чтобы программист был уверен, что не получит по сети вирус в байт-коде. Зато у pickle есть средства, с помощью которых программист может управлять сериализацией и восстановлением своих объектов. Модуль shelve позволяет сохранять сериализованные объекты в дисковых накопителях BerkeleyDB, (G/N)DBM). Модули dumbdbm, dbm, gdbm, bsddb дают доступ к соответствующим встраиваемым базам данных; модуль anydbm является оболочкой с единым API, который позволяет использовать любую из имеющихся БД; модуль whichdb позволяет определить, в каком формате текущая БД.
String - модуль для манипуляции со строками без регулярных выражений. Здесь собраны функции для поиска подстроки в строке, замены и тому подобное. Регулярные выражения - в модуле re. Долгое время этот модуль был интерфейсом к библиотеке PCRE (Perl-Compatible Regular Expressions), но в Python 2.0 был полностью переписан для того чтобы работать не только с ASCII-строками, но и с юникодом. Модуль locale дает доступ к функциям локализации, имеющимся в операционной системе; при установки locale этот модуль модифицирует переменные модуля string в соответствии с установленной locale.
Модули для интерфейса с операционной системой. Первый из них - модуль os. В нем собраны функции для управления файловой системой и процессами. Модуль thread содержит низкоуровневый переносимый интерфейс к потокам (нитям, "легким" процессам) операционной системы. Модуль threading содержит классы-высокоуровневые оболочки модуля thread в стиле Java; здесь есть классы Thread, Lock, Condition, Event, Semaphore. Модуль mmap дает переносимый интерфейс к отображаемым в память файлам. Модули glob и fnmatch позволяют манипулировать шаблонами имен файлов. Библиотека signal позволяет устанавливать обработчики для асинхронных событий (POSIX signals в тех ОС, которые эти сигналы поддерживают).
Отдельной группой стоят модули, специфичные для юникса: posix и posixfile (низкоуровневые части модуля os), pwd и grp (доступ к функциям паролей, получение информации о пользователях и группах пользователей), модуль crypt, модули tty и pty (функции терминала и псевдотерминала), модуль fcntl (доступ к системным вызовам fcntl и ioctl), модуль resource (системные вызовы get/set-rlimit, getrusage), модуль syslog, модули pipes и cmd.
Есть модули для доступа к внешним библиотекам. Модули zlib/gzip/zipfile дают доступ к соответствующим функциям компрессии (архивирования). Модули readline и rlcompleter - к библиотеке GNU readline. Библиотеки math, cmath, random дают программисту доступ к широкому спектру математических функций.
Несколько модулей криптографии, из которых 2 для доступа не к алгоритмам шифрования и дешифрования, а к хешам - модули md5 и sha. Модули Bastion и rexec позволяют создавать защищенные среды и выполнять в них код, которому программист не доверяет, например, код, переданный по сети. Программист сам управляет степенью доверия, и сам определяет, какое подмножество встроенных функций и стандартных модулей будет доступно в такой среде.
В дистрибутив Питона входит интерфейс к графической библиотеке Tk (на самом деле в этом интерфейсе спрятан полноценный Tcl :), сами Tcl/Tk в дистрибутив не входят, их надо ставить отдельно. Есть несколько простых модулей для манипулирования аудиофайлами и файлами изображений.