12+
Конец холивара

Объем: 68 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

Ответ на неизбежный вопрос

Зачем сей древний, как сами 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);

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.