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

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


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

Тема 3. Операции с объектами


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

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

Операции с объектами позволяют выполнять различные манипуляции с объектами, например, создавать, изменять, удалять объекты разных типов.

  1. Преобразование простых базовых типов объектов.

Выполните следующие инструкции и после каждой из них проверьте получившееся значение объекта и его тип:

    1. Преобразование в логический тип с помощью функции bool(<Объект>).

Примеры использования:

logiz1=bool(56)

logiz2=bool(0)

logiz3=bool("Beta")

logiz4=bool("")

    1. Преобразование в целое десятичное число объекта с заданной системой счисления осуществляется с помощью функции int(<Объект>[,<Система счисления, в которой определен объект>]). По умолчанию система счисления принимается десятичной.

Примеры использования:

tt1=int(198.6) #Отбрасывается дробная часть

tt2=int("-76") #Число – в строке символов, система по умолчанию - десятичная

tt3=int("B",16)

tt4=int("71",8)

tt5=int("98.76") #Будет диагностика ошибки – объясните почему?

    1. Преобразование целых чисел или строк символов в вещественное число – с помощью функции float(<Объект>).

Примеры преобразований:

flt1=float(789)

flt2=float(-6.78e2)

flt3=float("Infinity")

flt4=float("-inf")

    1. Преобразование десятичных чисел в другие системы счисления:

hh=123

dv1=bin(hh) #Преобразование в строку с двоичным представлением

vos1=oct(hh) # Преобразование в строку с восьмеричным представлением

shs1=hex(hh) # Преобразование в строку с шестнадцатеричным представлением

Для проверки выполните обратные преобразования объектов dv1, vos1, shs1 по образцу

int(dv1,2)

  1. Изучите преобразования более сложных базовых типов объектов.

    1. Преобразование в строку символов с помощью функции str(<Объект>).

Примеры использования:

strk1=str(23.6)

strk2=str(logiz3)

strk3=str(["A","B","C"]) #Преобразуем список

strk4=str(("A","B","C")) #Преобразуем кортеж

strk5=str({"A":1,"B":2,"C":9}) #Преобразуем словарь

    1. Преобразование элементов объекта в список с помощью функции list(<Объект>).

Примеры преобразований:

spis1=list("Строка символов") #Заданная строка разделяется на символы

spis2=list((124,236,-15,908)) #Кортеж превращается в список

spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список

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

    1. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>).

Примеры преобразований

kort7=tuple('Строка символов') #Преобразование строки символов в кортеж

kort8=tuple(spis2) #Преобразование списка в кортеж

kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж

  1. Удаление объектов.

Очистить оперативную память от ранее созданных объектов можно с помощью инструкции del.

Пример:

del strk5, kort8

Формально проверьте, остались ли после этой операции указанные объекты в оперативной памяти.

Создайте строку со своей фамилией и инициалами, преобразуйте её в список, затем список – в кортеж и, наконец, кортеж – в строку. Будет ли совпадать конечная строка с исходной? Попробуйте выполнить последнюю операцию с помощью метода join.

  1. Арифметические операции.

    1. Сложение и вычитание (+ и -)

12+7+90 # Сложение целых чисел

5.689e-1 - 0.456 #Вычитание вещественных чисел

23.6+54 #Сложение вещественного и целого чисел

14-56.7+89 # Сложение и вычитание целых и вещественных чисел

    1. Умножение (*)

-6.7*12 #Умножение вещественного числа на целое число

    1. Деление (/). Результатом деления всегда будет вещественное число!

-234.5/6 #Деление вещественного числа на целое

a=178/45 #Деление двух целых чисел – проверьте тип объекта a!

    1. Деление с округлением вниз (//). Здесь результат может быть целым или вещественным. В нижеследующих операциях определите тип результата.

b=178//45 #Деление двух целых чисел

c=-24.6//12.1 #Деление двух вещественных чисел

Самостоятельно попробуйте смешанные комбинации типов чисел.

    1. Получение остатка от деления (%).

148%33 #Остаток от деления двух целых чисел

12.6%3.8 #Остаток от деления двух вещественных чисел

Самостоятельно попробуйте смешанные комбинации типов чисел.

    1. Возведение в степень (**).

14**3 #Целое число возводится в целую степень

e=2.7**3.6 #Вещественное число возводится в вещественную степень

Самостоятельно попробуйте смешанные комбинации типов чисел.

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

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

  1. Операции с двоичными представлениями целых чисел.

    1. Двоичная инверсия (). Значение каждого бита в представлении числа заменяется на противоположное значение (0 на 1, 1 на 0).

dv1=9

dv2=dv1

    1. Двоичное «И» (&) – побитовое совпадение двоичных представлений чисел

7&9 # 111 и 1001 = 0001

7&8 # 111 и 1000 = 0000

    1. Двоичное «ИЛИ» (|) – побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0

7|9 # 111 или 1001 = 1111

7|8 # 111 или 1000 = 1111

14|5 # 1110 или 0101 = 1111

    1. Двоичное «исключающее ИЛИ»(^) - побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1.

14^5 # 1110 исключающее или 0101 = 1011

Какое получилось значение в десятичном представлении?

    1. Сдвиг двоичного представления на заданное число разрядов влево (<<) или вправо (>>) с дополнением нулями, соответственно справа или слева.

h=14 #Двоичное представление = 1110

g=h<<2 # Новое двоичное представление = 111000

g1=h>>1 # Новое двоичное представление = 0111

g2=h>>2 # Новое двоичное представление = 0011

При сдвиге отрицательного числа вправо разряды слева заполняются единицами.

h=-17

hn=h>>2

Отобразите и объясните полученное значение.

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

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

    1. Объединение последовательностей (конкатенация)(+)

'Система '+'регулирования' #Соединение двух строк символов

['abc','de','fg']+['hi','jkl'] # Объединение двух списков

('abc','de','fg')+('hi','jkl') # Объединение двух кортежей

    1. Повторение (*)

'ля-'*5 #Повторение строки 5 раз

['ку','-']*3 #Повторение списка 3 раза

('кис','-')*4 #Повторение кортежа 4 раза

Пример. Создание списка со 100 отсчетами сигнала-ступеньки:

signal1=[0]*3+[1]*99

Создание кортежа с отсчетами сигнала – импульса:

signal2=(0,)*3+(1,)*5+(0,)*7

    1. Проверка наличия заданного элемента в последовательности (in)

stroka='Система автоматического управления'

'автомат' in stroka #Наличие подстроки в строке

'ку' in ['ку','-']*3 #Наличие контекста в списке

'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже


    1. Подстановка значений в строку с помощью оператора «%»

Пример 1.

stroka='Температура = %g %s %g'

stroka % (16,' меньше ',25)

Пример 2. Вставка с использованием данных из словаря.

stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'

stroka % {'zn1':16,'sravn':' меньше ','zn2':25}

  1. Оператор присваивания

    1. Обычное присваивание значения переменной (=)

zz=-12

    1. Увеличение значения переменной на заданную величину (+=) или уменьшение (-=)

zz+=5 # Значение zz увеличивается на 5

zz-=3 # Значение уменьшается на 3

Для последовательностей операция (+=) означает конкатенацию текущего значения объекта с заданным дополнением.

stroka='Система'

stroka+=' регулирования'

    1. Умножение текущего значения переменной на заданную величину (*=) или деление (/=)

zz/=2

zz*=5

Для строк операция (*=) означает повторение текущего значения объекта заданное число раз. Попробуйте эту операцию самостоятельно.

    1. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=) изучите самостоятельно.

    2. Множественное присваивание

w=v=10 # Переменным присваивается одно и то же значение

n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа

Самостоятельно проверьте, можно ли вместо кортежа справа использовать строку, список, словарь, множество?

  1. Логические операции – при создании логических выражений, дающих в результате вычисления значения True или False.

    1. Операции сравнение: равенство (==), не равно (!=), меньше (<), больше (>), меньше или равно (<=), больше или равно (>=) – придумайте примеры этих операций. Сравните ранее созданные переменные w и v.

    2. Проверка наличия заданного элемента в последовательности или во множестве, а также проверка наличия ключа в словаре (in).

Операции со множеством

mnoz1={'pen','book','pen','iPhone','table','book'}

'book' in mnoz1

'cap' in mnoz1

Операции со словарем

dic1={'Saratov':145, 'Orel':56, 'Vologda':45}

'Vologda' in dic1

'Pskov' in dic1

56 in dic1.values()

Ещё пример работы со словарем:

dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}

'UII' in dct1['Depart']

dct1['Depart'][1] == 'MM'


    1. Создание больших логических выражений с использованием соединительных слов: логическое «И» (and), логическое «ИЛИ» (or), логическое «НЕ» (not).

a=17

b=-6

(a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)

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

    1. Проверка ссылок переменных на один и тот же объект (is).

w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти

w is v

w1=['A','B']

v1=['A','B']

Здесь значения в операциях присваивания справа – одинаковые. Теперь проверьте:

w1 is v1

Объясните результат.

  1. Операции с объектами, выполняемые с помощью методов.

Полный список всех атрибутов любого объекта можно получить с использованием функции dir, например,

stroka='Микропроцессорная система управления'

dir(stroka)

    1. Методы для работы со строками. Рассмотрите несколько примеров таких методов:

stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1

stroka.count("с") #Подсчет числа вхождений строки “с” в stroka

stroka.replace(' у',' автоматического у')

spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель

stroka.upper() #Возвращает строку со всеми заглавными буквами

stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка

stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева

stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
Изучите метод format. Форматирование строки осуществляется в случае, если необходимо в символьную строку подставить значения некоторых объектов, например, полученных в ходе выполнения программы. Часто такую строку затем используют для вывода результатов работы программы на экран или в файл протокола.

Например, создайте строку:

strk1='Момент времени {}, значение = {}'

Вместо фигурных скобок вставьте значения:

strk1.format(1,89.7)

Отобразите полученную строку.

Теперь создайте строку

strk2='Момент времени {1}, значение = {0}:{2}'

Здесь цифры в фигурных скобках – это индексы, определяющие порядок использования аргументов формата. Поэтому такой способ называют основанным на позиционных аргументах. Например,

strk2.format(36.7,2,'норма!')

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

Теперь задайте следующую строку:

strk3='Момент времени {num}, значение = {znch}'

Здесь в скобках указаны имена аргументов – вставок. Поэтому такой способ основан на именованных аргументах.

С помощью метода format вставьте в строку значения:

strk3.format(znch=89.7,num=2)

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

    1. Методы для работы со списками.

Создайте произвольный список spsk, не менее чем с 5 элементами. Отобразите его атрибуты.

Последовательно обратитесь к методам этого списка с отображением каждый раз полученного списка:

spsk.pop(2)

spsk.append('c')

spsk.insert(2,'a')

spsk.count('a')

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

    1. Самостоятельно создайте кортеж и изучите применение его методов.

    2. Также самостоятельно изучите методы словарей и множеств.

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


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

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

  • Преобразовать восьмеричное значение 45 в целое число.

  • Создать объект-словарь D со значениями {"усиление":23, "запаздывание":12, "постоянная времени":78} и затем осуществить его преобразование в два списка: ключей и значений, а затем – эти два списка преобразовать в один кортеж. Чем отличается кортеж от списка?

  • Напишите и выполните единое выражение, осуществляющее деление числа 1768 на 24.8 с округлением вниз, с определением после этого остатка от деления получившегося значения на 3 и затем возведения результата в степень 2.4.

  • Напишите и выполните единое выражение, последовательно осуществляющее следующие операции: двоичное И для чисел 13 и 27, инверсия полученного значения, двоичное исключающее ИЛИ для полученного значения и числа 14, сдвиг полученного значения на два разряда влево.

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

  • Определить список методов, доступных у ранее созданного словаря D. Поочередно использовать его методы keys и values, определить, что можно получить с применением этих методов.

  • Создать объект - символьную строку с текстом данного предложения. Из символьной строки создать список, элементами которого будут отдельные слова из созданной строки. Заменить в списке элемент «-» на «,». Удалить из списка элемент со значением «данного». Отобразить получившийся список.


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

  1. Напишите инструкцию преобразования числа C3F9 в десятичное число и после этого – определения остатка от деления его нацело на 14.

  2. Определить значение, получаемое в результате операции «исключающее ИЛИ», примененной к числам 234 и 178. Для проверки вывести двоичные представления этих чисел.

  3. Создайте словарь с ключами: МатАн, Физика, СМИИ, ИТ и со значениями, соответственно: 4, 5, 4, 3. Создайте список со значениями ключей словаря. Замените значение для ключа ИТ на 4.

  4. Создайте кортеж с элементами: 'kom',14,[67,-5],{1,2,3}. Напишите инструкцию определения числа элементов в кортеже. Напишите инструкцию деления первого по счету значения в третьем по порядку элементе кортежа нацело на число 15.

  5. Создайте строку для вывода с использованием оператора подстановки значения по шаблону: «Значение отклика объекта = 23.45». Примените эту строку для вывода значения 75.9.

  6. Создайте символьную строку из двух подстрок: ‘kul’ и ‘kur’. Создайте новую символьную строку, состоящую из ранее созданной строки, повторенной 5 раз. Определите, сколько раз в эту строку входит подстрока ‘kurkul’.

  7. Создайте множество, состоящее из названий 6 фруктов. Проверьте, входит ли в него яблоко. Если входит – удалите его из множества, а если нет – добавьте его туда.

  8. Создайте кортеж с элементами: 'kom',14,[67,-5],{1,2,3}. Напишите инструкцию проверки наличия значения 2 в четвертом по порядку элементе кортежа.

  9. Создайте словарь с ключами: ‘aaa’,’qqq’,’uuu’ и соответствующими им значениями: 67, -45, 34. С помощью спецификации формата создайте строку по шаблону: «Значение элемента словаря = 34».

  10. Создайте кортеж с элементами: 11,-3,8, 23,11, 2, 8. Превратите его в список. Вставьте в список на 4-е место значение 2. Превратите список во множество. Подсчитайте число элементов во множестве.

  11. Создайте словарь с ключами: ‘aaa’,’qqq’,’uuu’ и соответствующими им значениями: 67, -45, 34. Определите сумму значений элементов. Создайте список со значениями ключей.

  12. Создайте множество с элементами: 4,-2,7,5,1. Добавьте к этому множеству элемент:11. Превратите множество в список. Определите число элементов в списке.

  13. Создайте строку с текстом: « Контрольный вопрос по теме 1.2 ». Напишите инструкцию удаления начальных и конечных пробелов из этой строки. Создайте список с элементами – отдельными словами из этой строки. Подсчитайте число элементов в получившемся списке.

  14. Создайте список с элементами-словами: «Контрольный», «вопрос», «по», «теме», «1.3». Превратите список в строку, в которой слова разделены одним пробелом. Определите, сколько раз в этой строке встречается буква «о».

  15. Создайте кортеж с двумя элементами: 'А','Б'. Создайте символьную строку для вывода элементов кортежа по шаблону «Сказав <место для вывода первого элемента>, скажи и <место для вывода второго элемента>». С помощью операции подстановки выведите строку с подставленными в нее элементами кортежа.

  16. Напишите инструкцию преобразования числа 0o563 в шестнадцатеричное представление. Одной инструкцией создайте кортеж с пятью такими одинаковыми числами. Преобразуйте исходное число в целое десятичное число. Используя формат, выведите это число в виде строки: «Результат = ХХХ».

  17. Напишите инструкцию преобразования числа 0o563 в десятичное представление. Напишите инструкцию подсчета суммы цифр десятичного представления этого числа. Отобразите результат в виде: «Число = ХХХ, сумма цифр=ХХ».

  18. Создайте объект-символьную строку с текстом

«%Символьная%строка%с%текстом%для%разборки».

Напишите инструкцию, заменяющую знаки процента на пробелы. Обеспечьте подсчет числа слов в тексте. С использованием формата выведите результат в виде: «В строке ХХ слов».

  1. Напишите инструкцию создания объекта-словаря с двумя элементами с ключами: «ФИО» и «Премия», значениями – списками с 3 элементами (придумать самостоятельно). Напишите инструкцию расчета средней премии для указанных сотрудников. Обеспечить вывод результата в виде «Средняя премия = ХХХ» (выводимый результат округлить до двух знаков после запятой).

  2. Создайте множество из 10 чисел. Преобразуйте это множество в список. Рассчитайте разность наибольшего и наименьшего чисел в списке (размах), а также среднее значение чисел в списке. Отобразите результаты на экране в виде строки «Размах=ХХ, среднее значение = ХХ».

  3. Создайте два простых объекта со значениями 267.9 и 123.4. Разделите каждый объект нацело на 6. Отобразите двоичные представления полученных результатов в виде строки вида «Первое число = ХbХХХХ, второе число = ХbХХХХ». Выполните побитовое сравнение результатов деления и отобразите полученное число в двоичном виде.

  4. Создайте символьную строку с текстом данного задания. Напишите инструкцию создания списка, в котором элементами являются слова из строки. Обеспечьте подсчет числа полученных слов. Напишите инструкцию, позволяющую рассчитать число вхождений подстроки «инстр» в строке. С помощью функции print выведите результат в виде: «Число вхождений подстроки = ХХ».

  5. Создайте символьную строку с текстом данного задания. Напишите инструкцию определения индекса первого вхождения в эту строку подстроки «Раздел». Разделите исходную строку на две: первая строка от начала до найденного индекса, вторая – остаток строки. Подсчитайте числа символов в получившихся строках. Выведите результаты на экран в виде: «В первой строке ХХ символов, во второй – ХХ символов».

  6. Напишите инструкцию создания списка с 5 произвольно выбранными целочисленными элементами. Напишите инструкцию, позволяющую заменить в списке третье число на 122. Напишите инструкции, позволяющие получить новый список с элементами из первого списка, упорядоченными в порядке убывания значений. Подсчитайте сумму элементов списка и отобразите на экране в виде «Сумма элементов=ХХХ».

  7. Создайте множество с 7 произвольными целочисленными элементами. Напишите инструкцию преобразования множества в список. Упорядочьте элементы списка по возрастанию значений элементов. По всем элементам списка, кроме первого и последнего, рассчитайте среднее значение. С использованием формата отобразите результат на экране в виде строки вида: «Среднее значение = ХХХ» с округлением результата до целого значения.

  8. Создайте список с 10 элементами – числами: 12, 17, 22,… . Напишите инструкцию преобразования этого списка с символьную строку. Уберите из строки символы – открывающую и закрывающую квадратные скобки. Формально подсчитайте, сколько раз в строке встречается цифра 2. Отобразите результат на экране в виде: «Цифра 2 встречается ХХ раз». По ранее созданному списку рассчитайте сумму четных элементов и отобразите ее в виде «Сумма = ХХХ».



1   2   3   4   5   6   7   8   9   10   11


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