Ответ на неизбежный вопрос
Зачем сей древний, как сами IT, холивар вынесен в заголовок? Затем, что он порождён не проблемами упомянутых языков, или даже различных версий их компиляторов, кои их верные паладины пытаются сравнивать в ходе сей священной войны. Нет, он является плодом фундаментального свойства человеческой психики — человеку удобно то, к чему он привык. Отсюда — каждый сверчок хвалит свой шесток, а каждый кулик — своё болото.
Целью этой небольшой книжки будет ваше знакомство с обоими славными представителями большой семьи языков программирования. Чтобы вы легко могли переходить с одного на другой, по мере необходимости.
Pascal — это яркий представитель европейской школы программирования, известной своими академической логичностью и педантизмом. А C — это продукт американского делового подхода — как говорит Михаил Задорнов: “Всё, чтобы быстрей до бабок добраться!”
Pascal не превзойдён по удобству обучения на нём программированию — именно так он и задумывался его автором Николаусом Виртом. Ныне широко используются такие, базирующиеся на нём, среды визуального программирования, как Delphi (для Windows) и бесплатный Lazarus (для Windows и Linux).
А американец Деннис Ритчи сделал C, как подручный инструмент для создания операционной системы UNIX. Но его компактный синтаксис так полюбился профессионалам, что они наплодили множество других Си-подобных языков: C++, C#, Java и прочие. Хотя бы поэтому полезно знать C. Например, когда у меня возникла необходимость использовать JavaScript, то проблем с освоением его не было — ведь его синтаксис мне был уже знаком по C.
Вообще, лучше идти в увлекательный мир программирования на двух ногах, а не скакать на одной, вступая в спор о преимуществах левой ноги перед правой и наоборот.
А теперь я расскажу вам — почему эта книжка получилась именно такой?
Имея довольно продолжительный опыт преподавания информатики в колледжах, я накопил ряд приёмов эффективной подачи нового материала моим студентам и пришёл к выводу, что использование определений мало полезно и гораздо лучше использовать, для этого, конкретные примеры, объясняя их разными способами. Поэтому, я беру простую и понятную задачу и привожу алгоритм её решения на русском языке — аналогичный по структуре с программой на Паскале. Затем, этот же фрагмент идёт, собственно, на Паскале и, для пущей наглядности, графически иллюстрируется блок-схемой. Для всех ключевых слов Паскаля я даю русский перевод — для тех студентов, которые не учили английского языка.
Довольно быстро я отбросил идею давать конструкции обоих языков параллельно — это бы только перегружало страницы и сбивало с толку читателей, при первом прочтении книги, и было бы неудобно, при последующих обращениях к ней. Гораздо целесообразней — первоначально изложить основы программирования на идеально подходящем для этого Паскале. Причём, чтобы не отвлекать внимания, я привожу только алгоритм решения, опуская начало и конец программы. Вид программы целиком даётся в последних примерах. Во второй части книги приводятся программы на Си, для тех же примеров. Программы там представлены целиком, поскольку синтаксис Си сложнее, чем синтаксис Паскаля, и не хотелось бы, чтобы читатели, запуская примеры на своих компьютерах, тратили время на удовлетворение претензий компилятора.
В конце книжки я предлагаю коллекцию простых задачек, чтобы вы могли закрепить на практике полученные знания. Решая их, читайте внимательно сообщения компилятора и выполняйте то, что он требует и всё у вас получится.
Эта книга не является исчерпывающим справочником по Pascal и C. Я постарался создать максимально компактное и наглядное введение в программирование на этих языках. Поэтому, я сразу же отказался от рассмотрения таких сложных типов данных, как записи, файлы, указатели и так далее. По той же причине я привожу программы с текстовым интерфейсом — чтобы не загромождать книгу описаниями компонентов Delphi и виджетов Qt, а также их свойств. От примеров с графикой, столь популярных у учащихся, тоже пришлось отказаться, поскольку графика по разному реализована в разных компиляторах, а я не хочу привязывать свою книгу только к одному из них.
На чём вам лучше начинать писать свои первые программы? Сразу же забудьте о легендарном Turbo Pascal — он должен кануть в Лету вместе с MS-DOS! В некоторых учебных заведениях его продолжают мучить — из ностальгических соображений — лекции под него давно написаны и книжки в библиотеки куплены. Скачайте лучше бесплатный русский PascalABC.NET — это программа под Windows с графическим интерфейсом. В нём можно писать программы и как в Turbo Pascal и используя конструктор форм, как в Delphi. Для С и Pascal хорош превосходный программистский блокнот Geany — он существует и для Windows и для Linux и к нему можно подключить компиляторы для кучи языков, синтаксис которых он может подцвечивать. Кстати, Linux сама по себе является, в некотором роде, компилятором C и может устанавливать софт из исходных файлов на C.
Часть первая
Язык программирования Pascal
1. Структура программы на языке Pascal
В программе на Pascal выделяют следующие основные разделы: заголовок программы, описания, операторы. Разделы отделяются друг от друга точкой с запятой. В конце программы ставится точка. Каждый раздел начинается со своего ключевого слова. Ключевым словом заголовка является слово PROGRAM. За ним указывается имя программы и информация об использовании устройства ввода-вывода.
Например: PROGRAM PRIMER1 (INPUT, OUTPUT);
Служебные слова INPUT и OUTPUT сообщают компьютеру, что в программе предусмотрен вывод результатов (OUTPUT), а также ввод значений исходных данных в процессе работы программы (INPUT). Для ряда компиляторов заголовок — раздел не обязательный.
Раздел описаний содержит информацию для компьютера о перечне и свойствах величин, используемых в программе, и состоит из описания меток, описания констант, описания типов данных, описания переменных и описания функций и процедур. В каждой конкретной программе могут иметься лишь некоторые из перечисленных описаний, однако приведённый ранее порядок их следования должен выдерживаться.
Основным разделом программы является раздел операторов, который состоит из последовательности операторов, заключённых в операторные скобки BEGIN и END (такая конструкция называется составным оператором). Операторы отделяются друг от друга точкой с запятой.
Комментарии к программе пишутся после // — строка после этого знака игнорируется при работе программы. Блок между фигурными скобками {…} — тоже игнорируется.
Комментарии полезны даже автору программы, когда он обращается к её исходному коду через продолжительное время.
В конце программы на Pascal традиционно ставятся две процедуры READLN, чтобы окно программы не закрывалось сразу же после её выполнения. В этом случае оно закроется после нажатия клавиши Enter.
Не забудьте поставить точку в конце программы.
Стандартные типы данных и описание переменных
Значение присваиваемое переменной должно соответствовать её типу указанному в разделе описаний. В Pascal есть четыре стандартных типа величин (помимо тех, что могут быть дополнительно определены в каждой программе — в разделе описания типов данных): INTEGER (целый), REAL (действительный или вещественный), CHAR (литерный), BOOLEAN (логический).
INTEGER — только целые числа.
REAL — любые числа.
CHAR — множество значений символов, используемых компьютером, упорядоченное по возрастанию кодов символов.
BOOLEAN — состоит только из двух значений: TRUE — истина и FALSE — ложь. Над ними определены булевские операции: конъюнкция (AND), дизъюнкция (OR), отрицание (NOT).
AND — и
OR — или
NOT — не
Описание переменной имеет вид: VAR <имя> : <тип>;
Допускается совмещённая форма описания нескольких переменных одного и того же типа, например:
VAR A, B, SUM : REAL;
Именем (идентификатором) может быть любая последовательность букв и цифр, начинающаяся с буквы.
Константы
Константы определяются до переменных, например:
CONST PI=3.14159;
VAR R, L : REAL;
Процедуры ввода и вывода
Для ввода исходных данных применяются процедуры READ и READLN. После выполнения процедуры READ значение следующего данного читается из этой же строки, а при выполнении процедуры READLN — с новой строки.
READ — читать
Например: READ (X);
READLN — читать с новой строки
В процедурах вывода WRITE и WRITELN переменные, значения которых выводятся, перечисляются в круглых скобках через запятую. Последовательность символов, заключённая в апострофы, выводится в неизменном виде.
WRITE — писать
WRITELN — писать с переходом на новую строку
Например: WRITELN (‘X=’, X);
Вывод значений вещественной переменной с фиксированной точкой:
WRITE (X:8:3);
Где 8 — число позиций, а 3 — число позиций после точки.
Арифметические операции
+ — сложение
— — вычитание
* — умножение
/ — деление
DIV — деление нацело
MOD — остаток от деления нацело
Стандартные математические функции
ABS (X) — абсолютная величина X.
ARCTAN (X) — вычисление угла в радианах, тангенс которого равен X.
COS (X) — вычисление косинуса угла в радианах.
EXP (X) — Вычисление ex.
LN (X) — вычисление натурального логарифма от X.
PI — вычисление числа Пи.
RANDOM — вычисление случайного числа в диапазоне от 0 (включительно) до 1.
RANDOM (N) — вычисление случайного целого числа в диапазоне от 0 (включительно) до N.
ROUND (X) — округление X до ближайшего целого.
SIN (X) — вычисление синуса угла, заданного в радианах.
SQR (X) — вычисление квадрата числа X.
SQRT (X) — вычисление корня квадратного из X.
TRUNC (X) — отбрасывает дробную часть числа X.
Оператор присваивания
Оператор присваивания — :=. Для удобства понимания записи алгоритмов его можно читать, например, так:
X := … — пусть X будет ….
2. Программные конструкции
2.1. Ветвление (выбор)
2.1.1. Альтернатива (условный оператор)
Пример 1.1: Вычисление значений функции Y=1/X.
Если X ≠ 0
то писать (1/X)
иначе писать (‘0 не входит в область определения функции Y=1/X’);
IF X <> 0
THEN WRITE (1/X)
ELSE WRITE (‘0 не входит в область определения функции Y=1/X’);
IF — если.
THEN — то.
ELSE — иначе.
Блок-схема алгоритма вычисления значений этой функции:
2.1.2. Неполный условный оператор
Пример 1.2: Если X <3, то вывести на печать значение X.
IF X <3 THEN WRITE (X);
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.