Главная страница

Методичка. Методические указания по ПО АС_очники. Методические указания к проведению занятий по дисциплине " Программное обеспечение автоматизированных систем" Москва 2018


Скачать 0.59 Mb.
НазваниеМетодические указания к проведению занятий по дисциплине " Программное обеспечение автоматизированных систем" Москва 2018
АнкорМетодичка
Дата06.09.2022
Размер0.59 Mb.
Формат файлаdoc
Имя файлаМетодические указания по ПО АС_очники.doc
ТипМетодические указания
#663666
страница6 из 11
1   2   3   4   5   6   7   8   9   10   11

Тема 5. Блоки инструкций, управляющие инструкции


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

Управляющие инструкции, как и в других языках программирования, используются в Python для разветвления линий потока. Их применение имеет как сходство, так и заметные отличия по сравнению с другими языками программирования. В программах на Python они применяются по следующей общей схеме:

<Управляющая инструкция>:

<отступы><Блок инструкций>

Здесь управляющая инструкция начинается зарезервированными словами, такими как if, while, for… и дополняется логическим выражением, со значением True или False.

Блок инструкций – это совокупность инструкций на языке Python, возможно, включающая вложенные управляющие инструкции. Относительно управляющей инструкции блок инструкций сдвигается влево с использованием одинаковых отступов, задаваемых либо некоторым числом пробелов, либо одной или несколькими табуляциями. Величина отступа задаётся в настройках среды (Indentation Width). По умолчанию – это 4 пробела или 1 табуляция.

  1. Запустите интерактивную оболочку IDLE. Откройте окно текстового редактора. В первой строке напишите комментарий с текстом: « Тема 5 <ФИО>». Сохраните содержимое окна редактора в своем рабочем каталоге с именем файла протокола. В ходе выполнения дальнейшей работы все корректно выполненные инструкции и их результаты записывайте в этот текстовый файл.

  2. Изучите ветвление по условию – управляющая инструкция if. Общее правило написания:

if <условие>:

<отступы><Блок инструкций, выполняемый, если условие истинно>

[elif <условие2>:

<отступы><Блок инструкций2, выполняемый, если условие2 истинно>

]

[else:

< отступы><Блок инструкций3, выполняемый, если условие ложно>

]

Условие задается в виде логического выражения, которое может принимать значение True или False. Блок инструкций может располагаться на нескольких строках. Отступы во всех строках блока должны быть одинаковыми по отношению к первому символу управляющей инструкции. Если имеется вложенная управляющая инструкция, то она вводится с таким же отступом, а все строки ее блоков – отступают по отношению к ее первому символу. Признак конца блока – отсутствие отступов в очередной строке или ввод пустой строки.

Если в Блоке инструкций только одна инструкция, её можно записывать без отступов сразу за знаком «:».

Задайте некоторые числовые значения объектам porog, rashod1, rashod2. Выполните следующую операцию, определите значение dohod:

if rashod1>=porog:

dohod=12

elif rashod2==porog:

dohod=0

else:

dohod=-8
Выполните ещё одну операцию, определите значение dohod:

if rashod1>=3 and rashod2==4:

dohod=rashod1

if rashod2==porog or rashod1

dohod=porog
И ещё одна операция с множественным ветвлением линий потока:

if porog==3:

dohod=1

elif porog==4:

dohod=2

elif porog==5:

dohod=3

else:

dohod=0
Условные инструкции могут записываться также в одну строку в операторе присваивания по следующей схеме:

<Объект>=if <условие>: <значение 1> else <значение 2>

или ещё:

if <условие>: <инструкция1>[;<инструкция2>….]

Изучите примеры

dohod=2 if porog>=4 else 0
if porog>=5 : rashod1=6; rashod2=0


  1. Цикл по перечислению – управляющая инструкция for. Общее правило написания:

for <Объект-переменная цикла> in <объект>:

<отступы><Блок инструкций 1 – тело цикла>

[else:

< отступы ><Блок инструкций 2 – если в цикле не сработал break>

]

Здесь <объект> - любой определенный до начала цикла объект из классов строка, список, кортеж, множество, словарь. <Объект-переменная цикла> - объект, в качестве значений которого поочередно будут задаваться элементы объекта, которые могут быть объектами любого типа. <Блок инструкций 1 – тело цикла> - совокупность инструкций, которая может содержать или не содержать инструкцию break, вызывающую досрочное завершение цикла при некоторых условиях. Блок инструкций 1 обычно выполняется многократно по мере того, как объект-переменная цикла принимает значения из сложного объекта. Если в цикле имеется необязательная часть: else и Блок инструкций 2, то он будет выполняться перед завершением цикла только в том случае, если при выполнении цикла не было его прерывания по инструкции break.

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

Выполните следующие примеры, определите получаемые в них результаты.

3.1. Простой цикл.

temperatura=5

for i in range(3,18,3):

temperatura+=i


    1. Более сложный цикл

sps=[2,15,14,8]

for k in sps:

if len(sps)<=10:sps.append(sps[0])

else:break
Отобразите получившийся список sps.

Выполните чуть-чуть отличающуюся совокупность операций

sps=[2,15,14,8]

for k in sps[:]:

if len(sps)<=10:sps.append(sps[0])

else:break
Вновь отобразите полученный список и объясните его отличие от предыдущего.

    1. Пример: создание списка с 10 целыми случайными числами из диапазона от 1 до 100. При этом, если сумма чисел не превышает 500, эта сумма должна быть отображена на экране.

import random as rn

sps5=[]

for i in range(10):

sps5.append(rn.randint(1,100))

ss=sum(sps5)

if ss>500: break

else:

print(ss)
Внимание: здесь else относится не к if, а к for!

Попробуйте несколько раз выполнить эти операции. Объясните, почему вывод значения ss бывает не всегда.

    1. Пример с символьной строкой

stroka='Это – автоматизированная система'

stroka1=""

for ss in stroka:

stroka1+=" "+ss

    1. Запись цикла в строке. Пример: создание списка с синусоидальным сигналом.

import math

sps2=[math.sin(i*math.pi/5+2) for i in range(100)]

Подобно тому, как это делали в предыдущей теме, отобразите сигнал в виде графика.

  1. Цикл пока истинно условие – управляющая инструкция while. Общее правило написания:

while <Условие>:

<отступы><Блок инструкций 1 – тело цикла>

[else:

<отступы><Блок инструкций 2 – если в цикле не сработал break>]

Здесь <Условие> - некоторое логическое выражение. Если на очередном витке цикла оно принимает значение True (или 0), то выполняется Блок инструкций 1. При этом, если в этом блоке присутствует инструкция break и она будет выполнена, то цикл завершается, иначе – переходит к новому витку цикла. В блоке инструкций 1 могут быть изменены значения объектов, входящих в Условие и его значение тоже может измениться, Если же его значением останется True, то вновь выполняется Блок инструкций 1 и т.д. Если в цикле присутствует Блок инструкций 2, то он будет выполнен, если завершение цикла произошло не по инструкции break, а по значению False (или значению =0) Условия.

Выполните нижеследующие примеры и определите их результаты.

4.1. Цикл со счетчиком.

rashod=300

while rashod:

print("Расход=",rashod)

rashod-=50
Объясните, как здесь произошло завершение цикла.

    1. Пример с символьной строкой

import math

stroka='Переходной процесс в инерционном звене'

i=0

sps2=[]

while i

r=1-2/(1+math.exp(0.1*i))

sps2.append(r)

print('Значение в момент',i,"=",r)

i+=1
Представьте в виде графика сигнал на выходе инерционного звена из списка sps2.

    1. Определение, является ли число простым (делится только на самого себя или 1).

chislo=267 #Проверяемое число

kandidat =chislo // 2 # Для значений chislo > 1

while kandidat > 1:

if chislo%kandidat == 0: # Остаток от деления

print(chislo, ' имеет множитель ', kandidat)

break # else выполняться не будет

kandidat -= 1

else: # При завершении цикла без break

print(chislo, ' является простым!')

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

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

  1. Сохраните созданный текстовый файл протокола в своем рабочем каталоге. Закончите сеанс работы с IDLE.


Общее контрольное задание

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

  • Для заданной символьной строки с англоязычным текстом (его можно заимствовать из помощи) определите порядковый номер каждой буквы в английском алфавите.

  • Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).

  • Создайте список студентов вашей группы (3-4 фамилии) и список их средних баллов в летней сессии – в порядке перечисления студентов в первом списке. Создайте еще 2 аналогичных списка для тех же студентов, но в другом порядке, по зимней сессии. Напишите инструкции, позволяющие по указанной (запрошенной и введенной) фамилии студента вывести его средние баллы по двум сессиям.

Индивидуальные контрольные задания по теме

  1. Запишите свой e-mail – адрес в виде символьной строки. Напишите инструкции, разделяющие эту строку на две: строка1, содержащая все буквы из состава адреса, и строка 2, содержащая все остальные символы.

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

  3. Напишите инструкцию создания переменной с текущим моментом времени в секундах от начала эпохи. Определите, сколько раз можно рассчитать синус числа 12.3 в течение 10 секунд, начиная от текущего времени.

  4. Создайте список с 20 случайными, нормально распределенными (математическое ожидание равно 3400, стандартное отклонение равно 121) числами. Рассчитайте по нему среднее значение и число элементов, значение которых превышает это среднее.

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

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

  7. Создайте символьную строку с номером вашего мобильного телефона, записанного по шаблону (ХХХ)ХХХ-ХХ-ХХ. Напишите инструкции, которые создадут другую символьную строку по шаблону ХХХ-ХХХ-ХХХХ. Обеспечить вывод сообщения на экран: если первые 3 цифры 916 или 902, то «Оператор МТС», иначе: «Неизвестный оператор».

  8. Создайте кортеж с 20 случайными числами, равномерно распределенными в диапазоне от 20 до 98. Рассчитайте среднее значение по тем числам из множества, которые находятся в диапазоне значений от 40 до 70.

  9. Напишите инструкции создания списка с 20 случайными нормально распределенными (математическое ожидание равно -50, дисперсия равна 64) числами. Из этого списка перепишите в другой список только те элементы, которые не превышают среднего значения.

  10. Создайте список со 100 случайными целыми числами в интервале значений от -40 до +100. Рассчитайте сумму значений по тем числам, которые нацело делятся на 3.

  11. Создайте символьную строку с текстом: «великий и могучий юноша-вождь с мечом и щитом захватил и объединил эфесское царство». Напишите инструкции, позволяющие определить, каких букв русского алфавита нет в этой строке.

  12. Создайте список с 20 комплексными числами, у которых вещественная и мнимая части – случайные, равномерно распределенные числа в диапазоне от 0 до 1. Рассчитайте среднее значение их фазы.

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

  14. Запросите у пользователя ввод списка с двумя числовыми элементами. Обеспечьте проверку корректности ввода (что введено, действительно, два элемента) и проверку совпадения знаков у введенных чисел. Если проверка дала негативный результат, выдать сообщение и обеспечить повторение ввода. Если все хорошо, отобразить введенный список с заголовком.

  15. Запросите у пользователя и введите его фамилию в виде символьной строки. Если фамилия пользователя короче 15 символов, дополните ее справа соответствующим числом пробелов. Если она длиннее 15 символов, укоротите ее до первых 15 символов. Отобразите результат на экране с заголовком «Пользователь: ».

  16. Создайте кортеж с 2 элементами, которыми должны быть списки, каждый с 20 элементами - случайными, нормально распределенными числами с математическими ожиданиями, соответственно, -10 и 35 и одинаковыми стандартными отклонениями, равными 10. Рассчитайте по известной из статистики формуле оценку коэффициента корреляции между списками - элементами кортежа. Отобразите его в виде строки вида: «Корр.1-2 =ХХХ».

  17. Создайте список с 20 комплексными числами, у которых вещественная и мнимая части – случайные, нормально распределенные числа с математическим ожиданием 15 и стандартным отклонением 8. Рассчитайте среднее значение фаз по элементам множества и отобразите результат с округлением до 2-х знаков после точки в виде строки вида: «Среднее фаз = ХХХ.ХХ».

  18. Напишите инструкцию создания объекта-символьной строки, содержащей текст с не менее 20 кириллическими символами (придумайте его сами). Напишите инструкции разборки созданного объекта с созданием списка, элементами которого являются целые числа – порядковые номера соответствующих символов из созданной строки в русском алфавите. Если некоторого символа из строки нет в алфавите, на его месте в список включить число 77.

  19. Создайте строку с некоторым текстом на русском языке. Напишите инструкции разбора текста и формирования списка с элементами: номер символа в русском алфавите, если этот символ – согласная буква, тот же номер, взятый со знаком минус, если символ – гласная буква, и число 777, если это – любой другой символ.

  20. Создайте кортеж с целыми числами в диапазоне от -24 до 768 через 11. Напишите инструкцию создания списка с 40 случайно выбранными элементами из кортежа. Подсчитайте, сколько раз в этом списке последующий элемент оказался больше предыдущего. Отобразите результат в виде строки вида: «Повышение в списке: ХХХ раз».

  21. Создайте список с символьными строками - названиями не менее 5 овощей. Определите число символов в самом длинном названии (найдите его формальным образом). Все остальные названия выровняйте до такой же длины дополнением их справа соответствующим числом пробелов.

  22. Создайте кортеж с двумя элементами, каждый из которых является списком с 30 элементами. В первом списке элементы – это случайные, нормально распределенные числа с математическим ожиданием -15 и стандартным отклонением 9. Во втором списке элементы – это равномерно распределенные случайные числа из диапазона значений от -30 до 75. Рассчитайте корреляцию между этими списками, округлите до 3-х знаков после точки и отобразите ее в виде строки вида: «корреляция = Х.ХХХ».

  23. Создайте множество с 20 элементами – случайными, нормально распределенными числами с математическим ожиданием -5 и стандартным отклонением 8. Превратите множество в список, рассчитайте по нему среднее значение. Подсчитайте сколько элементов списка превышают это среднее значение и отобразите результат в виде символьной строки вида: «превышение в ХХ случаях».

  24. Создайте словарь с 30 элементами, состоящими из ключей – целых чисел от 0 до 29, и значений – случайных, равномерно распределенных чисел в интервале значений от -10 до +7. Рассчитайте сумму неотрицательных значений из словаря и отобразите её в виде строки: «Сумма неотрицательных значений словаря= XXX».

  25. Создайте список с 50 элементами – целыми случайными числами из диапазона значений от -1 до +1. Определите по этому списку, сколько раз последующее число было меньше предыдущего, сколько – больше и сколько – равным. Отобразите результат в виде строки: «Больше=ХХ, меньше=ХХ, равно=ХХ».

1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта