Разделы презентаций


Си с т е ма прогр а ммирования P as c alAB C. NE T : прос т ейш и е новые возм

Содержание

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд Русские идентификаторыВ PascalABC.NET можно использовать русские идентификаторы. Посленебольших переопределений программа преображается.Использовать – дело вкусаРусские идентификаторыprocedure Вывод(число: вещ) := Println(число);typeцел = integer;вещ = real;beginvar количество: цел :=

Слайды и текст этой презентации

Слайд 1Система программирования
PascalABC.NET:
простейшие новые возможности
Михалкович С.С.
Южный федеральный университет,
факультет математики, механики и

компьютерных наук
miks@math.sfedu.ru
Доклад на учебно-методической конференции
«Использование системы программирования Pascal​ABC​.NET и электронного

задачника Programming Taskbook в обучении программированию»
(Ростов-на-Дону, 28-29 октября 2019 г.)
Система программированияPascalABC.NET:простейшие новые возможностиМихалкович С.С.Южный федеральный университет,факультет математики, механики и компьютерных наукmiks@math.sfedu.ruДоклад на учебно-методической конференции«Использование системы программирования

Слайд 2Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»
Слайд
Русские идентификаторы
В PascalABC.NET можно использовать

русские идентификаторы. После
небольших переопределений программа преображается.
Использовать – дело вкуса
Русские идентификаторы
procedure

Вывод(число: вещ) := Println(число);

type
цел = integer;
вещ = real;

begin
var количество: цел := 10;

var сумма: вещ := 0.0;
for var i:=1 to количество do
сумма += 1/i;

Вывод(сумма);
end.

К оглавлен ию

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд Русские идентификаторыВ PascalABC.NET можно использовать русские идентификаторы. Посленебольших переопределений программа преображается.Использовать –

Слайд 3Описание переменных
Переменные обычно описываются в блоке begin – end
При описании

переменную можно инициализировать выражением
Если при описании переменную инициализировать выражением, то

тип можно не писать – он автоматически выводится по типу выражения

var x: real; // В PascalABC.NET глобальные переменные описываются редко

begin
var a1: integer; var a2 := 555; var r := 3.14; var

// a2 получает тип integer по типу значения 555
// r получает тип real по типу значения 3.14
// s получает тип string

s := 'PascalABC.NET';

var r1 := r + a2;
var m := Min(2,3);
var d := DateTime.Now;
end.

// r1 получает тот
// m получает тип,
// d получает тип,

же тип, что и выражение r + a2 возвращаемый функцией Min возвращаемый DateTime.Now

Код

Нагромождение глобальных переменных – признак стиля старого Паскаля

В PascalABC.NET переменные описываются по мере необходимости

Тип переменной автовыводится. Его надо указывать только в редких случаях для лучшей читаемости. Но в отличие от Python тип здесь – статический, не меняется по ходу программы

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

Описание переменныхПеременные обычно описываются в блоке begin – endПри описании переменную можно инициализировать выражениемЕсли при описании переменную

Слайд 4begin
var (a,b,c) := (4,5,3);
var min3 := Min(Min(a,b),c);

// Пузырьковая сортировка
Презентация «PascalABC.NET.

Процедуры, функции, лямбда-выражения»
Слайд
var a := ArrRandomInteger(10);
for
for
var i var j

if a[j]

:= 0 to a.High-1 do
:= a.High downto i+1 do
< a[j-1] then

Swap(a[j], a[j-1]);
end.

Стандартные функции Min, Max и стандартную процедуру Swap
удобно использовать в различных алгоритмах
Код

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

beginvar (a,b,c) := (4,5,3);var min3 := Min(Min(a,b),c);// Пузырьковая сортировкаПрезентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд var a := ArrRandomInteger(10);forforvar

Слайд 5Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»
Слайд
begin
var i: integer := 56;
var

s: string := i.ToString; // преобразование в строку

if i.IsEven and

i.InRange(10,99) then
Println('Нечётное двузначное');

i := integer.MaxValue; // максимальная константа целого типа
end.

Стандартные типы integer, real и т.д. содержат большое количество стандартных методов и констант
Код

Методы стандартных типов

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд beginvar i: integer := 56;var s: string := i.ToString; // преобразование в

Слайд 6Цикл loop
Цикл loop используется в случаях, когда номер повторения цикла

не важен
begin
var s := 0; var x := 11; loop

45 do begin
s := s + x; x := x + 2
end; s.Print;
end.

Пример 2. Сумма квадратов
нечетных двузначных

2475

begin
var n := 11; var a := 1; var q := 2;

loop n do
begin
Print(a);

a := a * q
end; end.

Пример 1. Геометрическая прогрессия

1 2 4 8 16

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

32 64

128 256 512 1024

Цикл loopЦикл loop используется в случаях, когда номер повторения цикла не важенbeginvar s := 0; var x

Слайд 7Можно присваивать сразу нескольким переменным
Переменные из левой части получают значения

из правой части
одновременно
Можно инициализировать сразу несколько переменных при описании. Их

типы выводятся автоматически по типам инициализирующих выражений
Код
begin
var (a,b,c) := (3,5,4);
var (имя, возраст) := ('Петя', 10);

(a,b) := (b,a); // перемена значений местами

(a,b,c) := (b,c,a); // циклический сдвиг значений: 5 4 3
end.

Множественное присваивание

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

Можно присваивать сразу нескольким переменнымПеременные из левой части получают значения из правой частиодновременноМожно инициализировать сразу несколько переменных

Слайд 8Примеры использования множественного присваивания
begin
var (a, b) := (126, 72);
while b>0

do
(a, b) := (b,

Println(a);
end.
a mod b);
18
Множественное присваивание радикально меняет стиль

решения ряда задач
Нахождение НОД Кролики Фибоначчи

begin
var n := 15;

var (a, b) := (1, 1);
loop n do begin
Print(a);
(a,b) := (b, a + b);
end; end.

1 1 2 3 5 8 13 21 34 55 89 144

233 377

К оглавлен ию

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

Примеры использования множественного присваиванияbeginvar (a, b) := (126, 72);while b>0 do(a, b) := (b,Println(a);end.a mod b);18Множественное присваивание

Слайд 9Вывод
Предпочтительные процедуры вывода – Print и Println. Они разделяют элементы

вывода пробелами. Print удобно использовать в цикле для вывода серии

значений
Вывод по интерполированной строке позволяет обойтись одной строкой в случае сложного форматного вывода
Print
begin
for var i:=1 to 10 do
Print(i);
Println;

var (x,y) := (3,5);
Println($'Сумма {x} и
end.

{y} равна {x+y}');

1 2 3 4 5 6 7 8 9 10
Сумма 3 и 5 равна 8

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

ВыводПредпочтительные процедуры вывода – Print и Println. Они разделяют элементы вывода пробелами. Print удобно использовать в цикле

Слайд 10Ввод
Для ввода предпочтительно использовать функции ReadInteger, ReadReal и т.д.
Они позволяют

описать переменную и инициализировать её одной строкой
Функции ReadInteger2, ReadReal2 и

т.д. позволяют вводить сразу от 2 до 4
переменных одного типа
Пример. ReadReal, ReadReal2

begin
var x := ReadReal('Введите x:'); var y := ReadReal('Введите y:'); Println('Сумма =',x+y);

var (a,b) := ReadReal2('Введите var c := Sqrt(a*a + b*b); Println('Гипотенуза =',c);
end.

катеты:');

Введите Введите Сумма = Введите

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд 10

x: 1
y: 2
3
катеты: 3 4

Гипотенуза = 5

ВводДля ввода предпочтительно использовать функции ReadInteger, ReadReal и т.д.Они позволяют описать переменную и инициализировать её одной строкойФункции

Слайд 11Цикл for
Счётчик цикла for рекомендуется описывать непосредственно в заголовке цикла:
for

var i. В этом случае счётчик цикла for недоступен после

цикла
Если использовать старый синтаксис, то выдаётся предупреждение
«Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла»
Пример 1. Два последовательных цикла for

begin
for var i:=0 to 9 do
Print(1+2*i);
Println;
// Переменная i for var i:=0 to Print(5+5*i);
end.

здесь недоступна
9 do

1 3 5 7 9 11 13 15 17 19
5 10 15 20 25 30 35 40 45 50

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

Цикл forСчётчик цикла for рекомендуется описывать непосредственно в заголовке цикла:for var i. В этом случае счётчик цикла

Слайд 12Расширенные операторы присваивания
Print('10! =', p);
end.
10! = 3628800
Расширенные операторы присваивания +=,

-=, *= и /= встречаются во многих языках программирования
«+=» читается

как «увеличить на», а «*=» читается как «увеличить в»
a += 1 и a *= 2 воспринимается лучше чем a := a + 1 и a := a * 2

Пример 1. Сумма квадратов Пример 2. 10!

begin
var n := 10;
var p := 1;
for var i:=2 to n do
p *= i;

begin
var n := ReadInteger;
var sum := 0;
for var i:=1 to n do

sum += i*i;
Print($'Сумма
end.

квадратов

первых

{n} чисел

={sum}');

10
Сумма квадратов

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

первых 10

чисел = 385

Расширенные операторы присваиванияPrint('10! =', p);end.10! = 3628800Расширенные операторы присваивания +=, -=, *= и /= встречаются во многих

Слайд 13Тип BigInteger
Тип BigInteger предназначен для вычислений с длинными целыми
function Fib(n:

integer): BigInteger;
begin
var a,b: (a,b) :=
loop n-1 (a, b)
BigInteger; (1,1);
do
:= (b,

a + b);

Result := a
end;
begin
Print(Fib(1000));
end.

begin
var n := 100;
var p: BigInteger := 1;
for var i:=2 to n do
p *= i;

Write(n,'! = ', p);
end.

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

Пример 2. Тысячное число Фибоначчи

Пример 1. 100!

Тип BigIntegerТип BigInteger предназначен для вычислений с длинными целымиfunction Fib(n: integer): BigInteger;beginvar a,b: (a,b) :=loop n-1 (a,

Слайд 14Возведение в степень
Для возведения в степень используется операция **, которая

реализована
предельно эффективно

Пример. Вычисление 2 ** 1000
begin
var b: BigInteger := 2;
Println(b

** 1000);
end.

107150860718626732094842504906000181056140481170553360744375038837035105112
493612249319837881569585812759467291755314682518714528569231404359845775746
985748039345677748242309854210746050623711418779541821530464749835819412673
987675591655439460770629145711964776865421676604298316526243868372056680693
76

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

Возведение в степеньДля возведения в степень используется операция **, которая реализованапредельно эффективноПример. Вычисление 2 ** 1000beginvar b:

Слайд 15Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»
Слайд
Case по строкам
В PascalABC.NET можно

делать case по строкам. Это значительно удобнее старого стиля со

вложенными if
Старый Паскаль PascalABC.NET

var Country: string;

begin
read(Country); write('Столица: ');
if Country = 'Россия' then
writeln('Москва')
else if Country = 'Франция' then
writeln('Париж')
else if Country = 'Италия' then
writeln('Рим')
else if Country = 'Германия' then
writeln('Берлин')
else writeln('Нет в базе данных');
end.

begin
var Country := ReadString;
write('Столица: ');
case Country of
'Россия': writeln('Москва'); 'Франция': writeln('Париж'); 'Италия': writeln('Рим'); 'Германия': writeln('Берлин'); else writeln('Нет в базе данных');
end;
end.

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд Case по строкамВ PascalABC.NET можно делать case по строкам. Это значительно удобнее

Слайд 16Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»
Слайд
Result в функции
Для возвращения значения

из функции следует использовать переменную
Result, а не устаревший синтаксис, связанный

с присваиванием имени функции.
Переменная Result появилась в Delphi и используется во Free Pascal.
PascalABC.NET

function Fact(n: integer): integer;
begin
Result := 1;
for var i:=1 to n do
Result *= i;
end;

begin
var n := ReadInteger('Введите n:'); Println('n!=',Fact(n));
end.

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд Result в функцииДля возвращения значения из функции следует использовать переменнуюResult, а не

Слайд 17Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»
Слайд
Короткие определения функций и процедур
В

PascalABC.NET допускаются короткие определения для функций, задаваемых одним выражением. Тип

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

function ДлинаОкружности(r: real) := 2 * Pi * r;

function Гипотенуза(a,b: real) := Sqrt(a*a + b*b);

function Расстояние(x1,y1,x2,y2: real) := Гипотенуза(x2-x1,y2-y1);

function Минимум(a,b,c: real): real := Min(Min(a,b),c);

procedure Вывод(x: integer) := Println(x);

begin
Println(ДлинаОкружности(1)); Println(Гипотенуза(3,4),Расстояние(1,1,3,4)); Вывод(Минимум(5,3,8));
end.

К оглавлен ию

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд Короткие определения функций и процедурВ PascalABC.NET допускаются короткие определения для функций, задаваемых

Слайд 18Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»
Слайд
Упрощённый синтаксис модулей
В PascalABC.NET допускаются

модули с упрощённым синтаксисом. В них можно описывать часто встречающиеся

подпрограммы. Затем эти модули можно подключать к своим программам

Упрощённый синтаксис модуля Основная программа

uses My;
function ДлинаОкружности(r: real) := 2 * Pi * r; function Гипотенуза(a,b: real) := Sqrt(a*a + b*b); function Расстояние(x1,y1,x2,y2: real) :=
Гипотенуза(x2-x1,y2-y1);

function Минимум(a,b,c: real): real :=
Min(Min(a,b),c);

procedure Вывод(x: integer) := Println(x);

end.

К оглавлен ию

uses My;

begin
Вывод(ДлинаОкружности(1)); Вывод(Гипотенуза(3,4)); Вывод(Минимум(5,3,8));
end.

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд Упрощённый синтаксис модулейВ PascalABC.NET допускаются модули с упрощённым синтаксисом. В них можно

Слайд 19procedure Корова := Println('Му-у'); procedure Собака := Println('Гав!'); procedure Кошка

:= Println('Мяу!');

begin
var Звук: procedure := Корова; Звук;
Звук := Собака; Звук;
Звук

:= Кошка + Корова * 2;
Звук;
end.

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

Процедурная переменная Callback-вызов

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд

procedure Корова := Println('Му-у'); procedure Собака := Println('Гав!'); procedure Кошка := Println('Мяу!');

procedure begin
p1; p2;
end;

ИздатьЗвуки(p1,p2: procedure);

// callback-вызовы

begin
ИздатьЗвуки(Корова, Собака);
ИздатьЗвуки(Кошка, Корова);
end.

Процедурные переменные

procedure Корова := Println('Му-у'); procedure Собака := Println('Гав!'); procedure Кошка := Println('Мяу!');beginvar Звук: procedure := Корова; Звук;Звук

Слайд 20Операции + и * для процедур без параметров
Для процедур без

параметров эффективно использовать операции + (последовательное выполнение) и *n (повторение

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

uses Robot;
begin
var d := Right*3 + Up*9 + Paint + Down*9;
var d1 := (d + Right)*4 + d;
d1;
end.

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»

Слайд 20

Операции + и * для процедур без параметровДля процедур без параметров эффективно использовать операции + (последовательное выполнение)

Слайд 21Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»
Слайд 21
Массивы – только динамические!
В PascalABC.NET

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

число методов
По ним можно выполнять цикл foreach

Циклы for и foreach по массивам

begin
var a := Arr(1,3,5,7,9);
foreach var x in a do
Print(x);

for var i:=0 to a.Length – 1 do
a[i] += 1;
end.

К оглавлен ию

Презентация «PascalABC.NET. Процедуры, функции, лямбда-выражения»Слайд 21Массивы – только динамические!В PascalABC.NET в первую очередь следует использовать динамические массивы.

Слайд 22Срезы массивов
Срез – это подмножество элементов массива в заданном диапазоне

с заданным шагом
Срезы имеют вид a[from : to] или a[from

: to : step]
Срезы с пропуском значений a[f : ], a[ : t], a[f : : s], a[ : t : s], a[ : : s]

a[2:5]

0

1

2

3

4

5

6

7

8

9

a[2:]

a[::2]

a[7::-2]

a[::-1]

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Презентация «PascalABC.NET. П0 роц1едуры2 , фун3кции4, лям5бда-6выра7жени8я»

9

Слайд 22

Срезы массивовСрез – это подмножество элементов массива в заданном диапазоне с заданным шагомСрезы имеют вид a[from :

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика