Разное

Команды для pascal abc – Основы pascalabc.net — Викиучебник

1.2. Команды редактора Pascal abc

Для создания и редактирования текстов программ предназначен текстовый редактор системы Pascal ABC. Режим редактирования автоматически уста­навливается сразу после загрузки Pascal ABC: в окне редактора появляется кур­сор.

В нормальном режиме работы редактора (режим вставки) каждый вновь вводимый символ «раздвигает» текст на экране, смещая вправо остаток строки. Редактор также может работать в режиме наложения новых симво­лов на существующий старый текст: в этом режиме новый символ заменяет символ, на который указывает курсор. Для перехода к режиму наложения необходимо нажать клавишу <Insert>. Повторное нажатие этой клавиши восс­тановит режим вставки.

Все команды редактора условно можно разделить на команды перемещения кур­сора, команды удаления/вставки, команды работы с выделенными блоками.

Среди команд перемещения курсора наиболее часто используются сле­дующие:

Pg Up  на страницу вверх; Home  в начало текущей строки;

Pg Dn  на страницу вниз; End  в конец текущей строки;

Ctrl-HOME  в начало программы; Ctrl-END  в конец программы.

Команды удаления и вставки

INS – включить (отключить) режим вставки;

Back space  стереть символ слева от курсора;

Del  стереть символ справа от курсора или выделенный фрагмент;

Ctrl-Y  удалить строку, на которой располагается курсор;

Ctrl-T  удалить слово справа от курсора;

Enter  вставить новую строку.

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

Shift-<стрелки>  выделить фрагмент текста;

Ctrl-A  выделить всё.

Редактор позволяет также обрабатывать выделенные фрагменты текста. Выделение текста выполняется обычными средствами: “мышью” или клавишами Shift со стрелками. Команды редактора находятся в меню Правка (рис. 2).

Рис. 2

Для записи подготовленного текста на диск достаточно нажать кла­виши Ctrl-S или обратиться к разделу меню Файл и опции Сохранить.

Рекомендуемым способом загрузки файлов является выбор раздела Файл и затем опции Открыть. После этих действий на экране появляется диалоговое окно, в котором с клавиатуры необходимо задать имя файла и нажать клавишу Enter. Если файл с таким именем сущест­вует, то в редакционном окне появится содержимое данного файла для дальнейшего редактирования. Если файла с таким именем нет, то редакци­онное окно будет очищено и можно вводить требуемый текст, который при записи на диск (клавишами Ctrl-S) в дальнейшем будет занесен в файл с дан­ным именем. Ускоренное создание нового файла реализуется через раздел Файл (Ctrl-N) и опцию Новый. В этом случае файл не имеет имени и при записи его на диск запрашивается имя файла для сохранения.

1.3. Правила оформления программ

Набор текста программы производится с клавиатуры. После заполне­ния очередной строки следует нажать на клавишу <Enter>, чтобы перевес­ти курсор на следующую строку.

Каждое предложение программы рекомендуется начинать с новой стро­ки. Предложение можно продол­жить в следующей строке (без введения каких-либо знаков переноса или продолжения). Предложение в языке Паскаль может начинаться с любой позиции строки, однако при на­боре программы следует придерживаться единых для всех программ правил оформления текста.

Признаком хорошего стиля программирования является применение отступов в строках при оформлении текстов программ, поскольку они дела­ют программу более наглядной.

Так, объявления (const, type, var и т.п.) и слова begin - end, определяющие тело главной программы, выравниваются по левому краю текста. Все предложения внутри любой пары операторных скобок begin - end записываются с отступом на определенное число позиций по отношению к первой букве слова begin (end).

Предложения тела цикла обычно выравниваются по расположению управляющей переменной цикла в заголовке. В конструкции if-then-else с одинаковых позиций (в разных строках) записываются слова then и else, в операторных скобках  слова begin и end. Предложения внутри подпрограмм записываются тоже с отсту­пом от левого края текста программы.

Программирование на языке Паскаль в соответствии с изложенными правилами именуется структурным программированием.

Важными моментами при написании программы являются выбор имен (идентификаторов) и оформление полученных результатов. При введении обозначений следует отдавать предпочтение мнемоническим (смысловым) именам, а не именам типа х, y, z, которые совершенно не информативны. Результаты программы должны иметь наглядный вывод: сопровождаться за­головками и сообщениями, поясняющими смысл выводимых величин.

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

studfiles.net

Все типы - классы

Можно долго программировать в

PascalABC.NET в обычном стиле и не замечать, что все типы стали классами. Но в один прекрасный момент кто-то после имени переменной нажмет точку и ... получит список методов для этой переменной как объекта класса. Например, достаточно описать целую переменную

var i: integer;

и потом набрать в коде

begin
  i.

После точки всплывет окно с так называемыми экземплярными методами, применимыми к переменной i класса integer. Их всего 6, и на первых порах только один метод из них полезен. Это метод ToString, преобразующий значение i к строке:

var s: string;
s := i.ToString;

Точечная запись в самом начале обучения воспринимается в основном в штыки: слишком непосилен груз нового в обучении. Вам будут говорить: 1) это не Паскаль! 2) это только в этом дурацком .NET так! 3) объекты школьникам - это зло, а для студентов надо давать C++ 4) <здесь - ваша цитата>.

Но факт остается фактом - так писать можно, а значит, все равно так будут писать, и вряд ли это можно будет удержать. Ведь вспомнить имя стандартной функции

s := IntToStr(i);
будет куда как не проще. К тому же, в Delphi для ее использования модуль SysUtils подключать надо. А, да, забыл - есть еще процедура Str с двумя параметрами, один из которых - ссылочный - она еще в теме "Строки" проходится - где-то через полгодика. А здесь мы получили интуитивно понятную запись и сразу начали ее использовать:

Эту запись можно трактовать двояко. Можно считать, что мы даем команду ToString объекту i, и он по этой команде возвращает свое строковое представление. Можно считать, что объект i имеет в своем составе команду ToString и сам ее вызывает. Последняя идея мне нравится больше: все объекты - активные, каждый имеет свою систему команд и готов их вызывать в любой момент.

Здесь мы сталкиваемся с еще одним психологическим барьером: если даже тип integer - класс, то наверняка программа будет работать очень медленно, ведь в ма-аленькой переменной integer - столько методов! они наверняка все и замедляют! Увы - это неверно. На скорость работы программы наличие большого числа методов у объекта класса никак не сказывается.

Но - продолжим! Однажды начав исследовать методы классов, кто-то  обязательно наберет точку после имени типа, а не имени переменной:

integer.

И получит... во всплывающем окне выпадет список так называемых статических методов класса (их называют также классовыми методами, поскольку они связаны с классом, а не с переменной). Те, кто знают, что такое статические методы, смело могут начинать критиковать их использование прямо сейчас. Мы же продолжим наше исследование. Кстати, пока мы тут обсуждали, всплывающее окно погасло, так что самое время его вновь показать, нажав Ctrl-пробел.

Кроме статических методов, мы увидим также две константы:

integer.MaxValue
integer.MinValue

По названиям нетрудно догадаться, что они обозначают наибольшее и наименьшее значения для переменных типа integer. Знатоки скажут, что вместо integer.MaxValue проще написать MaxInt и будут правы - короче. Только подобные константы определены во всех числовых типах: real.MaxValue, byte.MaxValue, word.MaxValue и т.д. А длинная запись - ну, это не самое страшное. Разве для объяснения мы используем самые короткие слова? К тому же, понятно, что значение MaxValue связано именно с типом integer и ни с каким другим.

Среди статических методов класса integer выделяется метод Parse для преобразования строк в целые:

i := integer.Parse('345');

В переменную i, как мы догадываемся, попадет значение 345. Конечно, если мы подадим на вход методу Parse строку, не являющуюся числом, то возникнет исключение, его надо будет обрабатывать, либо использовать статический метод TryParse:

var b: boolean := integer.TryParse('345',i);

Не сможет преобразовать - так и вернет False. Короче, надо разбираться. Отложим пока.

Заметим, что наш алгоритм исследования статических и экземплярных методов класса integer напоминает действия маленького ребенка, исследующего мир: он ПРОБУЕТ ВСЕ и что-то у него получается. Это что-то он будет повторять много раз, потому что ему понравилось, а непонятное отложит - до поры... Это - лучший из известных простых способов исследования мира 🙂

Классов в .NET - тысячи, так что исследования хватит надолго. Наша задача - только дать пищу для размышлений. Ну, например, в классе real мы увидим константы

real.PositiveInfinity; // бесконечность
real.NegativeInfinity; // минус бесконечность
real.NaN;              // не число
real.Epsilon;          // самое маленькое положительное вещественное 

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

Интересно еще поделить на ноль и извлечь корень из отрицательного числа:

r := r / 0;
writeln(r);
r := sqrt(-1);
writeln(r);

Дальнейшие исследования можно продолжить с типом DateTime. Для этого, правда, придется, подключить пространство имен System:

uses System;

DateTime.Now вернет текущие дату и время, их можно присвоить переменной типа DateTime, а потом вычленить из нее день, месяц, год, часы, минуты и секунды с помощью свойств Day, Month, Year, Hour, Minute, Second:

begin
  var d: DateTime := DateTime.Now;
  writeln(d.Day,'.',d.Month,'.',d.Year);
  writeln(d.Hour,':',d.Minute,':',d.Second);
end.

Как, вы еще не знаете, что такое пространства имен и свойства классов? О, да у вас еще все впереди!

pascalabc.net

Все типы - классы

Можно долго программировать в PascalABC.NET

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

var i: integer;

и потом набрать в коде

begin
  i.

После точки всплывет окно с так называемыми экземплярными методами, применимыми к переменной i класса integer. Их всего 6, и на первых порах только один метод из них полезен. Это метод ToString, преобразующий значение i к строке:

var s: string;
s := i.ToString;

Точечная запись в самом начале обучения воспринимается в основном в штыки: слишком непосилен груз нового в обучении. Вам будут говорить: 1) это не Паскаль! 2) это только в этом дурацком .NET так! 3) объекты школьникам - это зло, а для студентов надо давать C++ 4) <здесь - ваша цитата>.

Но факт остается фактом - так писать можно, а значит, все равно так будут писать, и вряд ли это можно будет удержать. Ведь вспомнить имя стандартной функции

s := IntToStr(i);
будет куда как не проще. К тому же, в Delphi для ее использования модуль SysUtils подключать надо. А, да, забыл - есть еще процедура Str с двумя параметрами, один из которых - ссылочный - она еще в теме "Строки" проходится - где-то через полгодика. А здесь мы получили интуитивно понятную запись и сразу начали ее использовать:

Эту запись можно трактовать двояко. Можно считать, что мы даем команду ToString объекту i, и он по этой команде возвращает свое строковое представление. Можно считать, что объект i имеет в своем составе команду ToString и сам ее вызывает. Последняя идея мне нравится больше: все объекты - активные, каждый имеет свою систему команд и готов их вызывать в любой момент.

Здесь мы сталкиваемся с еще одним психологическим барьером: если даже тип integer - класс, то наверняка программа будет работать очень медленно, ведь в ма-аленькой переменной integer - столько методов! они наверняка все и замедляют! Увы - это неверно. На скорость работы программы наличие большого числа методов у объекта класса никак не сказывается.

Но - продолжим! Однажды начав исследовать методы классов, кто-то  обязательно наберет точку после имени типа, а не имени переменной:

integer.

И получит... во всплывающем окне выпадет список так называемых статических методов класса (их называют также классовыми методами, поскольку они связаны с классом, а не с переменной). Те, кто знают, что такое статические методы, смело могут начинать критиковать их использование прямо сейчас. Мы же продолжим наше исследование. Кстати, пока мы тут обсуждали, всплывающее окно погасло, так что самое время его вновь показать, нажав Ctrl-пробел.

Кроме статических методов, мы увидим также две константы:

integer.MaxValue
integer.MinValue

По названиям нетрудно догадаться, что они обозначают наибольшее и наименьшее значения для переменных типа integer. Знатоки скажут, что вместо integer.MaxValue проще написать MaxInt и будут правы - короче. Только подобные константы определены во всех числовых типах: real.MaxValue, byte.MaxValue, word.MaxValue и т.д. А длинная запись - ну, это не самое страшное. Разве для объяснения мы используем самые короткие слова? К тому же, понятно, что значение MaxValue связано именно с типом integer и ни с каким другим.

Среди статических методов класса integer выделяется метод Parse для преобразования строк в целые:

i := integer.Parse('345');

В переменную i, как мы догадываемся, попадет значение 345. Конечно, если мы подадим на вход методу Parse строку, не являющуюся числом, то возникнет исключение, его надо будет обрабатывать, либо использовать статический метод TryParse:

var b: boolean := integer.TryParse('345',i);

Не сможет преобразовать - так и вернет False. Короче, надо разбираться. Отложим пока.

Заметим, что наш алгоритм исследования статических и экземплярных методов класса integer напоминает действия маленького ребенка, исследующего мир: он ПРОБУЕТ ВСЕ и что-то у него получается. Это что-то он будет повторять много раз, потому что ему понравилось, а непонятное отложит - до поры... Это - лучший из известных простых способов исследования мира 🙂

Классов в .NET - тысячи, так что исследования хватит надолго. Наша задача - только дать пищу для размышлений. Ну, например, в классе real мы увидим константы

real.PositiveInfinity; // бесконечность
real.NegativeInfinity; // минус бесконечность
real.NaN;              // не число
real.Epsilon;          // самое маленькое положительное вещественное 

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

Интересно еще поделить на ноль и извлечь корень из отрицательного числа:

r := r / 0;
writeln(r);
r := sqrt(-1);
writeln(r);

Дальнейшие исследования можно продолжить с типом DateTime. Для этого, правда, придется, подключить пространство имен System:

uses System;

DateTime.Now вернет текущие дату и время, их можно присвоить переменной типа DateTime, а потом вычленить из нее день, месяц, год, часы, минуты и секунды с помощью свойств Day, Month, Year, Hour, Minute, Second:

begin
  var d: DateTime := DateTime.Now;
  writeln(d.Day,'.',d.Month,'.',d.Year);
  writeln(d.Hour,':',d.Minute,':',d.Second);
end.

Как, вы еще не знаете, что такое пространства имен и свойства классов? О, да у вас еще все впереди!

pascalabc.net

Отправить ответ

avatar
  Подписаться  
Уведомление о