Языки программирования и нейросети. Решение задач
Николай Петрович Морозов

© Николай Петрович Морозов, 2025

ISBN 978-5-0068-7526-5

Создано в интеллектуальной издательской системе Ridero

Введение

Курс практических и лабораторных занятий «Языки программирования и нейросети. Решение задач» направлен на формирование профессиональных компетенций студентов и школьников в области разработки программного обеспечения и решения прикладных задач средствами современных языков программирования (на примере Python и Pascal). Программа курса охватывает основные этапы разработки программного продукта: создание алгоритма, написание программы, её тестирование и отладка, а также применение полученных знаний для реализации типовых задач, включая обработку одномерных и двумерных массивов, решение геометрических задач и программирование циклических структур.

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

Курс включает в себя следующие разделы:

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

2.Создание алгоритмов и отладка программ линейной структуры – освоение базовых принципов построения последовательных алгоритмов и разработка первых самостоятельных программ.

3.Использование логических высказываний в программах – закрепление знаний о работе с условными операторами и реализация программ с ветвлениями.

3. Создание алгоритмов и отладка программ с использованием логических высказываний.

4. Создание алгоритмов и отладка программ с использованием логических операций.

5.Решение задач по геометрии с помощью программирования – обучение применению математических знаний и навыков программирования для автоматизации вычислений и решений геометрических задач.

6.Программирование циклов и обработка массивов – ознакомление с основными видами циклических конструкций и методами обработки числовых массивов различной размерности.

7.Отладка и тестирование программ на примере решения реальных задач – получение опыта выявления ошибок и исправления дефектов в коде, а также проверка правильности выполнения программ на конкретных примерах.

8.Практическое программирование нейросетей и машинного обучения – знакомство с базовыми концепциями нейросетевых технологий и их применением для решения прикладных задач.

Методы и формы обучения

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

Итоговый результат освоения курса

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

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

1.Работа с графическим интерфейсом языка программирования

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

Давайте такой вопрос зададим нейросети GPTuter (ИИ3):

О системе программирования PascalABC.NET ни слова. А она, например, в колледже при политехническом университете Петра Великого являлась основной. Поэтому с моей стороны следует естественный дополнительный вопрос:

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

Узловые вопросы программирования нейросети, судя по GPTuter (ИИ3), представляют неплохо.

Работа с графическим интерфейсом языка программирования Паскаль включает в себя три базовых компонента:

1.1.Работу со Справочником по системе ABC Pascal

1. В окне окне системы ABC Pascal открыть меню Помощь (рис.1).

2. В открывшемся меню выбрать пункт СПРАВКА (рис.1).

3. В открывшемся окне работать с его содержанием.

Рис.1. Окна систем программирования Pascal ABC и Справки

1.2. Работа с сайтом «Уроки Pascal ABC для начинающих» (Ссылка на сайт в конце книги)

Рис.3.

1.3. Изучение презентации и видео «Паскаль. Обзор»

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

С презентацией на тему «Пакаль _обзор» для 8 и 9 класса и видео на эту же тему можно познакомиться воспользовавшись ссылками в конце книги.

2. Создание алгоритмов и отладка программ линейной структуры

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

Начнем делать первые шаги и рассмотрим первые 3 простейшие задачи, имеющие линейную структуру алгоритмов их решения. По каждой из задач представлено 2 вида решений:

1.Традиционный (обычный) способ

Программа записана на языке Паскаль, ее реализация оформлена в системе программирования Pascal ABC.NET и приведены пояснения и комментарии.

2.Решение задачи с помощью нейросети

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

2.1.Решение задач

Задача 1.

Дано: сторона квадрата a. Найти его периметр P = 4*a

1.Традиционное решение (см. рис.4).

Рис.4.Программа на языке Паскаль и ее реализация в системе программирования Pascal ABC.NET.

Рис.4.Программа на языке Паскаль и ее реализация в системе программирования Pascal ABC.NET.

Смотрим основные моменты по строкам программы:

1) В первой строке у нас идет описание переменных, и на это указывает служебное слово var.

2) Описываем переменные a, P как вещественные (real – вещественный тип данных).

4) Служебное слово begin указывает на начало программы. После него идет описание операторов, которые программа будет выполнять один за другим.

8) Вводим длину стороны квадрата. При этом в строках 5 и 6 выводим на экран информацию о запросе ввода.

10) Вычисляем периметр квадрата по формуле P = 4·a.

12) Выводим результат, выделяя для результата 2 знака после запятой.

13) readln означает ожидание программы до нажания клавиши Enter – после этого программа продолжит свое выполнение.

14) Наконец, служебное слово end с точкой в конце означает завершение программы.

2.Решение задачи с помощью нейросети

Я пытаюсь спровоцировать нейросеть на решение этой задачи и ввожу исходные данные a = 10; a = 12; a = 31.

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

Я все время требую от GPTutor невозможного: нельзя решить эту задачу на ПК, без предварительной загрузки и отладки программы этой задачи в системе Pascal ABC.NET.

А нейросеть GPTutor при этом еще оправдывается и «чувствует себя виноватой».

И предлагает новые варианты модификации программы этой задачи.

Я продолжаю вводить новые исходные данные, с большим интересом ожидая реакции GPTutor.

Не знаю, как вам, а мне все действия нейросети очень понравились. На основе данной задачи нейросеть GPTutor провела мастер – класс по программированию на языке Паскаль.

Задача 2.

Дано: сторона квадрата a. Найти его площадь S = a^2.

1.Традиционное решение (рис.5)

Рис.5.Программа на языке Паскаль и ее реализация в системе программирования Pascal ABC.NET.

6) Вводим значение переменной a и переходим на следующую строку.

7) Вычисляем площадь квадрата S = a^2 непосредственным умножением. Для вычисления квадрата числа мы могли бы использовать функцию sqr (x).

8) Выводим значение площади с точностью до двух знаков после запятой.

2.Решение задачи с помощью нейросети

Задача 3.

Дан диаметр окружности d. Найти ее длину L = п*d. В качестве значения п использовать 3,14.

1.Традиционное решение (см. рис.6).

Рис.6.Программа на языке Паскаль и ее реализация в системе программирования Pascal ABC.NET.

Здесь нужно сделать небольшой комментарий относительно числа «пи». Как упоминалось в начале, в паскале есть встроенная переменная для обозначения числа «пи»: pi = 3.141592653589793. Поэтому, если бы мы в разделе описания констант не записали pi = 3.14 (строки 1—2 после служебного слова const), то в нашей программе было бы использовано встроенное значение числа «пи» большой точности.

2.Решение задачи с помощью нейросети

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

3. Создание алгоритмов и отладка программ с использованием логических высказываний

3.1.Постановка задач

Условия задач 1 и 2

3.2.Решение задач с использованием логических высказываний и операций на языке Паскаль. Результаты

РЕШЕНИЕ:

4.Решение задач с помощью условных операторов на языке Паскаль

4.1.Постановка задач

4.2.Решение задач с помощью условных операторов на языке Паскаль

5.Решение задач по геометрии с помощью Систем Программирования на языках Паскаль и Питон

Сегодня в школах и техникумах на занятиях по изучению систем программирования (СП) все чаще СП на языке Паскаль заменяют СП на языке Питон. В связи с этим, в этой главе на примере 4х задач по геометрии показано, как с этими задачами справляется каждая из этих СП.

5.1.Постановка задач

5.2.Решение задач
5.2.1.Решение задач с помощью системы программирования на языке «Паскаль». Результаты

5.2.2.Решение задач с помощью системы программирования на языке «Питон». Результаты

Ниже представлена программа, которая на языке Питон вычисляет объем и площадь поверхности прямоугольного параллелепипеда, используя заданные длины его рёбер

В результате объем прямоугольного параллепипеда V = 162, а его площадь S = 198.

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

Таким образом, площадь равнобедренной трапеции при заданных параметрах составляет примерно 27,71.

ОТВЕТЫ

6.Операторы цикла

Операторы цикла используются для вычислений, которые повторяются многократно. В Паскале имеется три вида циклов: цикл с предусловием while, цикл с постусловием repeat и цикл с параметром for.

6.1.Структурные схемы

Циклы с предусловием (на рис.1, левый) и с постусловием (рис.1, правый)

Рис.1.

Формат оператора с предусловием:

while выражение do оператор

Формат оператора с постусловием:

repeat тело цикла until выражение

6.2.Примеры

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

program tabl_fun;
var
Xn, Xk: real; {начальное и конечное значения аргумента}
dX: real; {шаг изменения аргумента}
x, y: real; {текущие значения аргумента и функции}

begin

writeln («Введите Xn, Xk, dX»);
readln (Xn, Xk, dX);
writeln (» – — – — – — – — – — – —»); {заголовок таблицы}
writeln (»│ X │ Y │»);
writeln (» – — – — – — – — – — – —»);
x:= Xn; {первое значение аргумента}
while x <= Xk do {заголовок цикла}
begin
y:= sin (x); {вычисление значения функции}
writeln (»│», x:9:2, ‘ │», y:9:2, ‘ │»); {вывод строки таблицы}
x:= x+dX; {переход к следующему значению аргумента}
end;
writeln (» – — – — – — – — – — – —»);
readln;
end.

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

уn = (yn-1 + x/yn-1) /2,

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

program square_root;

var
X, eps, {аргумент и точность}
Yp, Y: real; {предыдущее и последующее приближение}
begin
repeat
writeln («Введите X, eps’);
readln (X, eps);
until (X> 0) and (eps> 0);

Y:= 1;

repeat
Yp:= Y;
Y:= (Yp + X / Yp) / 2;
until abs (Y – Yp) <eps;
writeln («Корень из», Х:6:3, «с точностью», eps:7:5, «равен», Y:9:5);
readln;
end.
6.3.Цикл с параметром for

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

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

Соответственно, могут быть две формы записи этого цикла:

for параметр:= выражение_1 to выражение_2 do оператор

for параметр:= выражение_2 downto выражение_1 do оператор

6.3.1.Структурная схема

Рис.2.
6.3.2.Примеры.

1. Вывести на экран в столбик числа от 1 до 10.
program digit;
var i: integer;
begin
for i:= 1 to 10 do writeln (i)

end.

2. Вывести на экран в столбик числа от 10 до 1 и подсчитать их сумму.

program digit;
var i, sum: integer;
begin
sum:= 0;
for i:= 10 downto 1 do
begin
writeln (i);
inc (sum, i) {инкремент – inc (х) —увеличивает х на 1, inc (х, 3) – на 3}
end;
writeln («Сумма чисел:», sum);
readln;
end.

7.Реализация программы, ее тестирование и отладка на примере решения задачи определения наибольшего общего делителя

7.1.Черновой вариант алгоритма определения наибольшего общего делителя

Рис.3.

На рисунке 3 показан черновой (рабочий) вариант алгоритма решения данной задачи. Он содержит неточности и ошибки, допущенные при его оформлении. Вам предлагается самостоятельно их устранить.

7.2.Реализация программы, ее тестирование и отладка

8.Лабораторная работа. Программирование алгоритмов циклической структуры с известным числом повторений

При выполнении работы необходимо знать:

– Знать и уметь строить алгоритмы циклической структуры.

– Операторы цикла.

– Уметь составить схему программы (алгоритм) циклической структуры для данной задачи и записать программу по готовому алгоритму.

Теоретический минимум:

8.1.Структуры циклических алгоритмов

Алгоритмы циклической структуры бывают нескольких видов.

Если заранее известно число повторений, то такая структура называется цикл с известным числом повторений и организуется при помощи специальной переменной счетчика. Счетчик имеет начальное значение, которое задается до цикла, конечное значение и шаг (закон изменения счетчика).

На каждом проходе цикла к счетчику добавляется некоторое число (шаг). В начале каждого прохода цикла проверяется, не превысило ли значение счетчика конечное значение. Таким образом, счетчик подсчитывает количество повторений и цикл прекращается при превышении счетчиком конечного значения.

8.1.1. Структура цикла с известным числом повторений.

Рис.4.

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

Условие окончания цикла можно проверять в начале или в конце каждого прохода цикла. Различают поэтому циклы с предусловием и циклы с постусловием. Вид алгоритма у циклов с предусловием и циклов с постусловием отличается тем, где располагается проверка условия выхода из цикла – в начале или в конце каждой итерации цикла.

8.1.2.Оператор цикла FOR.

Для многократного повторения одних и тех же действий в Pascal предусмотрены три оператора цикла. Если число повторений цикла (или итераций) заранее не известно, но известно условие завершения цикла, в таких случаях применяются операторы REPEAT и WHILE. Если число повторений известно, то используется оператор FOR.

Оператор цикла FOR, известный как оператор цикла с параметром, выглядит так:

for i=a to b do s;

При выполнении этого оператора сначала вычисляется некоторое начальное значение а, которое присваивается переменной i, называемой параметром цикла. Затем вычисляется конечное значение b и проверяется, имеет ли место равенство i=b. Если равенства нет, выполняется оператор s, который может быть составным, и переменная i увеличивается на единицу. После этого проверка, не равен ли параметр конечному значению, а также выполнение оператора s и увеличение переменной i на единицу выполняются циклически до тех пор, пока не будет получено равенство i=b.

Параметр цикла i, а также начальное и конечное значения (а и b) могут принадлежать любому порядковому типу (например, Integer или Char). (Но при этом все они должны быть одного типа.) Если начальное значение превышает конечное значение или равно ему с самого начала, оператор s

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.