Учебник по программированию.

Первые шаги. Язык программирования PascalABC.

 

Предыдущий параграф Назад в содержание Следующий параграф


§16. Работа в PascalABC.NET.

В данном параграфе мы познакомимся со средой программирования PascalABC.NET. На первый взгляд данный материал надо было дать в начале книги. Почему я не стал этого делать? Прежде чем я начал писать данную книгу, я прочитал множество других. На тот момент, когда я ещё не имел опыта программирования, и если книга начиналась с описания среды программирования, то 90% информации я не понимал. Когда я уже получил небольшой опыт, то мне пришлось вернуться к данному вопросу.

На данном этапе мы уже многое изучили и получили неплохой опыт программирования. Думаю, что до сих пор вам нужно было уметь только набирать текст программы, запускать программу на выполнение и сохранять код программы на жёсткий диск. Мне самому при написании примеров для  этой книги этого было вполне достаточно.

Далее наши программы будут сложнее и объёмнее. Поэтому теперь нам необходимо узнать больше о среде программирования PascalABC.NET.

Для начала разберём что такое PascalABC.NET? Для ответа на этот вопрос я приведу два предложения из справки:

  • PascalABC.NET это язык Delphi (Object Pascal) для платформы Microsoft .NET, содержащий все основные элементы современных языков программирования…
  • Система PascalABC.NET включает в себя также простую интегрированную среду, ориентированную на эффективное обучение программированию.

Получается, что с одной стороны PascalABC.NET это язык программирования, с другой это интегрированная среда для программирования. Если у кого-то возникали вопросы по этому поводу, то надеюсь, что вопрос исчерпан.

Думаю, теперь стало ясно, что PascalABC.NET это не язык Pascal. Дело в том, что PascalABC.NET язык, созданный специально для обучения, и за его основу взят язык Pascal. Поэтому PascalABC.NET в некоторых случаях отличается от TurboPascal.

Идём дальше. Что такое интегрированная среда. Слово интегрировать обозначает объединение в единое целое каких либо отдельных частей. Значит, в интегрированной среде объединены какие-то отдельные части.

Нам уже известно, что код программы представляет собой текстовый файл. Что бы этот код перевести в машинный необходима программа, которая называется компилятором. Как раз интегрированная среда программирования  и объединяет в себе текстовый редактор, для написания кода, и компилятор, который этот код переводит в машинный.

Так же интегрированная среда имеет определённые возможности для отладки кода. Отладка кода это исправление ошибок. Если вы не просто читаете книгу, а сами решали предложенные в ней задачи, то наверняка ни одной программы вы не написали сразу без ошибок. И ни одна, написанная вами программа, не заработала сразу правильно. Я, конечно, не буду утверждать, но, на мой взгляд, написать более менее сложную программу сразу и без ошибок невозможно. Так вот как раз интегрированная среда очень хорошо помогает программисту в отладке программ.

Так же интегрированная среда PascalABC.NET содержит в себе справку, в которой содержится материал по языку и примеры программ для самообучения.

Плюс ко всему в PascalABC.NET есть обучающая программа, в которой вы можете найти множество задач по различным темам и сверить свой ответ с правильным.

Обо всём этом и пойдёт речь в данном параграфе.

При написании учебника, я придерживался принципа, при котором изучение параграфа должно занимать один подход. Т.е. вы сели, изучили материал параграфа, затем выполнили задания. Всё это предположительно можно сделать за один раз. Этот параграф за раз изучить вероятнее всего не получится. Тем не менее, я не стал его делить по той причине, что вся информация в нём относится к одной теме. Поэтому изучайте данный параграф порциями, которые определяйте сами для себя.

В конце параграфа в качестве задач для самостоятельного решения будет предложено решить задачи из электронного задачника по программированию, который заложен в PascalABC.NET. Если за один подход весь параграф изучить не получится, то для того, что бы не заниматься только теорией, можете изучить последний раздел данного параграфа, в котором как раз идёт описание этого задачника, и начать решать задачи из него. Их там достаточно много и хватит не на один день.


Редактор кода.

Текстовый редактор, в котором вы набираете код программы, называется редактором кода. Т.к. плюс к тому, что делает просто текстовый редактор, редактор кода делает ещё то, что нужно только программисту для написания кода программ.

В этом учебнике я не буду расписывать то, что может делать обычный текстовый редактор. Тем белее, что написав не одну программу, вы уже знакомы с основными принципами работы в нём. Далее буду писать только о тех возможностях, которые нужны программисту.




Выделение текста различным цветом.

Думаю, что вы уже обратили внимание на то, что в текстах программ буквы в том или ином случае имеют различные цвета. Это потому, что редактор кода подсвечивает или выделяет шрифт слов в зависимости от их назначения. Далее в таблице приведу, что и как выделяет редактор кода:



Как выделяется

Что выделяется

Пример

Жирный шрифт

Зарезервированные

(ключевые) слова

begin

Синий цвет шрифта

Тип данных

Integer

Строковая константа

's='

Зелёный цвет шрифта

Комментарии

//Входим в цикл

Числовая константа

9



Шаблоны.

Вы наверняка заметили, что при наборе кода программы приходится набирать много одинаковых словосочетаний. Например: begin…end; for…to…do; if…then…else; и т.д. Для вашего удобства есть возможность вводить уже готовые словосочетания с помощью нажатия сочетания клавиш «Shift+Пробел». Например, создайте новый файл и наберите prog, после чего нажмите «Shift+Пробел». У вас появится следующее:



program Program4;


begin

 

end.



Далее в таблице будут приведены различные сочетания символов и шаблоны, которые соответствуют данным сочетаниям. В ней содержаться не все возможные шаблоны, а только тех конструкций, которые мы уже знаем. При изучении новой конструкции, мы так же будем узнавать и сочетания символов, которые нужны для создания шаблона.



Сочетание

символов

Шаблон


Сочетание

символов

Шаблон


Сочетание

символов

Шаблон

Prog

program Program4;


begin

 

end.

ifb

if  then

begin


end;

p

procedure ();

begin


end;

F

for := to do

ifeb

if  then

begin


end

else

begin


end;

fu

function (): ;

begin


end;

Fb

for := to do

begin


end;

w

while  do

c

case  of

  : ;

  : ;

end;

R

repeat

 

until ;

wb

while  do

begin


end;





Всплывающее меню при нажатии левой кнопки мыши.

Если щёлкнуть в любом месте редактора кода, то появится следующее меню:



Данное меню предлагает выполнить кое-какие команды. Рассмотрим некоторые из них.

Команда «Перейти к определению». Если навести курсор на имя переменной, подпрограммы или константы, встретившееся в коде программы, и вызвать данную команду, то курсор установится в то место, где данная переменная или подпрограмма описываются. Данная команда так же доступна в меню: «Сервис->Перейти к определению», или используйте сочетание клавиш «Ctr+Enter».

Команда «Переименовать». Если вам понадобилось переименовать какую-либо переменную, подпрограмму или константу, то достаточно навести курсор на это имя в любом месте кода и вызвать данную команду. Появится следующее окно:



В этом окне необходимо написать новое имя. После нажатия кнопки «OK», имя переименуется на новое во всех местах кода, где оно встречается. Используя данную команду, вам не придётся самостоятельно выискивать, где встречается данное имя и переименовывать его. Всё это сделается автоматически.

Команда «Форматировать код». Как вам известно, код программы можно писать в одну строчку, разделяя операторы точкой с запятой. Однако читать код удобнее, если он выглядит определённым образом. Как раз данная команда и отформатирует ваш код таким определённым образом. Пример:

До форматирования:


var s: string;

begin

s := 'Привет всем!';

writeln(s);

end.


После форматирования:

var

  s: string;


begin

  s := 'Привет всем!';

  writeln(s);

end.

Лично я стараюсь писать код сразу в отформатированном виде. Однако если вы только начинаете программировать, то рекомендую пользоваться этой функцией для того, что бы увидеть, как должен выглядеть код, что бы он был понятен другим. Данная команда дублируется кнопкой на панели инструментов, которая выглядит следующим образом:



Так же данная команда доступна в меню: «Сервис -> Форматировать код».

Команда «Выполнить» вам уже знакома. Вы её наверно запускали с панели инструментов или из меню. Теперь вы знаете, что запустить её можно и здесь.

С командами «Вырезать», «Копировать», «Вставить» думаю всё понятно. То же самое, что и в обычном текстовом редакторе. Остальные команды рассмотрим по ходу изучения соответствующего материала.


Переход назад и вперёд.

Наверняка вы бываете в Интернете, и используете для этого какой-нибудь браузере. Поэтому вам знакома такая функция как переход назад и вперёд. В PascalABC.NET так же существует возможность перемещаться по коду в места предыдущих работ и обратно. Для этого  можно выбрать пункты «Перейти назад» или «Перейти вперёд» в меню «Вид». Или воспользоваться сочетаниями клавиш «Ctr+-» и «Ctr+Shift+-» соответственно. Так же есть кнопочки на панели инструментов, которые дублируют данные команды. Выглядят они следующим образом:



Поиск  слов.

Вы можете автоматически найти в тексте любое слово. Для этого необходимо вызвать команду из меню: «Правка->Найти» или нажать сочетание клавиш «Ctr+F». При этом появиться следующее окно:



Если вы уже скопировали слово в буфер обмена с помощью сочетания клавиш «Ctr+C», то оно будет находиться в поле «Искать». Если там пусто, то наберите его вручную. Далее нажмите кнопку «Искать далее». После этого компьютер начнёт искать нужное вам слово с того места, где находится в данный момент курсор. Если такое слово есть в тексте кода, то оно выделится и курсор установится в его конец. Так же данную команду можно вызвать сочетанием клавиш «Ctr+F».

Как правило, приходится искать это же слово и дальше по тексту. Для этого можете воспользоваться сочетанием клавиш «Ctr+L» или вызвать соответствующую команду из меню: «Выполнить->Найти далее».

Если вы дошли до конца и захотели снова «пройтись» по тексту и просмотреть слова в обратном порядке, то можете поставить галочку в пункте «Искать вверх». После этого поиск будет происходить вверх по тексту от курсора.

Если вам принципиально, какие буквы используются в слове, большие или маленькие, то поставьте галочку в пункте «Учитывать регистр».

Если не стоит галочка в пункте «Слово целиком», то  слово будет находиться даже в том случае если оно входит в состав другого слова. Например, если вы ищите переменную с именем «b», то результатом поиска станет и первая буква слова begin. Для того, что бы результатом поиска не стало слово, в состав которого входит ваше слово, поставьте галочку в данном пункте.

Ко всему вышесказанному, стоит добавить, что кроме слова можно искать и сочетание слов или целую строку.



Смена идентификатора.

Ниже по тексту мы познакомились с командой «Переименовать». Есть ещё подобная команда, позволяющая переименовывать идентификаторы. Она отличается от предыдущей тем, что можно контролировать процесс замены идентификаторов. Эту команду можно вызвать из меню «Правка -> Заменить» или с помощью комбинации клавиш «Ctr+R». При этом появляется следующее окно:



Принцип поиска тот же, как и в предыдущем случае. Когда нужное слово найдено, можно нажать кнопку «Заменить». После этого найденное слово заменится на то, которое находится в поле «Заменить на».  Затем снова нужно нажать кнопку «Искать далее». В этом и заключается контроль. Это удобно в том случае, если нам понадобилось из одной переменной сделать две с разными именами.

При нажатии кнопки «Заменить всё» появится следующее окно:



В этом окне вы можете или подтвердить замену найденного слова кнопкой «Да» или не подтвердить кнопкой «Нет». Следующее слово будет найдено автоматически и снова появится данное окно. Если нажать кнопку «Всё», то это будет равносильно вызову, уже известной нам, команды «Переименовать».



Настройка редактора кода.

Что бы пользоваться всеми возможностями редактора кода его необходимо настроить. Это делается в окне «Настройки», которое вызывается из пункта меню «Сервис -> Настройки». В левой части окна находятся вкладки. Необходимо выбрать вкладку «Редактор». Окно, которое должно появиться, представлено далее на рисунке.



В этом окне можно выбрать шрифт и его размер, а так же в нём есть следующие пункты:

Пункт «Показывать номера строк». Если поставить галочку в этом пункте, слева от кода появится столбик, где будут находиться номера строк. Это удобно, когда у вас большой текст и при компиляции выйдет несколько ошибок. У каждой ошибки указывается номер строки, в которой эта ошибка допущена. Если строки пронумерованы, то нетрудно будет найти эти ошибки в тексте.

Пункт «Подсвечивать парные скобки». При выборе данного пункта будут подсвечиваться парные скобки. Говоря другим языком, будут подсвечиваться открывающая и закрывающая скобки. Скобки подсвечиваются если курсор стоит рядом с любой из скобок, рядом с открывающей или с закрывающей. Эта функция удобна, если вам необходимо написать большую «многоэтажную» формулу. Далее пример того, как это выглядит в редакторе кода:



Пункт «Подсвечивать парные операторные скобки». В данном случае операторными скобками называются слова begin и end. Т.е. begin открывающая операторная скобка, end закрывающая операторная скобка. Очень удобная функция, рекомендую. Пример:



Пункт «Разрешить сворачивание кода». Удобная функция, если у вас достаточно большой код с большим числом подпрограмм. При включении данной функции код можно минимизировать, убрав тело подпрограммы или основной программы. Также можно минимизировать разделы описания переменных и констант. Поставив галочку, вы сами увидите, как и что можно минимизировать. Пример:


До минимизации:





После минимизации:


Пункт «Конвертировать Тab в пробелы». При выборе данного пункта, при нажатии кнопки Tab будут вставляться пробелы. Причём количество вставляемых пробелов так же можно выбрать.

Пункт «Переходить к месту ошибки в стандартных модулях». Что такое модуль мы ещё не знаем. Об этом речь будет идти в следующем параграфе. Забегая вперёд, скажу следующее. Все процедуры и функции, которыми мы уже умеем пользоваться, находятся в одном из стандартных модулей. Если произойдёт ошибка во время выполнения какой-либо такой подпрограммы, то, если данный пункт выбран, автоматически откроется текст стандартного модуля и курсор установиться в строчке, при выполнении которой произошла ошибка.

В любом случае пока ставить здесь галочку не рекомендую. Т.к. пока у вас не достаточно знаний для понимания текстов модулей. К тому же если вы случайно измените текст модуля и сохраните изменения, то исправить модуль вы уже вряд ли сможете.


Анализ кода времени разработки (Intellisense).

При набирании кода, вы должны были заметить, что при набирании процедуры или функции после ввода открывающей скобки появляется подсказка. Выглядит это следующим образом:


В левом верхнем углу подсказки написано «1 из 2». Это означает, что процедур с данным именем две, т.е. всего две перегруженные процедуры. Выбрать нужную можно нажатием кнопки со стрелочкой вверх или кнопки со стрелочкой вниз. Внизу подсказки даётся описание процедуры.

Данная подсказка работает в том случае если стоит галочка в пункте «Подсказка параметров функций». Данный пункт находится во вкладке Intellisense. Окно данной вкладки показано далее на рисунке:

       


Пункт «Включён». Данный пункт включает или выключает анализ времени разработки. Что это такое? Можно сказать, что это некая подпрограмма, которая постоянно отслеживает то, что вы набираете в редакторе кода и предлагает вам всякого рода подсказки, которые можно включить или выключить.

Пункт «Подсказки при наведении мышью». Название говорит само за себя. Включите данный пункт и попробуйте открыть любой код программы. Поводите мышкой, и вы увидите, как для вас будут появляться различные подсказки. Данная функция очень удобна при изучении чужого кода. Пример:



Подсказка может подсказывать не только описание процедур и функций, но и тип переменных.

Пункт «Подсказка по точке». Данный пункт рекомендую не отключать. Подсказка появляется после ввода точки. Как вы уже знаете, точка используется для обращения к полям переменных типа запись. Именно в этом случае и выходит подсказка, о том какие поля существуют у данной переменной. Так же точка используется в некоторых других случаях, о которых мы ещё не знаем, но в которых так же будет всплывать подсказка.  В данном случае можно клавишами «вверх» и «вниз» выбрать нужное слово и нажать «Enter». После чего данное слово автоматически появится в тексте кода. Пример:



Пункт «Подсказка по нажатию клавиш». При включенном данном пункте, во время набора кода при нажатии практически любой клавиши будет всплывать подсказка. Причем, так же как и в предыдущем случае, клавишами «вверх», «вниз» можно выбрать нужное слово и нажать «Enter». Это слово появится у вас в коде.

Данную возможность можно использовать и в качестве справочника. Если вы забыли, как пишется то или иное слово, то вам не нужно открывать справку, что бы посмотреть на него. Достаточно набрать первую букву или первые две буквы, и выбрать это слово из списка. Так же если вы забыли описание той или иной функции или процедуры, то наберите её имя и вам выйдет в качестве подсказки описание этой подпрограммы. Пример:



Пункт «Панель навигации по исходному коду». При выборе данного пункта над окном, в котором вводится текст, появляется панель навигации по исходному коду в виде двух всплывающих списков. В правом списке находятся все подпрограммы и переменные, которые описаны в тексте программы. Выбрав любую из них, курсор автоматически установится в место, где данная подпрограмма или переменная описывается. Очень удобно, если у вас большой текст программы. Пример:



Левый всплывающий список пока не понадобится, т.к. пока не изучили ООП. Настройку вложенности пространства имён так же пока не трогайте.


Отладка программ.

Как было сказано выше отладка кода это исправление ошибок. В PascalABC.NET существуют очень удобные средства для отладки программы. О них и пойдёт речь в данном подразделе.

Самое первое средство отладки, которое вы узнали это команда «Выполнить», которая находится на панели инструментов. Так же эту команду можно вызвать из меню: «Программа -> Выполнить», или клавишей «F9». После вызова данной команды программа запускается на выполнение.

Если вы не хотите запускать программу, а просто хотите проверить её на наличие синтаксических ошибок, то можете вызвать команду «Компилировать». Эта команда запускается из меню: «Программа -> Компилировать» или сочетанием клавиш «Ctr+F9». Примечание: у этой команды несколько иное назначение, она компилирует программу, но не запускает её. Подробнее об этой команде мы узнаем позднее, однако лично я часто использую её именно для проверки ошибок.

Просмотр промежуточных значений переменных. Очень часто вновь написанная программа работает некорректно, и для того, что бы определить ошибку, необходимо знать промежуточные значения переменных в каком либо месте во время работы программы. Для этого можно прописать в нужном месте кода команду по выводу на экран промежуточных значений переменных. Однако можно воспользоваться и другим заложенным в PascalABC.NET средством. Поставьте большую красную точку слева от кода напротив нужной строчки. Делается это одинарным нажатием левой кнопкой мыши. При этом строка выделится красным цветом. У вас получится следующее:



После вызова команды «Выполнить», программа остановит свою работу, выполнив весь код до этой строчки. При этом данная строка выделится жёлтым цветом:



Для просмотра значений переменных, существующих в программе, используется окно «Локальные переменные», которое можно вызвать из меню: «Вид->Локальные переменные». Это окно появляется под редактором кода, так же как и «Окно вывода», и выглядит следующим образом:



Изучив значения переменных, можно продолжить работу программы, нажав кнопку «Выполнить». Если данная строчка находится в теле цикла, или подпрограммы, то дойдя снова до этой строчки, программа остановит свою работу. Досрочно завершить выполнение программы можно, нажав кнопку «Завершить» на панели инструментов:



Или командой из меню: «Программа -> Завершить», или сочетанием клавиш «Ctr+F2».

Убрать красную точку можно так же одинарным щелчком мыши.

Пошаговое выполнение программы. Ещё одна возможность отладки программы это пошаговое её выполнение. С помощью клавиши «F8» вызывается на выполнение только один оператор кода. После выполнения одного оператора выполнение программы останавливается. После следующего нажатия «F8» снова выполняется один оператор. Вместо клавиши «F8» можно вызвать эту же команду из меню: «Программа -> Шаг без входа в подпрограмму».

Используя данную команду, вы не сможете зайти в тело подпрограммы. Т.е. подпрограмма полностью выполнится, и вы остановитесь на следующем операторе. Для того, что бы зайти в подпрограмму используйте команду «Программа -> Шаг с входом в подпрограмму» или клавишу «F7».

       

Электронный задачник по программированию.

В интегрированной системе программирования PascalABC.NET есть встроенный задачник по программированию. Его удобно использовать для самостоятельных занятий, а так же для проведения тестов и экзаменов по программированию. Компьютер даёт задание, а потом проверяет, правильно оно решено или нет.

Рассмотрим, как это всё реализовано.

Получить или просмотреть задания можно в пункте меню «Модули -> Просмотреть задания». При этом должно появиться следующее окно:



В этом окне можно выбрать группу и номер задания. В низу окна даётся расшифровка темы каждой группы, а так же даётся количество заданий в этой группе и название выбранного задания  в данном окне «Begin1». После выбора задания необходимо нажать кнопку «Просмотр» и задание выйдет в новом окне:



Данное окно рассматривать не будем. Думаю, что вы сами легко с ним разберётесь.

Так же все задания какой либо группы можно просмотреть на одном листе. Для этого необходимо нажать кнопку с листком предыдущего окна. При этом откроется интернет браузер, в котором будут все задания на одной страничке.

Получив задание, его можно начинать решать. Для того, что бы компьютер мог проверить результат работы вашей программы, её необходимо вписать в шаблон, который можно создать, вызвав команду из пункта меню: «Модули -> Создать шаблон программы». При этом вы увидите следующее окно:



В этом окне необходимо вписать нужное вам задание и нажать кнопку загрузка, после чего появится новая программа со следующим кодом:


uses

  PT4;


begin

  Task('Begin1');


end.


Как раз в этот текст необходимо вписать ваш код и нажать кнопку выполнить. Все числовые данные, которые даются в задании, необходимо считать с помощью процедуры read. Все данные, которые необходимо получить, решив задание, необходимо вывести с помощью процедуры write. Например, код программы, которая решает задание Begin1, будет выглядеть следующим образом:


uses

  PT4;


var a,P:real;


begin

  Task('Begin1');

  read(a);

  P:=4*a;

  write(P);

end.


После нажатия кнопки «Выполнить», вы увидите следующее окно:



Если задание решено верно, то внизу окна так и будет написано: «Верное решение».

Плюс к тому, что компьютер определяет правильность вашего решения, компьютер ещё ведёт статистику ваших занятий. Для того, что бы её просмотреть необходимо вызвать команду из меню: «Модули -> Просмотреть результаты», после чего вы увидите следующее окно:


Такой способ занятий, как было описано выше не совсем удобен, т.к. cначала необходимо найти задание в одном окне, затем создать шаблон в другом. Можно поступить иначе. Создать шаблон, затем запустить его на выполнение. При этом появится окно с заданием. Если вы ещё не написали свой код, то в статистике будет записано «Ознакомительный запуск». Окно представлено далее на рисунке.



После решения данной задачи можно стереть свой код из шаблона и поменять строчку Task(Begin1) на Task(Begin2). Т.е. процедура Task формирует задание, которое указано в скобках. Далее, можно запустить программу на выполнение и вы увидите новое задание в ознакомительном режиме.

Конечно если задание сложное, то вам придётся открыть его в отдельном окошке, что бы во время написания кода посматривать на него. Но шаблон вполне можно менять самому.

Теперь ряд нюансов. В данном электронном задачнике множество заданий, но не все они распространяются свободно. Это значит, что не все задания могут быть проверены компьютером, если вы просто скачали из интернета PascalABC.NET. Обратите внимание, на то, что в левом верхнем углу окна представленного на предыдущем рисунке есть название задания, и если это задание в свободном распространении, то оно помечено символом «є». Поэтому вы сразу можете определить стоит делать это задание или нет. Если задание распространяется не свободно, то оно проверено не будет.

Далее в таблице приведены группы и номера заданий, которые распространяются свободно, и которые вы можете решать. На мой взгляд, их вполне достаточно.


Задание

номера

Begin

1-40

Integer

1-30

Boolean

1-40

If

4,6,8,12,22,26

Case

2,4,9,10,18

For

5,12,13,15,16,19,20,33,36

While

1,2,4,7,11,12,22,23

Series

1,15-17,19,21,30

Proc

4,8,10,20,21,25,40

Minimax

1,6,12,19,22

Array

4,7,16,32,47,54,63,71,79,89,92,108,112,116,134

Matrix

7,24,36,53,74,82,88,100

String

9,10,19,29,41,44,63,70

File

2,10,25,27,41,43,48,50,58,61,63,67,74

Text

1,4,16,21,24,34,38,42,44,57

Param

1,17,30,40,49,53,59-61

Recur

1,4,5,10,14-18,21,25,27


В задачнике есть ещё несколько групп, которые не приведены в таблице. Для решения задач из этих групп вам понадобятся знания, которые ещё не даны или не даются в данном учебнике вообще. Полный список вы можете узнать на официальном сайте PascalABC.NET.

Следующий нюанс. Если в условии даны значения нескольких переменных, в виде двух и более строчек, то вводить их надо по порядку по строчкам, а не по столбикам. Например, задание «Begin 40»:



Для ввода данных необходимо написать следующий код:


  read(A1,B1,C1,A2,B2,C2);


Если вы введёте в порядке по столбикам:


  read(A1,A2,B1,B2,C1,C2);


то вы получите неверный результат.

В некоторых задачах для вывода необходимо сформировать строку. При этом необходимо предусмотреть пробелы между словами и отсутствие пробела в конце строки. Если где-то вылезет не нужный пробел, то задача будет решена не верно. Для примера решим задание «Case18». Суть задания в том, что необходимо сформировать разговорную строку из целого числа. Например, имеем число 114, нам необходимо получить строку «сто четырнадцать». Далее пример решения этого задания:


uses  PT4;


var N:Integer;

    s:string;


procedure FormStr;//Формируем строку

procedure decyatky;

begin

  case N of

    10: s:=s+' десять';

    11: s:=s+' одиннадцать';

    12: s:=s+' двенадцать';

    13: s:=s+' тринадцать';

    14: s:=s+' четырнадцать';

    15: s:=s+' пятнадцать';

    16: s:=s+' шестнадцать';

    17: s:=s+' семнадцать';

    18: s:=s+' восемнадцать';

    19: s:=s+' девятнадцать';

  end;

end;

begin

  case N div 100 of

    1:s:='сто';

    2:s:='двести';

    3:s:='триста';

    4:s:='четыреста';

    5:s:='пятьсот';

    6:s:='шестьсот';

    7:s:='семьсот';

    8:s:='восемьсот';

    9:s:='девятьсот';

  end;

  N:=N-(N div 100)*100;

  case N div 10 of

    1:begin

       decyatky;

       exit

      end;

    2:s:=s+' двадцать';

    3:s:=s+' тридцать';

    4:s:=s+' сорок';

    5:s:=s+' пятьдесят';

    6:s:=s+' шестьдесят';

    7:s:=s+' семьдесят';

    8:s:=s+' восемьдесят';

    9:s:=s+' девяносто';

  end;

  N:=N-(N div 10)*10;

  case of

    1:s:=s+' один';

    2:s:=s+' два';

    3:s:=s+' три';

    4:s:=s+' четыре';

    5:s:=s+' пять';

    6:s:=s+' шесть';

    7:s:=s+' семь';

    8:s:=s+' восемь';

    9:s:=s+' девять';

  end;

end;


begin

  Task('Case18');

  read(N);

  FormStr;

  write(s);

end.


В заданиях группы «Series» необходимо работать с наборами данных, размерность которых заранее не известна. Т.е. в задании даётся пример какой-то последовательности данных, однако при запуске программы на выполнение заранее неизвестно какое количество элементов будет. Например, откройте задание «Series15»:



В данном случае мы имеем последовательность из 5 элементов, включая 0. Если мы закроем это окно и откроем его снова, то количество элементов в этой последовательности изменится. Для того, что бы считать такой набор данных предлагаю создать массив из 100 целых чисел. В него и будем записывать данные. При этом нам понадобиться переменная, которая будет хранить в себе количество нужных нам элементов в массиве. Далее пример решения данной задачи:


Uses PT4;

var m:array [1..100]of integer;

    K,

    i,//количество элементов в наборе

    number//Номер первого элемента большего К

    :integer;


begin

  Task('Series15');

  i:=1

  read(K);

  while true do

    begin

      read(m[i]);

      if m[i]=0 then break;

      Inc(i);

    end;

  number:=0;

  for var j:=1 to i do

   begin

     If m[j]>K then

       begin

         number:=j;

         break;

       end;

   end;

write(number); 

end.


Разберём ещё одно задание «Proc4». Сложность здесь может возникнуть с пониманием что такое входящие и выходящие параметры. Входящий параметр, это параметр, значение которого используется внутри процедуры для каких либо вычислений. Этот параметр мы должны передать процедуре при её вызове. Выходящий параметр это параметр, который мы должны получить в результате работы процедуры. В случае с функцией всё ясно, что входит и что выходит. В случае с процедурой дело обстоит несколько по-другому.

В предыдущем параграфе мы познакомились со словом var, которое используется при описании параметров процедур и функций. Вспомним, что если данное слово написать перед идентификатором параметра, то это будет означать, что процедура не будет создавать свою переменную, а будет работать именно с той переменной, которая была передана в качестве параметра. Т.е. в процессе работы она может изменить значение переменной из основной программы. В этом и заключается суть выходного параметра. Т.е. все входные параметры объявляются без слова var, все выходные со словом var.

Далее задание «Proc4» и пример его решения:



uses  PT4;

var a,P,S:real;


procedure TrianglePS(a:real;Var P,S:real);

begin

  P:=3*a;

  S:=a*a*Sqrt(3)/4;

end;


begin

  Task('Proc4');

  for var i:=1 to 3 do

   begin

     read(a);

     TrianglePs(a,P,S);

     Write(P,S);

   end;

end.


Более подробно о данном электронном задачнике по программированию можно узнать на официальном сайте PascalABC.NET.


В данном параграфе мы познакомились со средой разработки PascalABC.NET. Узнали возможности редактора кода и средства отладки программ. А так же познакомились с электронным задачником по программированию.


Задачи.

В данном параграфе предлагаю решить задачи из электронного задачника по программированию, которые распространяются свободно и приведены в таблице.



Предыдущий параграф Назад в содержание Следующий параграф