Вниманию пользователей gmail.com! В последнее время мои письма там едва ли не все оказываются в «папке для спама». Со своей стороны могу сказать точно, что почтовая система у меня настроена совершенно корректно, а с IP-адреса, с которого отправляются мои письма, никто никогда не только спама не рассылал, но и вообще этим адресом никто кроме меня никогда не пользовался. Мракобесие фашистов из Гугла, чья цель — прогнуть под себя весь Интернет, в последнее время стало зашкаливать. Так или иначе, если вы ждёте письма от меня, не забывайте поглядывать в «спам». | Вниманию пользователей яндекс-почты! Перед отправкой мне писем из их веб-интерфейса отключайте использование формата HTML! Мой почтовый клиент не поддерживает и (принципиально!) никогда не будет поддерживать HTML в письмах, а продираться сквозь html-тэги крайне неудобно. Если вы не понимаете, о чём идёт речь — то вас это касается в первую очередь. Если вы не уверены в своих силах, задайте вопрос техподдержке Яндекса. Получив письмо с тэгами, я один раз отвечаю лаконичным "отключите HTML", последующие письма с тэгами с того же адреса игнорирую. |
Программирование: введение в профессию. Том 1: азы программированияОпубликовано admin в Март 23, 2016 - 22:54. |
Аннотация
Первый том серии «Программирование: введение в профессию» включает две основные части.
В первую часть книги вошли избранные сведения из истории вычислительной техники, обсуждение некоторых областей математики, непосредственно используемых программистами (таких как алгебра логики, комбинаторика, позиционные системы счисления), математических основ программирования (теория вычислимости и теория алгоритмов), принципы построения и функционирования вычислительных систем, начальные сведения о работе с командной строкой ОС Unix.
Вторая часть посвящена начальным навыкам составления компьютерных программ на примере Free Pascal под ОС Unix. Материал ориентирован на изучение в будущем языка Си, так что, в частности, много внимания уделено работе с адресами и указателями, построению списков и других динамических структур данных; в то же время многие возможности Паскаля из рассмотрения исключены. Даются сведения о правилах оформления текстов программ, о тестировании и отладке.
Публикация в бумажном варианте
Опубликовано издательством МАКС Пресс (Москва) в 2016 году. ISBN 978-5-317-05222-5.
Электронная версия
Электронная версия, идентичная печатному изданию, доступна здесь: http://www.stolyarov.info/books/pdf/progintro_vol1.pdf
Статус бумажной версии
Книга распространялась среди донэйторов проекта и поступала в свободную продажу. К настоящему моменту распродана.
Архив примеров программ
Архив, содержащий примеры программ из первого и второго тома, можно скачать здесь: http://www.stolyarov.info/books/extra/progintro_vol1_2_examples.tgz
Напоминаем, что раскрыть этот архив можно командой
tar -xzf progintro_vol1_2_examples.tgz
Дополнительная информация
Восстановление исходных настроек терминала
У тех, кто попытается воспользоваться модулем CRT, рано или поздно возникнет вопрос, ну почему же невозможно из программы на Паскале перед завершением работы восстановить режим работы терминала в его исходном виде. Надо сказать, что это действительно неудобно. Но, хотя в самом FreePascal никакого специального средства для этого не предусмотрено, восстановить терминал всё же можно — вот так:
write(#27'[0m');
Это выдаст на терминал стандартную Esc-последовательность, сбрасывающую все настройки в состояние по умолчанию.
Датчик псевдослучайных чисел
При программировании игр обычно требуется внести в происходящее некое разнообразие; этого можно добиться с помощью случайных или псевдослучайных чисел. В Паскале для генерации псевдослучайных чисел предусмотрена процедура Randomize
и функция Random
. Вызов Randomize
обычно вставляется куда-то в самое начало главной программы (нужно, чтобы эта процедура была вызвана один раз, причём раньше первого обращения к функции Random
):
begin Randomize; { ... }
Далее функция Random
, если её вызвать без параметров, вернёт (псевдо)случайное число типа real
на полуинтервале от 0 до 1 (включая ноль, но не включая единицу), а если нужно случайное целое число, то можно вызвать функцию с целочисленным параметром, и она вернёт случайное число типа longint
от 0 до N
, не включая N
(где N
— значение параметра). Например:
const maxnum = 500; var x: real; k: integer; begin { ... } x := random; k := random(maxnum) + 1; { ... }
Здесь переменная x
получит псевдослучайное значение от 0.00 до 1.00 (не включая 1.00), а переменная k
— значение от 1 до 500.