Занятие 1. Pascal abc.net: Основные особенности при работе с переменными

Работа с переменными: особенности

Принцип локальности

В обычном Паскале описание переменных обычно находится до тела программы:

{описание переменных}
begin
  ...
end.

Если программный код достаточно большой, то такой вариант инициализации переменных весьма неудобен. В Pascal abc.net переменные могут описываться внутри тела программы — между begin и end и инициализироваться при описании.

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

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

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

Пример: поиск факториала числа

Раньше:

var n,i,p:integer;
begin
 read(n);
 ...
 p:=1;
 for i:=1 to n do
  p:=p*i;
...

Pascal abc.net:

begin
var n:integer;
read(n);

ИЛИ

begin
var n:=ReadInteger('введите n: ');
var p:=1; // канонический способ - тип определяется по правой части
 
for var i:=1 to n do
  p:=p*i; // можно заменить на компактную форму p*=i;
print (p); // write() заменяем на print()
end.

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

Ввод данных:

var n:=ReadInteger();
var n:=ReadReal();

Канонический способ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var 
  a: integer;
  b: real;
 
begin
  a := 1;
  writeln('a := 1; a = ',a);
  a += 2; // Увеличение на 2
  writeln('a += 2; a = ',a);
  a *= 3; // Умножение на 3
  writeln('a *= 3; a = ',a);
  writeln;
  b := 6;
  writeln('b := 6; b = ',b);
  r /= 2;
  writeln('b /= 2; b = ',b);
end.

Базовые типы и методы внутри стандартных типов

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

arr.MaxValue;

Целочисленные:

var i:integer;
i. ... // выпадает список методов для целочисленных
 
i.MaxValue;
i.MinValue;
i.ToString;

Вещественные:

begin
var a:=1.0;
var b:=0.0; 
 
print (a.MinValue); // -1.79769313486232E+308
 
print (a/b); // в прежних компиляторах выдается RunTime Error - исключение
// в abc.net  результатом будет бесконечность
 
print(Sqrt(-1)); // результат NAN - не число

Исключение — управляемая ошибка, которую можно перехватывать и погашать.

Стандартные функции

Обмен значениями переменных происходит без использования буферной переменной:

swap(a,b);

Поиск максимального и минимального значения:

min(a,b);
max(a,b);

Задача abc_net 1. В танцевальном клубе участвуют 10 представительниц женского пола. Найдите средний возраст танцовщиц. Решить задачу без использования массива, используя принцип локальности, компактную форму записи и методы внутри стандартных типов.

Поделитесь уроком с коллегами и друзьями:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*

Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить