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


Осипов Александр Викторович 28.10.2019 Ростов-на-Дону

Содержание

Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET vs «школьные решения» - С

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

Слайд 1Осипов
Александр
Викторович

28.10.2019
Ростов-на-Дону

ОсиповАлександрВикторович28.10.2019Ростов-на-Дону

Слайд 2Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону

Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 3PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книга

Слайд 4PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книга

Слайд 5PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга
Turbo Pascal
Borland Delphi
Free
Pascal
Lazarus
Pascal

ABC
PascalABC.NET

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книгаTurbo PascalBorland DelphiFreePascalLazarusPascal ABCPascalABC.NET

Слайд 6PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книга

Слайд 7PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга
PascalABC.NET – это:
внутриблочные

переменные
автоопределение типов
Write(что угодно)
Case по строкам
тип BigInteger
русские идентификаторы
записи и кортежи
динамические массивы
стандартные

Sort и Reverse
динамические матрицы
множества с произвольными типами
строки произвольной длины
«лямбды»
… и многое, многое другое.
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книгаPascalABC.NET – это:внутриблочные переменныеавтоопределение типовWrite(что угодно)Case по строкамтип BigIntegerрусские идентификаторызаписи

Слайд 8PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга
begin
var n

:=ReadInteger('Введите размерность массива:');
var a:= ArrRandom(n, -30, 30);
a.Println;
Writeln('Сумма

чисел, меньших 3 =', a.Where(t -> t < 3).Sum)
end.
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книгаbegin var n :=ReadInteger('Введите размерность массива:'); var a:= ArrRandom(n, -30,

Слайд 9PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга
Источники информации в

процессе самообучения

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книгаИсточники информации в процессе самообучения

Слайд 10PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга
Библиотека численных методов

NumLibABC
Позволяет решать задачи из следующих областей:

нахождение корней нелинейных уравнений;
операции с

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

Реализована в системе программирования PascalABC.NET 3.5, поставляется вместе с ней, в том числе, в исходном коде. Распространяется свободно. Имеется справочное пособие в формате PDF.
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книгаБиблиотека численных методов NumLibABCПозволяет решать задачи из следующих областей:нахождение корней

Слайд 11PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
1/8 Как писалась эта книга
Учебные заведения редко

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

ориентированы на Turbo Pascal, Free Pascal, Delphi
Имеются опасения, что использование возможностей PascalABC.NET при сдаче ОГЭ (ГИА), ЕГЭ и на олимпиадах про программированию не позволит получить максимальный балл за решение
Курсы по изучению PascalABC.NET не проводятся
Литература по PascalABС.NET отсутствует
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону1/8 Как писалась эта книгаУчебные заведения редко используют возможности PascalABC.NETУчителя и преподаватели не знакомы

Слайд 12
Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону

√Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 13PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
2/8 Лицензионное соглашение
Авторские права на публикуемые материалы

принадлежат автору книги Осипову Александру Викторовичу. Публикация данных материалов не

предполагает извлечения какой-либо коммерческой выгоды.
Публикуемые материалы защищены действующим законодательством об авторском праве. Все предусмотренные этим законодательством права на опубликованные материалы принадлежат их автору.
Официальным источником для распространения материалов является Интернет-сайт //pascalabc.net, ссылка на который при цитировании обязательна. Разрешается свободно копировать и распространять исключительно на безвозмездной основе опубликованные материалы при условии сохранения их в неизменном виде и с указанием авторства. Передача материалов третьим лицам разрешается при условии сохранения в них страницы с настоящей лицензией. Исключение делается для учебных заведений: при подготовке раздаточного материала допускается страницу с лицензией не включать. Любые другие способы распространения опубликованных материалов при отсутствии письменного разрешения автора запрещены.
Запрещается любым организациям осуществлять любого рода лицензирование опубликованного материала и осуществлять какую бы то ни было иную связанную с авторскими правами деятельность без письменного разрешения автора.
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону2/8 Лицензионное соглашениеАвторские права на публикуемые материалы принадлежат автору книги Осипову Александру Викторовичу. Публикация

Слайд 14

Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону

√√Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 15PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
3/8 Целевая аудитория
Школьники, для которых PascalABC.NET станет

первым «настоящим» языком программирования
Школьники и студенты, желающие в достаточно короткий

срок освоить современное программирование
Учителя и преподаватели информатики, желающие повысить эффективность обучения
Программисты С/С++/С#, желающие освоить средство быстрой разработки и отладки алгоритмов с последующим их переносом на основной язык программирования
Авторы литературы по более ранним языкам семейства Pascal с целью перехода на PascalABC.NET
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону3/8 Целевая аудиторияШкольники, для которых PascalABC.NET станет первым «настоящим» языком программированияШкольники и студенты, желающие

Слайд 16


Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону

√√√Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 17PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
4/8 Как пользоваться книгой?
Оглавление дает общее представление

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

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

Книга содержит 14 основных частей и несколько дополнительных разделов, не имеющих собственной нумерации. Она имеет объем 572 страницы.
Книга не является справочником по операторам языка; вместе с тем она охватывает практически все его элементы по состоянию на 19 октября 2019 года.
По возможности даются необходимые разъяснения к терминам, сопутствующая краткая теория и примеры использования рассматриваемых конструкций PascalABC.NET.
Имеется приложение, состоящее из приведенных в книге исходных текстов 321 программы и двух текстовых файлов.
В конце двенадцати частей книги приводятся задачи для самостоятельного решения. Ответы и пояснения находятся в части 14.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону4/8 Как пользоваться книгой?Оглавление дает общее представление о материалеСодержание позволяет найти нужную темуПредметный указатель

Слайд 18PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
4/8 Как пользоваться книгой?
Нумерация прилагаемых программ имеет

вид pXXYYY, где XX – номер части книги, YYY –

порядковый номер программы в пределах каждой части. Такие программы публикуются в книге на сером фоне.
Бледно-зеленый фон выделяет важную информацию, которую нужно запомнить.
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону4/8 Как пользоваться книгой?Нумерация прилагаемых программ имеет вид pXXYYY, где XX – номер части

Слайд 19



Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону

√√√√Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 20PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
5/8 Что даст переход к PascalABC.NET ?
В

процессе обучения
Сократит время на изложение материала и решение задач
Упростит проверку

решений
Уменьшит количество ошибок и описок в коде программ
Приобщит к современным концепциям программирования
Откроет доступ к библиотекам Microsoft .NET
Позволит в дальнейшем быстро освоить языки типа C#

Пути и способы достижения эффектов:
Отказ от блок-схем
Автовыведение типов
Динамические массивы и строки переменной длины
Последовательности и кортежи
Использование типов .NET и стандартных коллекций
Многочисленные методы и расширения
Точечная нотация
Применение Microsoft LINQ (Select, Where и др.)

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону5/8 Что даст переход к PascalABC.NET ?В процессе обученияСократит время на изложение материала и

Слайд 21PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
5/8 Что даст переход к PascalABC.NET ?
Пусть

дан массив а, содержащий n целых чисел. Ввести с клавиатуры

значение n, затем ввести значения элементов массива. Вычислить и вывести значение






Традиционная схема решения задачи
Составляем блок-схему
Определяем перечень переменных
Пишем код программы
Составляем контрольный пример
Отлаживаем программу на контрольном примере

const
k = 100;
var
i, n, s: integer;
a: array[1..k] of integer;
begin
Read(n);
for i := 1 to n do
Read(a[i]);
s := 0;
for i := 1 to n do
if a[i] >= 0 then
s := s + Sqr(a[i])
else
s := s + 2 * a[i];
Writeln(s)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону5/8 Что даст переход к PascalABC.NET ?Пусть дан массив а, содержащий n целых чисел.

Слайд 22PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
5/8 Что даст переход к PascalABC.NET ?
Отказ

от блок-схем
Автовыведение типов
Динамические массивы
Использование типов .NET и стандартных коллекций
Многочисленные методы

и расширения
Точечная нотация
Применение Microsoft LINQ (Select, Where и др.)

begin
var n := ReadInteger('Число элементов в массиве');
var a := ReadArrInteger('Введите элементы массива', n);
var s := 0;
for var i := 0 to a.High do
if a[i] >= 0 then
s += Sqr(a[i])
else
s += 2 * a[i];
Println('Сумма элементов массива равна', s)
end.

begin
var n := ReadInteger('Число элементов в массиве');
var a := ReadArrInteger('Введите элементы массива', n);
var s := 0;
for var i := 0 to a.High do
s += a[i] >= 0 ? Sqr(a[i]) : 2 * a[i];
Println('Сумма элементов массива равна', s
end.

begin
var n := ReadInteger('Число элементов в массиве');
var a := ReadArrInteger('Введите элементы массива', n);
var s := a.Sum(p -> p >= 0 ? p * p : 2 * p);
Println('Сумма элементов массива равна', s)
end.

begin
ReadArrInteger(ReadInteger).
Sum(p -> p >= 0 ? p * p : 2 * p).Println
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону5/8 Что даст переход к PascalABC.NET ?Отказ от блок-схемАвтовыведение типовДинамические массивыИспользование типов .NET и

Слайд 23



Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону


√√√√Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 24PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
6/8 PascalABC.NET vs «школьные решения»

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону6/8 PascalABC.NET vs «школьные решения»

Слайд 25PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
6/8 PascalABC.NET vs «школьные решения»
Типовое «школьное решение»
Определить

размеры обоих массивов
Описать необходимые переменные и массивы
Инициализировать датчик псевдослучайных чисел
Для

каждого массива в цикле инициализировать и вывести его элементы

В приведенном далее примере автор использовал Free Pascal, динамические массивы типа integer и диапазон изменения данных от 0 до 99. Инициализация массива и вывод значений его элементов оформлены процедурой.

begin
var (n1, n2) := ReadInteger2('Введите размеры двух массивов:');
var a1 := ArrRandom(n1, 0, 99);
Println('Первый массив:');
a1.Println;
var a2 := ArrRandom(n2, 0, 99);
Println('Второй массив:');
a2.Println;
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону6/8 PascalABC.NET vs «школьные решения»Типовое «школьное решение»Определить размеры обоих массивовОписать необходимые переменные и массивыИнициализировать

Слайд 26PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
6/8 PascalABC.NET vs «школьные решения»
Типовое «школьное решение»
Описать

необходимые переменные и массивы
Ввести с клавиатуры строку
Обнулить счетчик найденных символов
Последовательно

просмотреть строку по символам.
Если найден пробел, проверить следующий за ним символ.
Если это «а», увеличить значение счетчика на 1.
Автор приведенного далее решения использовал не Turbo Pascal: размер строки не указан. Выбранный автором алгоритм требует, чтобы строка начиналась с пробела.

begin
ReadlnString.ToWords.
Count(c -> c[1].ToLower = 'a').Println
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону6/8 PascalABC.NET vs «школьные решения»Типовое «школьное решение»Описать необходимые переменные и массивыВвести с клавиатуры строкуОбнулить

Слайд 27PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
6/8 PascalABC.NET vs «школьные решения»
Типовое «школьное решение»
Автор

решения использовал классический Turbo Pascal.
Алгоритм тривиальный: в цикле для i

от 1 до 19 вычисляется сумма a[i] + a[i+1]. Если она удовлетворяет условию, в счетчик добавляется единица.

begin
var a := ArrRandom(20, -10000, 10000);
a.Println;
a.Pairwise((p1, p2) -> p1 + p2).
Where(p -> p.IsOdd and (p > 0)).
Count.Println
end.

355 2635 7098 -3342 -8493 8392 4616 9282 1717 -8651 7388
2332 1391 -5344 -8365 -7018 -3459 -8894 -9419 -3035
2990 9733 3756 -11835 -101 13008 13898 10999 -6934 -1263
9720 3723 -3953 -13709 -15383 -10477 -12353 -18313 -12454
9733 10999 3723
3

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону6/8 PascalABC.NET vs «школьные решения»Типовое «школьное решение»Автор решения использовал классический Turbo Pascal.Алгоритм тривиальный: в

Слайд 28PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
6/8 PascalABC.NET vs «школьные решения»
begin
var a

:= ArrRandom(20, 1, 20);
a.Println;
a.Sort((t1, t2) -> t2 -

t1);
a.Println;
var k := ReadInteger('Какое значение ищем?');
Println('Таких элементов', a.FindAll(t -> t = k).Count)
end.
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону6/8 PascalABC.NET vs «школьные решения»begin var a := ArrRandom(20, 1, 20); a.Println; a.Sort((t1, t2)

Слайд 29PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
6/8 PascalABC.NET vs «школьные решения»
begin
var a

:= Arr(5, 8, 1, 4, 6, 1, 3, 2, 1,

7);
a.Println;
a.Sort;
a.Println;
a.GroupBy(t -> t).Select(t -> t.Count).Where(t -> t > 1).Println
end.

5 8 1 4 6 1 3 2 1 7
1 1 1 2 3 4 5 6 7 8
[1,1,1] [2] [3] [4] [5] [6] [7] [8]
3 1 1 1 1 1 1 1
3

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону6/8 PascalABC.NET vs «школьные решения»begin var a := Arr(5, 8, 1, 4, 6, 1,

Слайд 30PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
6/8 PascalABC.NET vs «школьные решения»
Массив из n

элементов проинициализировать целыми случайными значениями от 10 до 99. Вывести

значения элементов массива. Затем разбить массив на k частей (n кратно k). В первой, третьей и последующих нечетных частях упорядочить элементы по возрастанию, во второй, четвертой и последующих четных частях упорядочить данные по убыванию. Вывести значения элементов преобразованного массива.

begin
var (n, k) := ReadInteger2('Введите n и k:');
var a := ArrRandom(n, 10, 99);
a.Println;
var b := a.Batch(n div k).ToArray;
a := b.Select((t, i) -> i.IsEven ? t.Order : t.OrderDescending).
SelectMany(t -> t).ToArray;
a.Println
end.

Введите n и k: 15 3
56 66 86 39 16 92 75 96 62 16 88 65 61 30 17
[56,66,86,39,16] [92,75,96,62,16] [88,65,61,30,17]
[16,39,56,66,86] [96,92,75,62,16] [17,30,61,65,88]
16 39 56 66 86 96 92 75 62 16 17 30 61 65 88

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону6/8 PascalABC.NET vs «школьные решения»Массив из n элементов проинициализировать целыми случайными значениями от 10

Слайд 31





Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону

√√√√√√Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 32PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
1. Избавляемся от

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

не делает.

program Vasya
const
n = 100;
var
i, k, s: integer;
m: real;
a: array[1..n] of integer;
begin
Write('Число элементов массива: ');
Read(k);
s := 0;
Randomize;
for i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
m := s / k;
Writeln('Среднее = ', m)
end.

const
n = 100;
var
i, k, s: integer;
m: real;
a: array[1..n] of integer;
begin
Write('Число элементов массива: ');
Read(k);
s := 0;
Randomize;
for i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?1. Избавляемся от привычки начинать программу с program.Этот оператор является

Слайд 33PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
2. Используем внутриблочные

переменные, объявляя и при необходимости инициализируя их непосредственно перед первым

использованием. Пользуемся автовыведением типа.

const
n = 100;
var
i, k, s: integer;
m: real;
a: array[1..n] of integer;
begin
Write('Число элементов массива: ');
Read(k);
s := 0;
Randomize;
for i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
m := s / k;
Writeln('Среднее = ', m)
end.

const
n = 100;
begin
var k: integer;
Write('Число элементов массива: ');
Read(k);
var s := 0;
Randomize;
var i: integer;
var a: array[1..n] of integer;
for i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?2. Используем внутриблочные переменные, объявляя и при необходимости инициализируя их

Слайд 34PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
3. В циклах

for параметр цикла описываем непосредственно в заголовке: for var i

:= …

const
n = 100;
begin
var k: integer;
Write('Число элементов массива: ');
Read(k);
var s := 0;
Randomize;
var i: integer;
var a: array[1..n] of integer;
for i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

const
n = 100;
begin
var k: integer;
Write('Число элементов массива: ');
Read(k);
var s := 0;
Randomize;
var a: array[1..n] of integer;
for var i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?3. В циклах for параметр цикла описываем непосредственно в заголовке:

Слайд 35PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
4. Ввод одного

целочисленного значения выполняем посредством var k := ReadInteger('Введите k:'). Для

вещественного типа есть ReadReal.

const
n = 100;
begin
var k: integer;
Write('Число элементов массива: ');
Read(k);
var s := 0;
Randomize;
var a: array[1..n] of integer;
for var i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

const
n = 100;
begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
Randomize;
var a: array[1..n] of integer;
for var i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?4. Ввод одного целочисленного значения выполняем посредством var k :=

Слайд 36PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
5. Используем динамические

массивы, делая для массива типа integer объявление в виде var

a := new integer[k], где k – количество элементов массива. При этом помним, что индексы начинаются от нуля.

const
n = 100;
begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
Randomize;
var a: array[1..n] of integer;
for var i := 1 to k do
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
Randomize;
var a := new integer[k];
for var i := 0 to k - 1 do // можно вместо k - 1 писать a.High
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?5. Используем динамические массивы, делая для массива типа integer объявление

Слайд 37PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
6. Целое псевдослучайное

число на интервале от a до b можно получить вызовом

Random(a, b). Можно создать целочисленный массив из k элементов, если написать ArrRandom(k, a, b). Обе эти функции не требуют предварительно писать Randomize.

begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
Randomize;
var a := new integer[k];
for var i := 0 to k - 1 do // можно вместо k - 1 писать a.High
begin
a[i] := Random(198) - 98;
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
var a := ArrRandom(k, -99, 99);
for var i := 0 to k - 1 do // можно вместо k - 1 писать a.High
begin
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?6. Целое псевдослучайное число на интервале от a до b

Слайд 38PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
7. Процедура Write

умеет выводить данные любого типа, в том числе и массивы.

А процедура Print дополнительно выводит в конце пробел. Элементы массива выводятся через запятую, а весь вывод заключается в квадратные скобки. Это не всегда удобно, поэтому пока выводите массивы посредством a.Println.

begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
var a := ArrRandom(k, -99, 99);
for var i := 0 to k - 1 do // можно вместо k - 1 писать a.High
begin
Write(a[i], ' ');
s := s + a[i]
end;
Writeln;
var m := s / k;
Writeln('Среднее = ', m)
end.

begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
var a := ArrRandom(k, -99, 99);
a.Println;
for var i := 0 to k - 1 do // можно вместо k - 1 писать a.High
s := s + a[i];
var m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?7. Процедура Write умеет выводить данные любого типа, в том

Слайд 39PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
7/8 С чего начать переход?
8. Увеличение значения

на некоторую величину можно вместо s := s + a[i]

записывать как s += a[i]. Также имеются -=, *=, /=

begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
var a := ArrRandom(k, -99, 99);
a.Println;
for var i := 0 to k - 1 do // можно вместо k - 1 писать a.High
s := s + a[i];
var m := s / k;
Writeln('Среднее = ', m)
end.

begin
var k := ReadInteger('Число элементов массива:');
var s := 0;
var a := ArrRandom(k, -99, 99);
a.Println;
for var i := 0 to a.High
s += a[i];
var m := s / k;
Writeln('Среднее = ', m)
end.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону7/8 С чего начать переход?8. Увеличение значения на некоторую величину можно вместо s :=

Слайд 40






Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая

аудитория - Как пользоваться книгой? - Что даст переход к PascalABC.NET? - PascalABC.NET

vs «школьные решения» - С чего начать переход? - Характерные ошибки начинающих

PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону

√√√√√√√Будут рассмотрены вопросы: - Как писалась эта книга - Лицензионное соглашение - Целевая аудитория - Как пользоваться

Слайд 41PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
8/8 Характерные ошибки начинающих
1. Тип integer имеет

разрядность 4 байта, а не 2, как в Turbo Pascal

(в Free Pascal – 2, 4 или 8 байт). При переносе программы могут возникнуть ошибки.
2. При инициализации массива значения в списке должны быть приводимы к типу массива: var a: array of real := (1, 2.5, 3);
Но в функции Arr( ) все параметры должны быть одного типа:
var b := Arr(1.0, 2.5, 3.0);
3. Динамический массив длиной n имеет индексы от 0 до n – 1. Можно также использовать значение a.High вместо n - 1.
4. Символы в строках нумеруются от 1. Но в экземплярных методах класса string (см. Справку PascalABC.NET) нумерация ведется от 0.
5. Если в условной операции P ? Q : R типы данных Q и R различные, тип результата определится по достаточно непростому для новичка правилу – пока избегайте подобных случаев.
6. Если целочисленная константа может быть размещена в типе integer, будет считаться, что она имеет тип integer. Так что var c := 0; объявит переменную c типа integer, а не byte или shortint.
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону8/8 Характерные ошибки начинающих1. Тип integer имеет разрядность 4 байта, а не 2, как

Слайд 42PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
8/8 Характерные ошибки начинающих
9. Присваивание значения объекту

ссылочного типа (например, массиву) сводится к копированию ссылки на этот

объект, поэтому последовательность присваиваний
var a := ArrRandom(15);
var b := a;
допустима, но сводится к тому, что b станет просто еще одним именем для a. Для копирования массива следовало написать
var b := Copy(a);
10. Всегда помните, что подавляющее большинство методов и расширений для массивов «стремятся» превратить массив в последовательность. Вернуться к массиву поможет использование .ToArray.
11. Последовательности доступны только для чтения, но всегда можно написать P := F(P), занеся в переменную новое значение.
12. Операция возведения в степень a ** b в PascalABC.NET всегда возвращает результат типа real. Для получения типа integer используйте Trunc(a ** b), но если степени невысокие, лучше пишите что-то по типу a * Sqr(Sqr(Sqr(a)))
PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону8/8 Характерные ошибки начинающих9. Присваивание значения объекту ссылочного типа (например, массиву) сводится к копированию

Слайд 43PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
8/8 Характерные ошибки начинающих
13. Внимательно работайте с

нетерминированными последовательностями – остерегайтесь многопроходных алгоритмов! Вот пример того, что

может получиться:

begin
var s := SeqRandom(4, 1, 9).Println.Sorted.Println.Sum.Println
end.

5 8 2 6
1 1 2 9
23

SeqRandom – генератор недетерминированной псевдослучайной последовательности значений типа integer. Первый Println выводит 5 8 2 6, после сортировки при втором выводе получили 1 1 2 9 (откуда бы такие значения?), а их сумма (автор кода ожидал ее получить) почему-то равна 23. Но стоит вместо SeqRandom использовать ArrRandom – все станет правильно.

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-Дону8/8 Характерные ошибки начинающих13. Внимательно работайте с нетерминированными последовательностями – остерегайтесь многопроходных алгоритмов! Вот

Слайд 44PascalABC.NET:
Введение в современное программирование

28.10.2019
Ростов-на-Дону
Вместо заключения
Учебные заведения редко используют возможности PascalABC.NET
Учителя

и преподаватели не знакомы с возможностями PascalABC.NET
Учебники ориентированы на Turbo

Pascal, Free Pascal, Delphi
Имеются опасения, что использование возможностей PascalABC.NET при сдаче ОГЭ (ГИА), ЕГЭ и на олимпиадах про программированию не позволит получить максимальный балл за решение
Курсы по изучению PascalABC.NET не проводятся
Литература по PascalABС.NET отсутствует

Литература по PascalABС.NET теперь есть!

PascalABC.NET:Введение в современное программирование28.10.2019Ростов-на-ДонуВместо заключенияУчебные заведения редко используют возможности PascalABC.NETУчителя и преподаватели не знакомы с возможностями PascalABC.NETУчебники

Слайд 45Осипов
Александр
Викторович

28.10.2019
Ростов-на-Дону
Благодарю за внимание!

ОсиповАлександрВикторович28.10.2019Ростов-на-ДонуБлагодарю за внимание!

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

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

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

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

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


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

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