Глава 1 Компьютеры и программы.ppt
- Количество слайдов: 46
Программирование на Python’е: Введение в информатику Глава 1 Компьютеры и программы Программирование на Python’е 1
Задачи: n n n Понять роль аппаратного и программного обеспечения в информационных вычислительных системах. Узнать, что изучает наука информатика и какие методы при этом применяются. Понять базовую структуру современного компьютера. Python Programming, 2/e 2
Задачи: (продолжение) n n n Понять формы и функции языков программирования. Начать использовать язык программирования Python. Узнать о моделях с хаотическим поведением и о их значении для вычислительной техники. Python Programming, 2/e 3
Универсальная машина n n Современный компьютер можно определить как “аппарат, который хранит данные и манипулирует данными под управлением изменяемых программ“. Два ключевых элемента: n n Компьютеры это устройства для обработки данных. Компьютеры работают под управлением изменяющихся программ. Python Programming, 2/e 4
Универсальная машина n Что такое компьютерная программа? n n n Множество подробных пошаговых инструкций, предписывающих компьютеру что делать. Если изменяется программа, то компьютер выполняет другой набор действий или другое задание. Аппарат остаётся без изменений, но программа изменяется! Python Programming, 2/e 5
Универсальная машина n n Программы выполняются или запускаются на выполнение. Все компьютеры равносильны при подходящем программировании, то есть каждый компьютер может выполнить задания, которые выполняются другими компьютерами (время выполнения не в счет). Python Programming, 2/e 6
Возможности программ n n n Программное обеспечение (программы) управляют аппаратным обеспечением (физическими устройствами). Процесс создания программ называется программированием. Зачем учиться программировать? n n Программирование фундаментальная часть информатики Понимание процесса программирования помогает вам понять силу и слабость компьютеров. Python Programming, 2/e 7
Возможности программ n n n Умение программировать помогает стать более грамотным пользователем компьютера Программы могут развлекать! Программы – форма самовыражения Программирование помогает развитию умения решать проблемы, особенно при анализе сложных систем и сведению их к взаимодействию между более простыми системами. Программистов всегда не хватает! Python Programming, 2/e 8
Что такое информатика? n n n Это не наука о компьютерах! “Компьютеры для информатики то же самое, что телескопы для астрономии. ” – Э. Дейкстра Возникает вопрос: “Какие процессы можно описать? ” В действительности этот вопрос звучит так: “Что можно вычислить? ” Python Programming, 2/e 9
Что такое информатика? n Моделирование n n n Один из способов показать, что данная проблема имеет решение заключается в моделировании решения. Решение задаётся алгоритмом, описанием пошагового процесса достижения желаемого результата. Важная проблема – существование алгоритма отвечает на вопрос о решении проблемы только положительно. Нельзя построить алгоритм к отрицанию! Python Programming, 2/e 10
Что такое информатика? n Анализ n n n Анализ это процесс изучения алгоритмов и проблем с помощью математики. Некоторые на первый взгляд простые проблемы не решаются никакими алгоритмами. Такие проблемы называют неразрешимыми. Решение проблемы может быть недостижимым, если для её решения требуется слишком много времени или слишком много компьютерной памяти. Python Programming, 2/e 11
Что такое информатика? n Экспериментирование n n Некоторые проблемы слишком сложны для анализа. В этом случае можно попытаться смоделировать систему и затем изучать её поведение. Python Programming, 2/e 12
Основы аппаратного обеспечения n Центральное процессорное устройство (ЦПУ) это мозг компьютера. n n ЦПУ выполняет все основные операции с данными. Примеры: простые арифметические операции, проверка равенства (неравенства) двух чисел. Python Programming, 2/e 13
Основы аппаратного обеспечения n В памяти хранятся программы и данные. n n n ЦПУ имеет прямой доступ только к данным из оперативной памяти (RAM или Random Access Memory). Оперативная память (main memory) быстрая, но энергозависимая, если электропитание прерывается, то содержимое памяти теряется. Вспомогательная память (secondary memory) позволяет более долговременное хранение: на основе магнитных свойств материалов (жесткие и флоппи диски), на основе оптических свойств компакт-диски и DVD-диски (CD, DVD) Python Programming, 2/e 14
Основы аппаратного обеспечения n n Устройства ввода n Данные передаются на компьютер с помощью клавиатуры, мыши и т. д. Устройства вывода n Обработанные данные выводятся для пользователя на монитор, принтер и т. д. Python Programming, 2/e 15
Основы аппаратного обеспечения n Цикл “выборка-выполнение“ n n n Первая инструкция, возвращенная из памяти. Декодируем инструкцию, чтобы увидеть, что она представляет. Выполняем соответствующее инструкции действие. Следующая инструкция изымается, декодируется и выполняется. Намылить, прополоскать, повторить! Python Programming, 2/e 16
Языки программирования n Если обычные языки используются для описания сложных алгоритмов, то возникают проблемы многозначного толкования и неточности. n n n Программы выражаются однозначно и точно с помощью языков программирования. Каждая структура на языке программирования имеет точную форму, определяемую синтаксисом. Каждая структура на языке программирования имеет точное значение, определяемое семантикой. Python Programming, 2/e 17
Языки программирования n Язык программирования предоставляет код для написания инструкций, которым следует компьютер. n n Программисты часто называют свои программы компьютерным кодом. Процесс написания алгоритма на языке программирования часто называют кодированием. Python Programming, 2/e 18
Языки программирования n Языки программирования высокого уровня n n Разрабатываются, чтобы использовались и понимались людьми Языки программирования низкого уровня n Только компьютерное аппаратное обеспечение понимает языки программирования очень низкого уровня, называемые еще машинными языками. Python Programming, 2/e 19
Языки программирования n Сложить два числа: n n n Загрузить число из памяти с адресом 2001 в ЦПУ. Загрузить число из памяти с адресом 2002 в ЦПУ. Сложить два числа в ЦПУ Сохранить результат по адресу 2003 В действительности эти инструкции низкого уровня представляются двоичными числами (1 -ми и 0 -ми) Python Programming, 2/e 20
Языки программирования n n n Язык высокого уровня c=a+b Это нужно перевести на язык машинных команд, которые компьютер может исполнять. Компиляторы преобразуют программы, написанные на языках высокого уровня, в машинный язык компьютеров. Python Programming, 2/e 21
Языки программирования n n n Интерпретаторы имитируют компьютеры, которые понимают язык высокого уровня. Исходная программа обычно не транслируется на машинный язык вся сразу. Интерпретатор анализирует и выполняет исходный код инструкция за инструкцией. Python Programming, 2/e 22
Языки программирования n Компиляция против интерпретации n n Как только программу откомпилировали её можно выполнять без исходного кода и без компилирования снова и снова. Если программа выполняется в режиме интерпретации, то интерпретатор и исходный код нужны всякий раз, когда программа выполняется на компьютере. Откомпилированные программы обычно отрабатывают быстрее, потому что трансляция исходного кода происходит вся сразу. Python Programming, 2/e 23
Языки программирования n n Интерпретируемые языки являются частью более гибкого программного окружения, потому что программы на них разрабатываются и выполняются интерактивно. Интерпретируемые программы в большей степени переносимы, в том смысле, что исполняемый код, выданный компилятором для Pentium’а не пойдёт на Mac’е без перекомпиляции. Если нужный интерпретатор уже есть, интерпретируемый код можно запускать без изменений. Python Programming, 2/e 24
Магия Python’а Если вы запустите Python, то увидите нечто похожее на: Python 3. 2. 3 (default, Apr 11 2012, 07: 12: 16) [MSC v. 1500 64 bit (AMD 64)] on win 32 Type "copyright", "credits" or "license()" for more information. >>> Python Programming, 2/e 25
>>" это подсказка Python’а, показывающая, что" src="https://present5.com/presentation/3/82955572_143873289.pdf-img/82955572_143873289.pdf-26.jpg" alt="Магия Python’а n § § § Цепочка символов ">>>" это подсказка Python’а, показывающая, что" />
Магия Python’а n § § § Цепочка символов ">>>" это подсказка Python’а, показывающая, что Python готов к приёму команды. Команды, готовые для выполнения, называются операторами. >>> print("Привет, мир") ‘Привет, мир’ >>> print(2+3) 5 >>> print("2+3=", 2+3) 2+3= 5 >>> Python Programming, 2/e 26
Магия Python’а n n Обычно нам нужно выполнить несколько операторов подряд, чтобы решить типичную задачу. Один из способов сделать это – воспользоваться функцией. >>> def hello(): print("Привет") print("Компьютеры занимательны") >>> Python Programming, 2/e 27
>> n n n Первая" src="https://present5.com/presentation/3/82955572_143873289.pdf-img/82955572_143873289.pdf-28.jpg" alt="Магия Python’а n >>> def hello(): print("Привет") print("Компьютеры занимательны") >>> n n n Первая" />
Магия Python’а n >>> def hello(): print("Привет") print("Компьютеры занимательны") >>> n n n Первая строка говорит Python’у, что мы определяем новую функцию, и называем её hello. Следующая строка начинается с отступа, который показывает, что строка часть функции hello. Пустая строка (нажмите дважды
>> Заметьте, что пока" src="https://present5.com/presentation/3/82955572_143873289.pdf-img/82955572_143873289.pdf-29.jpg" alt="Магия Python’а n n >>> def hello(): print("Привет") print("Компьютеры занимательны") >>> Заметьте, что пока" />
Магия Python’а n n >>> def hello(): print("Привет") print("Компьютеры занимательны") >>> Заметьте, что пока ничего не случилось! Мы определили функцию, но пока мы не сказали Python’у её выполнить! Функция вызывается (на выполнение) посредством печати её имени. >>> hello() Привет Компьютеры занимательны >>> Python Programming, 2/e 29
Магия Python’а n n n Зачем нужны скобки ()? У команд могут быть изменяемые части, называемые параметрами. Параметры помещаются между скобками (). >>> def greet(person): print("Привет, ", person) print ("Как поживаешь? “) >>> Python Programming, 2/e 30
>> greet("Полина") Привет," src="https://present5.com/presentation/3/82955572_143873289.pdf-img/82955572_143873289.pdf-31.jpg" alt="Магия Python’а n n n >>> greet("Толя") Привет, Толя Как поживаешь? >>> greet("Полина") Привет," />
Магия Python’а n n n >>> greet("Толя") Привет, Толя Как поживаешь? >>> greet("Полина") Привет, Полина Как поживаешь? >>> Когда мы используем параметры, мы можем подогнать под себя вывод нашей функции. Python Programming, 2/e 31
Магия Python’а n n Когда мы выходим из Python’а (из интерпретатора) , то функция, которую мы определили, перестаёт существовать! Программы обычно состоят из функций, модулей, или сценариев, которые сохраняют на диск и которые используют снова и снова. Файл модуля это текстовый файл, созданный в текстовом редакторе (сохранённый как "простой текст"), который содержит определения функций. Программное окружение предназначено помочь программистам писать программы и обычно включает автоматические отступы подсветку и т. д. Python Programming, 2/e 32
Магия Python’а # Файл: chaos. py # Простая программа, демонстрирующая хаотическое поведение def main(): print("Эта программа функции, выдающей хаотические числа") x = eval(input("Введите число между 0 и 1: ")) for i in range(10): x = 3. 9 * x * (1 - x) print(x) main() n n n Мы будем использовать имена вида <имя_файла>. py , когда сохраняем нашу работу, чтобы указать, что это программа языке Python. Выше мы определили функцию с названием main. Функция main() предписывает Python’у выполнить код. Python Programming, 2/e 33
Магия Python’а >>> Эта программа функции, выдающей хаотические числа Введите число между 0 и 1: . 5 0. 975 0. 0950625 0. 335499922266 0. 869464925259 0. 442633109113 0. 962165255337 0. 141972779362 0. 4750843862 0. 972578927537 0. 104009713267 >>> Python Programming, 2/e 34
Устройство программы на Python’е # Файл: chaos. py # Простая программа, демонстрирующая хаотическое # поведение n Строки, начинающиеся с # называются комментариями n n Они предназначены для людей и игнорируются Python’ом Python пропускает текст от # до конца строки Python Programming, 2/e 35
Устройство программы на Python’е def main(): n Начало определения функции называемой main n n Так как наша программа содержит только один этот модуль, то его можно записать без функции main. Более того использование функции main всего лишь стандартная практика. Python Programming, 2/e 36
Устройство программы на Python’е print("Эта программа функции, выдающей хаотические числа") n Эта строка предписывает Python’у напечатать описание программы. Python Programming, 2/e 37
Внутри программы на Python’е x = eval(input("Введите число между 0 и 1: ")) n n n x это пример переменной Переменная используется, чтобы присвоить имя значению, чтобы ссылаться на него позднее. Информация в кавычках выводится на экран, а напечатанное в ответ число сохраняется в x. Python Programming, 2/e 38
Внутри программы на Python’е for i in range(10): n n n for элемент цикла Цикл говорит Python’у повторять одну и ту же вещь снова и снова. В этом примере код будет повторён 10 раз. Python Programming, 2/e 39
Устройство программы на Python’е x = 3. 9 * x * (1 - x) print(x) n n Эти строки образуют тело цикла. Тело цикла это то, что повторяется на каждом шаге цикла. Тело цикла обозначается в записи с помощью отступов. Эффект цикла тот же, что и повторение двух строк 10 раз! Python Programming, 2/e 40
Устройство программы на Python’е x = 3. 9 * x * (1 - x) for i in range(10): print(x) x = 3. 9 * x * (1 - x) print(x) n Программы в обоих столбцах эквивалентны! x = 3. 9 * x * (1 - x) print(x) Python Programming, 2/e 41
Устройство программы на Python’е x = 3. 9 * x * (1 - x) n n Это называется оператором присваивания Правая часть присваивания (то, что справа от "=") – математическое выражение. Знак * обозначает умножение Как только значение справа вычислено, то оно присваивается переменной x Python Programming, 2/e 42
Устройство программы на Python’е main() n Эта последняя строка предписывает Python’у выполнить код функции main Python Programming, 2/e 43
Хаос и компьютеры n Программа chaos. py: def main(): print("Эта программа функции, выдающей хаотические числа") x = eval(input("Введите число между 0 и 1: ")) for i in range(10): x = 3. 9 * x * (1 - x) print(x) main() n n Для любого введённого числа возвращает 10 по внешнему виду случайных чисел между 0 и 1 Кажется, что значения x хаотичны Python Programming, 2/e 44
Хаос и компьютеры n n Функция, вычисляемая программой, имеет форму , где k is 3. 9 Этот класс функций называется полиномиальным. Моделирует определённые виды неустойчивых электрических цепей. Очень маленькие изменения в начальных значениях могут дать большие различия в выходных данных. Python Programming, 2/e 45
Хаос и компьютеры Ввод: 0. 25 0. 73125 0. 76644140625 0. 698135010439 0. 82189581879 0. 570894019197 0. 955398748364 0. 166186721954 0. 540417912062 0. 9686289303 0. 118509010176 n Ввод: 0. 26 0. 75036 0. 73054749456 0. 767706625733 0. 6954993339 0. 825942040734 0. 560670965721 0. 960644232282 0. 147446875935 0. 490254549376 0. 974629602149 n Python Programming, 2/e 46


