Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009




Скачать 318.41 Kb.
НазваниеПрактикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
страница1/5
Дата публикации21.03.2013
Размер318.41 Kb.
ТипЗадача
odtdocs.ru > Информатика > Задача
  1   2   3   4   5

  1. Практикум по алгоритмизации и программированию на Python

Иван Хахаев, 2009

Часть 2. Основные алгоритмы и их реализация на Python.


При разборе задач в этой части будем обращать внимание на постановку задачи (что именно нужно сделать) и собственно алгоритм, который будет описываться как блок-схемой, так и на «псевдоязыке» программирования (подобие «школьного алгоритмического языка»). И только после этого можно приступать к написанию программы на Python с учётом всех тех его особенностей и возможностей, которые были описаны в предыдущей части.
^

Линейные алгоритмы. Операции с числами и строками.


Линейный алгоритм — алгоритм, в котором вычисления выполняются строго последовательно. Типичная блок-схема линейного алгоритма показана на рис. 1.



Рисунок 1. Типичная схема линейного алгоритма



Далее рассмотрим типичные задачи с линейной структурой алгоритма.

Задача 1. Дано два числа a и b. Сделать так, чтобы их значения поменялись местами.

^ Постановка задачи: Имеются две переменные с какими-то определёнными значениями. Пусть значение a равно x, а значение b равно y. Требуется, чтобы значение a стало равно y, а значение b стало равно x.

^ Метод решения (общий): Использовать дополнительную переменную c, в которую временно записать начальное значение переменной a, присвоить переменной a значение переменной b, а потом переменной b присвоить значение переменной c.

Блок-схема такого алгоритма показана на рис. 2.



Рисунок 2. Блок-схема алгоритма обмена значениями



Текст программы на «псевдоязыке»:

ввод a,b

c=a

a=b

b=c

вывод a,b
Метод решения с использованием особенностей Python: использовать два кортежа. В первом будут определены переменные a и b и их значения, а второй сформируем из этих же переменных, но в обратном порядке.

Текст программы на Python:
# -*- coding: utf-8 -*-

#Перестановка местами двух чисел с использованием кортежа

#

(a,b)=input('Введите исходные значения (a, b) через запятую: ')

(a,b) = (b,a)

print 'Новое значение а: ',a,'\n','Новое значение b: ',b

Как описано в главе «Чтение из файла и запись в файл» Части 1, комбинация '\n' означает директиву на перевод строки для команды print.

Задача 2. Известны оклад (зарплата) и ставка процента подоходного налога. Определить размер подоходного налога и сумму, получаемую на руки.

^ Постановка задачи: Исходными данными являются величина оклада (переменная oklad, выражаемая числом) и ставка подоходного налога (переменная procent, выражаемая числом). Размер налога (переменная nalog) определяется как oklad*procent/100, а сумма, получаемая на руки (переменная summa) — как oklad-nalog .

Блок-схема алгоритма показана на рис. 3.



Рисунок 3. Блок-схема задачи о налоге



Текст программы на «псевдоязыке»:

ввод oklad,procent

nalog=oklad* procent/100

summa=oklad- nalog

вывод summa,nalog
Программа на Python:

# -*- coding: utf-8 -*-

#

oklad=input("Оклад: ")

procent=input("% налога: ")

nalog=oklad*procent/100.0

summa=oklad-nalog

print "Сумма на руки: ",summa

print "Налог: ",nalog
Если здесь все числа использовать как целые, то результат может получиться неверным. Поэтому одно из чисел нужно ввести как вещественное (с десятичной точкой). Именно поэтому деление делается не на 100, а на 100.0.

Задача 3. Используя данные таблицы

Блюдо

Цена

Борщ

35

Котлета

40

Каша

20

Чай

3

определить общую стоимость обеда в столовой. Определить, во сколько раз возрастёт стоимость обеда, если цена котлеты увеличится вдвое (источник В.А.Молодцов, Н.Б.Рыжикова. Информатика: тесты, задания, лучшие методики. Ростов н/Д: Феникс, 2009).

^ Постановка задачи (формализованная): Имеется четыре числа, которые требуется просуммировать (обозначим их переменными a, b, c и d соответственно). Сумму их значений обозначим S1. Требуется найти также величину S2=S1+b и определить отношение S2/S1 (обозначим это отношение переменной res). В результате нужно вывести значения переменных S1 и res.

Блок-схема показана на рис. 4



Рисунок 4. Блок-схема задачи об обеде



Текст программы на «псевдоязыке»:

ввод a,b,c,d

S1=a,b,c,d

S2=S1+b

res=S2/S1

вывод S1,res
В программе на Python разумно будет использовать кортеж :

t=(a,b,c,d)=input('Введите значения через запятую: ')

S1=sum(t)

S2=S1+b

res=S2/S1

print 'Начальная стоимость:',S1,'\n','Увеличение, раз:',res
И снова при вводе чисел хотя бы одно из них нужно ввести как вещественное.

Задача 4. Преобразовать дату в «компьютерном» представлении (системную дату) в «российский» формат, т.е. день/месяц/год (например, 17/05/2009).

^ Постановка задачи: Системная дата имеет вид 2009-06-15. Нужно преобразовать это значение в строку, строку разделить на компоненты (символ-разделитель — дефис), потом из этих компонентов сконструировать нужную строку.

Сразу перейдём к программе на Python. Функциями работы с датами и временем в Python «заведует» библиотека (модуль) datetime. а конкретно для работы с датами используется объект date и его методы.

Воспользуемся знанием методов строк и списков.

# -*- coding: utf-8 -*-

#

# Подключаем нужный программный модуль

from datetime import date

# Получаем текущую дату

d1=date.today()

# Преобразуем результат в строку

ds=str(d1)

print "Системная дата ",ds

# Используем методы строки и списка

lst=ds.split('-')

lst.reverse()

#

rusdate="/".join(lst)

print "Российский стандарт ",rusdate
Комментарии в тексте программы помогают понять происходящее.
^

Задачи для самостоятельного решения.


  1. Нарисуйте блок-схему к задаче 4 этой главы.

  2. Даны действительные числа А,В,С. Найти максимальное и минимальное из этих чисел.

  3. Известны длины трёх сторон треугольника. Вычислить периметр треугольника и площадь по формуле Герона (указание: использовать библиотеку math и функцию sqrt()).

  4. Задан вес в граммах. Определить вес в тоннах и килограммах.

  5. Известен объем информации в байтах. Перевести в Кбайты, Мбайты.

  6. Определить значение функции Z=1/(XY) при X и Y не равных 0.


  1   2   3   4   5

Добавить документ в свой блог или на сайт

Похожие:

Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
«псевдоязыке» программирования (подобие «школьного алгоритмического языка»). И только после этого можно приступать к написанию программы...

Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
В этой части мы научимся пользоваться самыми простыми графическими возможностями Python — управлением исполнителем «черепашка» для...

Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
В этой части мы научимся пользоваться самыми простыми графическими возможностями Python — управлением исполнителем «черепашка» для...

Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
В этой части мы научимся пользоваться самыми простыми графическими возможностями Python — управлением исполнителем «черепашка» для...

Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
Эта глава полезна для общего развития, её можно прочитать, но совершенно необязательно сразу пытаться понять. Лучше вернуться к ней...

Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
Эта глава полезна для общего развития, её можно прочитать, но совершенно необязательно сразу пытаться понять. Лучше вернуться к ней...

Практикум по алгоритмизации и программированию на Python Иван Хахаев, 2009
Эта глава полезна для общего развития, её можно прочитать, но совершенно необязательно сразу пытаться понять. Лучше вернуться к ней...

Практикум по алгоритмизации и программированию на Python
А. С. Есипов. Информатика. Учебник по базовому курсу общеобразовательных учебных заведений. Изд. 3-е. Спб: Наука и Техника, 2003...

Справочник по языку Python 1 Исходный текст
Расширение и Включение интерпретатора Python представляет высокоуровневое описание того, как создать модуль расширения Python, а...

Введение в Python и Eric
Задачи по обработке одномерных и двумерных массивов (матриц) являются непременным элементом любого начального курса алгоритмизации,...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница