Язык программирования Python
Язык программирования Python
Примеры
Python – это интерпретируемый язык программирования, упор в котором сделан на простоту и чистоту кода, что делает его идеальным кандидатом на роль первого языка для изучения. В этом уроке мы рассмотрим особенности данного языка и погрузим Вас в его экосистему.
Что такое программирование на Python?
Языки программирования можно условно разделить на специализированные и языки общего назначения. Специализированные, как следует из названия, созданы и применяются для каких-либо определённых целей. Языки общего назначения, напротив, призваны выполнять широкий спектр задач. К таким языкам и относится Python. Про этот язык часто говорят, что у него «батарейки внутри». Это означает, что язык включает в себя множество готовых решений и удобных инструментов. Почти любую задачу можно решить, используя встроенные в язык средства либо подключив модуль, разработанный сообществом. На данный момент в индексе PyPi (the Python Package Index – главный агрегатор модулей Python) находится 330826 проектов, 2916363 релиза, 4944653 файла, зарегистрировано 540758 участников, что свидетельствует о зрелом и очень большом сообществе, сформировавшемся вокруг языка.
В языке используется «утиная» типизация, что очень удобно.
В список областей, где применяется Пайтон, входят:
- анализ данных
- машинное обучение
- веб-разработка
- научные и математические исследования
- создание десктопных приложений
Как уже говорилось, Питон прост в освоении благодаря короткому и выразительному синтаксису, но эта простота обманчива. За ней скрывается мощь языка высокого уровня. Это означает, что он не только лёгок в освоении, позволяет быстро писать код, но и чрезвычайно эффективен.
Кроме неоспоримых плюсов стоит отметить и ряд минусов:
Из популярных языков программирования этот – один из самых медленных
У языка существуют некоторые проблемы с асинхронным программированием
Особенности типизации и обработки исключений дают большие возможности «выстрелить себе в ногу» — достаточно легко допустить ошибку в коде.
История Python
Питон – язык не новый. Его разработка началась ещё в конце восьмидесятых годов. Релиз первой версии языка произошёл в феврале 1991 года.
Отцом-основателем Питона и, на протяжении многих лет, главным разработчиком являлся голландский программист Гвидо Ван Россум. На момент создания языка Гвидо работал в центре математики и информатики в Нидерландах. В качестве основы для Пайтона Россум взял язык программирования ABC, в разработке которого когда-то участвовал.
Почему выбрали Python
Нет. Он не назван в честь опасной змеи. Россум был фанатом комедийного сериала в конце 70-х. Название “Python” было взято из этого же сериала “Monty Python’s Flying Circus” (Летающий цирк Монти Пайтона).
Происхождение названия
Язык назван в честь телевизионного шоу «Летающий цирк Монти Пайтона», популярного в то время. Не смотря на этот факт, в сообществе прочно укрепилась связь между названием языка и змеями, чему способствует логотип: две змеи.
Как правильно звучит название?
Правильно произносится слово «Python» как «Пайтон». Однако, среди русскоязычных програмистов укоренилось произношение «Питон».
Логотип
На логотипе изображены две змеи, образующие квадрат с выпуклым центром, это часто вводит в заблуждение пользователей, вынуждая ассоциировать название языка с рептилией.
Логотип создал брат создателя языка, Юст ван Россум — программист и шрифтовой дизайнер.
Даты релизов
- В феврале 1991 исходный код языка был опубликован на alt.sources.
- В 2000 году вышла в релиз вторая версия Python. В неё добавили много важных инструментов, включая поддержку Юникода и сборщик мусора.
- 3 декабря 2008 в релиз вышла третья версия Python, которая является основной до сих пор. Многие особенности языка были переделаны и стали несовместимы с предыдущими версиями.
- Официально поддержка второй версии языка прекращена в 2020 году.
Особенности программирования на Python
Простой язык, легкий и доступный в изучении
У Python короткий и выразительный синтаксис, особенно в сравнении с такими императивными языками, как C++, Java, C#. Изюминкой синтаксиса является то, что вложенность обозначается отступами слева, а не фигурными скобками или другими знаками. Можно сказать, что благодаря этому язык диктует хороший стиль оформления кода. Так же существует единый стандарт оформления (PEP-8) и во многих средах программирования можно привести код к этому стандарту при помощи нажатия одной комбинации клавиш.
Простота отчасти обусловлена тем, что Питон написан на основе языка ABC, который использовался для обучения программированию.
Бесплатный и с открытым кодом
Питон можно абсолютно свободно использовать в любом проекте, даже в коммерческом. То, что у этого языка открытый исходный код, а на его будущее сильно влияет мнение широкой общественности – дополнительные драйверы развития.
Портативность
Программа, написанная на Пайтоне, может быть запущенна почти на любой операционной системе. Перенести скрипт с одной платформы на другую – дело нескольких кликов.
Масштабируемый и встраиваемый
Python позволяет с лёгкостью использовать код, написанный на других языках (особенно, на C). Это даёт возможность ускорить Вашу программу в критически важных местах.
Высокоуровневый, интерпретируемый язык
Язык берёт на себя многие нюансы низкого уровня. Главные из них это «сборка мусора», работа с памятью, работа с конкурентностью. Это освобождает от головной боли, но и навязывает некоторые архитектурные решения.
Стандартные библиотеки для решения общих задач
Как уже говорилось, в Питоне есть обширная стандартная библиотека и множество сторонних библиотек. Для их установки и подключения предусмотрены удобные синтаксические конструкции и менеджер пакетов PIP.
Объектно-ориентированный
Несмотря на то, что здесь есть конструкции из функционального программирования, объектно-ориентированный подход в Python достиг своего апогея: всё, начиная от типа и заканчивая строковым литералом, является объектом.
Юмор в Питоне
В языке есть много «пасхалок». К примеру, если выполнить команду «import this», интерпретатор выведет Дзен Питона – своеобразный свод философских постулатов языка. Ещё интереснее становится если выполнить «import antigravity», «from __future__ import braces». Пробуйте!
Приложения на Python
Веб-программирование
Благодаря таким фреймворкам, как Django и Flask Питон прочно закрепился в мире программирования для веба. Этот язык используется на сайтах таких компаний как Instagram, Disqus, Mozilla, The Washington Times, Pinterest, YouTube, Google и др.
Научные и математические вычисления
У Python много библиотек для научных и математических вычислений. Вот короткий список основных из них: SciPy, Pandas и NumPy. Так же стоит отметить пакет Anaconda и Jupyter Notebook —мощный инструмент для разработки и представления проектов Data Science в интерактивном виде.
Также, язык часто используется в машинном обучении, анализе и сборе данных.
Прототипирование
Да, Питон медленный. Но он невероятно прост в применении. Благодаря этому на нём часто пишут прототипы и, если прототип доказывает свою жизнеспособность, переписывают некоторые части программы на более быстрых языках.
Почему стоит начать с Питона?
Простой язык для изучения программирования
Python используется для обучения программированию детей и новичков.
Не смотря на простоту синтаксиса, в Пайтоне реализованы многие прогрессивные идеи и возможности из разных подходов к программированию. В итоге Вы можете быстро и легко изучить функциональное, объектно-ориентированное, конкурентное, асинхронное мета-программирование и много чего ещё.
Не слишком строгий
Не нужно определять тип переменной в Python. Нет необходимости добавлять “;” в конце строки.
Python принуждает следовать методам написания читаемого кода (например, одинаковым отступам). Эти мелочи могут значительно облегчить обучение новичкам.
Первая программа на Python
По традиции, изучение любого языка программирования начинают с программы «Hello, World!». Её суть состоит в том, что на экран надо вывести надпись… «Hello, World!». Давайте сравним как выглядит текст этой простейшей программы на разных языках.
Русские Блоги
Python на практике: используйте pygame для создания начального игрового интерфейса (1)
После изучения Python в течение определенного периода времени ему все еще нужны некоторые практические ссылки для глубокого понимания. В конце концов, я новичок, который только начинает. Позвольте мне начать с нескольких простых игровых проектов, чтобы немного подбодрить себя. Хахаха, давайте не будем говорить об этом, служить.
- Создайте окно Python с синим фоном
Сначала используйте pycharm для создания файла проекта. Метод именования лучше всего соотносить с проектом, который вы делаете, как известно из названия.
Сначала создайте пустое окно pygame и установите его цвет фона (цвет фона можно настроить, а цвет RGB получается через Baidu)
Метод pygame.event.get () используется для обнаружения пользовательских событий и определения операций, выполняемых пользователем.
Метод screen.fill () заполняет экран цветом фона.
Код содержит следующие процессы:
- Импорт модуля (модули, которые нам нужно использовать в настройках игры ниже, вот два, модуль pygame содержит функции, необходимые для разработки игры, а модуль sys используется для выхода из игры)
- Инициализировать игру и создать экранные объекты (установить свойства экрана)
- Откройте игровой цикл (обнаруживайте действия пользователя, обновляйте экран)
Результат показан на рисунке. Размер окна можно настроить в соответствии с вашими потребностями.
Если есть еще много функций, которые нужно добавить позже, вы можете подумать о создании некоторых классов для хранения разных функций по отдельности, чтобы при необходимости большого количества изменений функций они не казались загроможденными и код может быть и прочнее. Поскольку здесь нет необходимости реализовывать большое количество функций, нет необходимости создавать отдельный класс для хранения кода.
- Поместите изображение в центр экрана и установите такой же цвет фона
Добавьте изображение на экран и создайте класс корабля для управления настройками изображения, см. код.
ship.py
Примечание. Определите метод __init __ (). (Содержит два формальных параметра: self, screen. Метод __init __ () принимает значения этих формальных параметров и сохраняет их в атрибутах экземпляра, созданных в соответствии с этим классом), __ — два символа подчеркивания, и только один вводится изначально. Давно искал ошибку.
В pygame начало координат (0, 0) находится в верхнем левом углу экрана.
Как и выше, установив код в классе корабля, базовая позиция изображения была установлена, и вам нужно только обновить код в main_color.py, чтобы реализовать функцию.
Ниже приведен обновленный файл кода: # *** после обновленного местоположения
Реализуя эти две небольшие функции, мы используем множество методов в модуле pygame и напрямую вызываем методы, которые были установлены в модуле для реализации функций. Это действительно обеспечивает большое удобство, поэтому, когда вы хотите Напишите сложную игру самостоятельно. Важно понимать функции каждого модуля и каждого метода. Конечно, если вы напишете больше, это произойдет естественным образом.
Взгляните на визуализации:
Изображение центрируется, а цвет фона не регулируется. При выборе изображения лучше, если фон будет прозрачным. Формат изображения должен быть растровым (т. е. суффикс .Bmp). Конечно, можно также добиться перемещения картинок вверх, вниз, влево и вправо. Я не буду писать их здесь по очереди. Я расскажу об этом в обновленных блогах. На самом деле, в этих блогах нет технический уровень, просто примечание и добавление некоторого понимания., это удобно для использования в будущем, и, кстати, может углубить впечатление.
Один Леле не так хорош, как остальные: писать — это музыка, комментировать — это музыка, видеть — это музыка, музыка — это самое важное.
Классы в Python
Объектно-ориентированное программирование считается одним из самых эффективных методов создания программ. В объектно-ориентированном программирование создаются классы, описывающие реальные предметы и ситуации, а затем создаете объекты на основе этих описаний. Созданием объекта на основе класса называется созданием экземпляра.
Содержание страницы: |
---|
1. Создание класса |
1.1. Метод __init__() |
1.2. Создание экземпляра класса |
1.3. Обращение к атрибутам класса |
1.4. Вызов методов класса |
2. Работа с классами |
2.1. Прямое изменение значения атрибута |
2.2. Изменение значения атрибута с использованием метода |
2.3. Изменение значения атрибута с приращением |
3. Наследование класса |
3.1. Переопределение методов класса-родителя |
1. Создание класса в Python
Классы в Python могут моделировать практически все что угодно. Создадим простой класс, который будет описывать конкретный автомобиль:
class Car ():
"""Описание автомобиля"""
def __init__ ( self , brand, model):
"""Инициализирует атрибуты brand и model"""
self .brand = brand
self .model = model
Разберем код по порядку. В начале определяется класс с именем Car ( class Car ). По общепринятым соглашение название класса начинается с символа верхнего регистра. Круглые скобки в определение класса пусты, так как класс создается с нуля. Далее идет строка документации с кратким описанием. ( """Описание автомобиля""" ).
1.1. Метод __init__()
Функция, являющаяся частью класса, называется методом. Все свойства функций так же относятся и к методам, единственное отличие это способ вызова метода. Метод __init__() — специальный метод, который автоматически выполняется при создание нового экземпляра. Имя метода начинается и заканчивается двумя символами подчеркивания. Метод __init__() определяется с тремя параметрами: self, brand, model. Параметр self обязателен в определение метода и должен стоять перед всеми остальными параметрами. При создании экземпляра на основе класса Car, необходимо передать только два последних аргумента brand и model.
Каждая из двух переменных self.brand = brand и self.model = model снабжена префиксом self и к ним можно обращаться вызовом self.brand и self.model. Значения берутся из параметров brand и model. Переменные, к которым вы обращаетесь через экземпляры, также называются атрибутами.
В классе Car также есть два метода: sold() и discount() . Этим методам не нужна дополнительная информация и они определяются с единственным параметром self. Экземпляры, которые будут созданы на базе этого класса смогут вызывать данные методы, которые просто выводят информацию.
1.2. Создание экземпляра класса
С помощью класса Car мы можем создавать экземпляры для конкретного автомобиля. Каждый экземпляр описывает конкретный автомобиль и его параметры.
Создадим переменную car_1 и присвоим ей класс с параметрами автомобиля которые нужно обязательно передать (brand, model). При выполнение данного кода Python вызывает метод __init__ , создавая экземпляр, описывающий конкретный автомобиль и присваивает атрибутам brand и model переданные значения. Этот экземпляр сохраняется в переменной car_1.
1.3. Обращение к атрибутам класса
К атрибутам экземпляра класса мы можем обращаться через запись:
В записи используется имя экземпляра класса и после точки имя атрибута (car_1.brand) или (car_1.model). В итоге на экран выведется следующая информация:
Bmw
X5
1.4. Вызов методов класса
После создания экземпляра на основе класса Car можете вызывать любые методы, написанные в классе. Чтобы вызвать метод, укажите экземпляр (car_1) и вызываемый метод после точки:
car_1. sold ()
car_1. discount ()
При вызове данных методов, Python выполнит код, написанный в этом методе.
Автомобиль Bmw X5 продан
На автомобиль Bmw X5 скидка 5%
2. Работа с классами на Python
Большая часть времени работы программиста — это работа с классами и их экземплярами. Изменим наш предыдущий класс Car и добавим дополнительные атрибуты, которые сможем в последующем менять при работе с экземплярами класса.
class Car ():
"""Описание автомобиля"""
def __init__ ( self , brand, model, years):
"""Инициализирует атрибуты"""
self .brand = brand
self .model = model
self .years = years
self .mileage = 0
В описание автомобиля есть три атрибута(параметра) это brand, model, years. Также мы создали новый атрибут mileage (пробег) и присвоили ему начальное значение 0. Так как пробег у всех автомобилей разный, в последующем мы сможем изменять этот атрибут. Метод get_full_name будет возвращать полное описание автомобиля. Метод read_mileage будет выводить пробег автомобиля.
Создадим экземпляр с классом Car и запустим методы:
car_2 = Car('audi', 'a4', 2019)
print(car_2. get_full_name() )
car_2. read_mileage()
В результате в начале Python вызывает метот __init__() для создания нового экземпляра. Сохраняет название, модель, год выпуска и создает новый атрибут с пробегом равным 0. В итоге мы получим такой результат:
Автомобиль Audi A4 2019
Пробег автомобиля 0 км.
2.1. Прямое изменение значения атрибута
Для изменения значения атрибута можно обратиться к нему напрямую и присвоить ему новое значение. Изменим пробег автомобиля car_2:
car_2 = Car('audi', 'a4', 2019)
print(car_2.get_full_name())
car_2.mileage = 38
car_2. read_mileage()
Мы обратились к нашему экземпляру car_2 и связанным с ним атрибутом пробега(mileage) и присвоили новое значение 38. Затем вызвали метод read_mileage() для проверки. В результате мы получим следующие данные.
Автомобиль Audi A4 2019
Пробег автомобиля 38 км.
2.2. Изменение значения атрибута с использованием метода
В Python удобнее писать методы, которые будут изменять атрибуты за вас. Для этого вы просто передаете новое значение методу, который обновит значения. Добавим в наш класс Car метод update_mileage() который будет изменять показания пробега.
class Car ():
"""Описание автомобиля"""
def __init__ ( self , brand, model, years):
"""Инициализирует атрибуты"""
self .brand = brand
self .model = model
self .years = years
self .mileage = 0
def update_mileage ( self , new_mileage):
"""Устанавливает новое значение пробега"""
self .mileage = new_mileage
car_2 = Car('audi', 'a4', 2019)
print(car_2.get_full_name())
car_2. read_mileage()
car_2. update_mileage (17100)
car_2. read_mileage()
Вначале выведем текущие показания пробега ( car_2. read_mileage() ). Затем вызовем метод update_mileage() и передадим ему новое значение пробега ( car_2. update_mileage (17100) ). Этот метод устанавливает пробег 17100. Выведем текущие показания ( car_2. read_mileage() ) и у нас получается:
Автомобиль Audi A4 2019
Пробег автомобиля 0 км.
Пробег автомобиля 17100 км.
2.3. Изменение значения атрибута с приращением
Если вместо того, чтобы присвоить новое значение, требуется изменить с значение с приращением, то в этом случаем мы можем написать еще один метод, который будет просто прибавлять пробег к уже имеющемся показаниям. Для этого добавим метод add_mileage в класс Car :
def add_mileage (self, km):
"""Добавляет пробег"""
self .mileage += km
Новый метод add_mileage() получает пробег в км и добавлет его к self.mileage.
car_2. add_mileage (14687)
car_2. read_mileage ()
Пробег автомобиля 31787 км.
В итоге после вызова метода add_mileage() пробег автомобиля в экземпляре car_2 увеличится на 14687 км и станет равным 31787 км. Данный метод мы можем вызывать каждый раз при изменении пробега и передавать новые значение, на которое будет увеличивать основной пробег.
3. Наследование класса в Python
Создавая новые классы не обязательно их создавать с нуля. Новый класс может наследовать свои атрибуты (переменные) и методы (функции принадлежащие классам) от ранее определенного исходного класса ( суперкласса ). Также исходный класс называют родителем, а новый класс — потомком или подклассом. В класс-потомок можно добавлять собственные атрибуты и методы. Напишем новый класс ElectricCar, который будет создан на базе класса Car:
class Car():
"""Описание автомобиля"""
def __init__(self, brand, model, years):
"""Инициализирует атрибуты brand и model"""
self.brand = brand
self.model = model
self.years = years
self.mileage = 0
def update_mileage(self, new_mileage):
"""Устанавливает новое значение пробега"""
self.mileage = new_mileage
def add_mileage(self, km):
"""Добавляет пробег"""
self.mileage += km
class ElectricCar ( Car ):
"""Описывает электромобиль"""
def __init__ ( self , brand, model, years):
"""Инициализирует атрибуты класса родителя"""
super().__init__ (brand, model, years)
# атрибут класса-потомка
self .battery_size = 100
def battery_power ( self ):
"""Выводит мощность аккумулятора авто"""
print(f"Мощность аккумулятора < self .battery_size>кВт⋅ч")
Мы создали класс ElectriCar на базе класса Car . Имя класса-родителя в этом случае ставится в круглые скобки( class ElectricCar ( Car ) ). Метод __init__ в классе потомка (подклассе) инициализирует атрибуты класса-родителя и создает экземпляр класса Car . Функция super() .- специальная функция, которая приказывает Python вызвать метод __init__() родительского класса Car , в результате чего экземпляр ElectricCar получает доступ ко всем атрибутам класса-родителя. Имя super как раз и происходит из-за того, что класс-родителя называют суперклассом, а класс-потомок — подклассом.
Далее мы добавили новый атрибут self .battery_size и присвоили исходное значение 100. Этот атрибут будет присутствовать во всех экземплярах класса ElectriCar . Добавим новый метод battery_power() , который будет выводить информацию о мощности аккумулятора.
Создадим экземпляр класса ElectriCar и сохраним его в переменную tesla_1
tesla_1 = ElectricCar ('tesla', 'model x', 2021)
print(tesla_1. get_full_name ())
tesla_1. battery_power ( )
При вызове двух методов мы получим:
Автомобиль Tesla Model X 2021
Мощность аккумулятора 100 кВт⋅ч
В новый класс ElectriCar мы можем добавлять любое количество атрибутов и методов связанных и не связанных с классом-родителем Car .
3.1. Переопределение методов класса-родителя
Методы, которые используются в родительском классе можно переопределить в классе-потомке (подклассе). Для этого в классе-потомке определяется метод с тем же именем, что и у класса-родителя. Python игнорирует метод родителя и переходит на метод, написанный в классе-потомке (подклассе). Переопределим метод def get_full_name() чтобы сразу выводилась мощность аккумуляторов.
class ElectricCar ( Car ):
"""Описывает электромобиль"""
def __init__ ( self , brand, model, years):
"""Инициализирует атрибуты класса родителя"""
super().__init__ (brand, model, years)
# атрибут класса-потомка
self .battery_size = 100
def battery_power ( self ):
"""Выводит мощность аккумулятора авто"""
print(f"Мощность аккумулятора < self .battery_size>кВт⋅ч")
В результате при запросе полного названия автомобиля Python проигнорирует метод def get_full_name() в классе-родителя Car и сразу перейдет к методу def get_full_name() написанный в классе ElectricCar.
tesla_1 = ElectricCar ('tesla', 'model x', 2021)
print(tesla_1. get_full_name ())
Примеры программ на языке Python
Данный пример чисто демонстрационный, так как его можно значительно улучшить.
Текст для версии 3.7.1
Примеры работы с последовательностями [ править ]
Иллюстрируют особенности индексации элементов и срезов: при взятии среза нумеруются не сами элементы, а промежутки между ними.
Функции подобные range() поддерживают то же правило (для версий языка 2.x):
Реализация перегрузки функций [ править ]
Это пример простой реализации поддержки перегрузки функций на Python.
Она демонстрирует, как, используя уже имеющиеся в Python средства, можно обойти одно из ограничений базовой реализации. Поддерживается минимум возможностей (только фиксированное количество позиционных аргументов, нет именованных аргументов, нет приведения типов (например int -> float ) и т. п.), но работает достаточно быстро.
Управление контекстом выполнения [ править ]
Следующий пример из PEP343 иллюстрирует применение оператора with для защиты блока кода от одновременного выполнения двумя потоками:
Генератор чисел Фибоначчи [ править ]
Пример генератора чисел Фибоначчи и его использования:
Альтернативный синтаксис доступа к элементам словаря [ править ]
Можно определить словарь, который в дополнение к обычному синтаксису доступа к значению по ключу d[key] может предоставлять синтаксически более наглядный доступ к атрибуту d.key в случае алфавитно-цифровых ключей:
Функтор с генерацией байтокода [ править ]
Пример эффективной реализации функтора, основанный на генерации байтокода во время исполнения. Этот пример демонстрирует следующие возможности/особенности Python:
- Возможность реализации специфических средств функционального программирования наработками, уже имеющимися в языке
- Работать с байтокодом в Python достаточно просто
- Зачастую генерация байтокода способна значительно ускорить исполнение.
Это только пример, он реализует всего одну операцию — сложение и имеет несколько других ограничений.
Код SlowFunctor можно посмотреть здесь.
Приведенные значения времени следует рассматривать только в сравнении друг с другом.
ipython — расширение интерпретатора Python для интерактивной работы.
Используя эту технику, можно создать полноценный функтор, добавив функции для других операций ( __sub__, __div__ и другие) и расширив его на случай нескольких входных функций с разными аргументами.
Транспонирование матрицы [ править ]
Пример лаконичной реализации операции транспонирования матриц с использованием парадигмы функционального программирования.
Нахождение Факториала [ править ]
Решение квадратного уравнения [ править ]
Простая программа для решения квадратных уравнений (то есть вида: ax 2 +bx+c=0). Даются небольшие пояснения, каким образом уравнение решается в том или ином случае (например, для неполных квадратных уравнений).
Что такое дробь [ править ]
cls @ECHO OFF title Folder Private if EXIST «HTG Locker» goto UNLOCK if NOT EXIST Private goto MDLOCKER
echo Are you sure you want to lock the folder(Y/N) set/p «cho=(more than)» if %cho%==Y goto LOCK if %cho%==y goto LOCK if %cho%==n goto END if %cho%==N goto END echo Invalid choice. goto CONFIRM
ren Private «HTG Locker» attrib +h +s «HTG Locker» echo Folder locked goto End
echo Enter password to unlock folder set/p «pass=(more than)» if NOT %pass%== [Ваш пароль] goto FAIL attrib -h -s «HTG Locker» ren «HTG Locker» Private echo Folder Unlocked successfully goto End
echo Invalid password goto end
md Private echo Private created successfully goto End
Вычисление числа Пи [ править ]
Тренажёр для изучения координат [ править ]
Программа, интересная и как тренажёр для учебной работы с координатами (5-7 класс) и как пример несложной программы, которую может написать начинающий программист (8-9 класс)