Основы алгоритмизации и программирования. Часть 1. Задачи и упражнения. Практикум. Учебно-методическое пособие
.pdfМинистерство образования и науки российской Федерации
уральский Федеральный университет иМени первого президента россии б. н. ельцина
а. Ю. коврижных е. а. конончук г. е. лузина
основы алгоритМизации и програММирования
практикум в двух частях
Часть 1. задачи и упражнения
рекомендовано методическим советом урФу в качестве учебно-методического пособия для студентов,
обучающихся по программам бакалавриата и специалитета по направлениям подготовки 04.03.01 «Химия», 04.05.01 «Фундаментальная и прикладная химия»
екатеринбург издательство уральского университета
2016
удк 004.4(075.5) к568
рецензенты:
и. н. кандоба, кандидат физико-математических наук, старший научный сотрудник отдела прикладных проблем управления (институт математики и механики им. н. н. красовского уро ран);
г. б. захарова, кандидат технических наук, доцент, заведующий кафедрой прикладной информатики
(уральский государственный архитектурно-художественный университет)
Коврижных, А. Ю.
к568 основы алгоритмизации и программирования : практикум : [учеб.-метод. пособие]. в 2 ч. Ч. 1. задачи и упражнения / а. Ю. коврижных, е. а. конончук, г. е. лузина ; М-во образования и науки рос. Федерации, урал. федер. ун-т. — екатеринбург : изд-во урал. ун-та, 2016. — 52 с.
ISBN 978-5-7996-1888-9
ISBN 978-5-7996-1886-5 (часть 1)
в первой части практикума помещены задания по программированию линейных, разветвляющихся, циклических процессов, алгоритмов с использованием массивов и рассматриваются примеры выполнения этих заданий на языках паскаль и с#.
излагаемый материал рекомендуется использовать в ходе практических и лабораторных занятий, при выполнении домашних работ и при подготовке к зачету.
адресовано студентам, обучающимся по направлениям подготовки «Химия» и «Фундаментальная и прикладная химия».
удк 004.4(075.5)
ISBN 978-5-7996-1888-9 |
|
ISBN 978-5-7996-1886-5 (часть 1) |
© уральский федеральный университет, 2016 |
От АвтОрОв
цель данного практикума – оказать помощь студентам в организации самостоятельной работы при освоении разделов образовательной программы по информатике, посвященных основам алгоритмизации и программирования, и дать преподавателю необходимый минимум материала для проведения лабораторных
ипрактических занятий.
впроцессе многолетнего преподавания информатики у авторов сложилось убеждение, что для закрепления знаний, полученных на лекциях, студентам необходимо подробно разбирать типовые задачи в рамках практических занятий и выполнять индивидуальные задания по каждой теме.
несмотря на то, что сегодня существует большое количество литературы, содержащей задачи по алгоритмизации и программированию, авторы пособия, основываясь на собственном опыте проведения занятий по курсу «информатика» для студентов, приобретающих специальности естественно-научных направлений, сформировали перечень задач и упражнений, а также набор алгоритмов для расчетно-графических работ, которые необходимы именно этой целевой группе. Часть приведенных задач и примеров заимствована из хорошо зарекомендовавших себя источников (задачи по программированию / с. а. абрамов [и др.]. М. : наука, 1998; пильщиков в. н. сборник упражнений по языку паскаль : учеб. пособие для вузов. М. : наука, 1989).
практикум состоит из двух частей.
первая часть содержит задачи по основным темам курса «информатика», читаемому студентам направлений подготовки «Химия» и «Фундаментальная и прикладная химия», – по программированию линейных, разветвляющихся, циклических процессов, алгоритмов с использованием массивов. каждая тема начинается с разбора типовой задачи, примера построения алго-
3
ритма и примера программы. задания не ориентированы на какойлибо конкретный язык программирования. для типовых задач приведены тексты программ на языках паскаль и с#. Материал первой части рекомендуется использовать в ходе практических и лабораторных занятий, при выполнении домашних работ и при подготовке к зачету.
вторая часть практикума содержит расчетно-графические работы по рассматриваемым темам, необходимые теоретические сведения и примеры выполнения типового задания и ориентирована на самостоятельную подготовку студентов.
для более глубокого изучения дисциплины полезно обращаться к приведенной в обеих частях практикума рекомендуемой литературе.
введение
современное изучение химии практически всегда связано с применением или разработкой алгоритмов, для реализации которых необходимы программные инструментальные средства. знание современных информационных технологий и умение пользоваться ими являются обязательными требованиями к квалифицированному специалисту-химику.
при изучении любого языка программирования в первую очередь следует освоить его базовые конструкции, затрагивающие реализацию линейных алгоритмов, программирование разветвлений и циклов. с одной стороны, для этого нужны минимальные знания из курса математики в объеме программы средней школы, а с другой – необходимо усвоение основных простых и составных типов данных изучаемого языка программирования.
на практических занятиях обсуждаются основные этапы решения на компьютере любой задачи. Этими этапами являются:
1)постановка задачи;
2)математическая формализация;
3)построение алгоритма;
4)составление программы на языке программирования;
5)отладка и тестирование программы.
на этапе постановки задачи должно быть четко определено, что дано и что требуется найти. студенту следует обратить внимание на следующие аспекты: понятно ли ему условие задачи, какие исходные данные известны и что нужно определить.
на втором этапе дается математическое описание задачи. строится математическая модель – система математических соотношений (формул, уравнений, неравенств и т. д.), связывающих результаты с исходными данными.
на третьем этапе осуществляется построение алгоритма – четкой инструкции, задающей необходимую последовательность
5
действий, которая определяет процесс преобразования исходных данных в результаты решения задачи. алгоритм чаще всего представляется в форме блок-схемы ввиду ее наглядности и универсальности.
первые три этапа реализуются без использования компьютера. дальше следует четвертый этап, собственно программирование – на определенном языке в определенной системе. программирование включает в себя следующие составляющие: выбор языка; уточнение способов организации данных; запись алгоритма на выбранном языке программирования.
в нашем случае был выбран язык паскаль, который считается одним из лучших программных продуктов при изучении основ программирования. для студентов, изучавших программирование ранее, предложены варианты решений типовых задач на языке с#.
далее следует пятый этап – отладка и тестирование созданной программы. при отладке испытывается работа программы и исправляются обнаруженные при этом ошибки. выявить ошибки, связанные с нарушением правил записи программы на языке программирования (синтаксические и семантические ошибки), помогает система программирования. пользователь получает сообщение об ошибке, исправляет ее и снова предпринимает попытку высполнить программу.
проверка на компьютере правильности алгоритма производится с помощью тестов. тест – это конкретный вариант значений исходных данных, для которого известен ожидаемый результат. прохождение теста – необходимое условие подтверждения правильности программы. на тестах проверяется безошибочность реализации программой запланированного сценария.
только после удачного тестирования и проверки правильности работы программы последнюю можно сдавать в эксплуатацию (в нашем случае – на проверку преподавателю).
1. ПрОгрАммирОвАние линейных АлгОритмОв
линейный алгоритм — это описание действий, которые выполняются однократно в заданном порядке.
Пример типовой задачи
для заданных a и b вычислить:
z = x3 + y3 +10,
y =sin(b)−cos(a + x),
x =
a +1.
Блок-схема алгоритма
приведена на рис. 1.
Начало a, b
x = 

a +1
y =sin (b) −cos(a + x)
z = x3 + y3 +10
x, y, z
Конец
рис. 1. блок-схема линейного алгоритма
7
текст программы на языке Паскаль
program prim1;
var a, b, x, y, z: real; begin
write('введите a='); readln(a); write('введите b='); readln(b);
x := sqrt(abs(a + 1));
y := sin(b) – cos(a + x);
z := sqr(x)*x + sqr(y)*y + 10; writeln('x=', x:6:2); writeln('y=', y:6:2); writeln('z=', z:6:2)
end.
текст программы на языке С#
using System;
namespace ConsoleApplication18
{
class Program
{
static void Main(string[] args)
{
Console.Write("введите a=");
double a = double.Parse(Console.ReadLine()); Console.Write("введите b=");
double b = double.Parse(Console.ReadLine()); double x = Math.Sqrt(Math.Abs(a + 1)); double y = Math.Sin(b) − Math.Cos(a + x);
double z = Math.Pow(x,3) + Math.Pow(y,3) + 10; Console.WriteLine("x=" + x.ToString("E")); Console.WriteLine("y=" + y.ToString("E")); Console.WriteLine("z=" + z.ToString("E")); Console.ReadLine();
}
}
}
8
Задачи
1.известны первый и пятый члены арифметической прогрессии. найти величину члена прогрессии с номером N и сумму N членов.
2.известны члены арифметической прогрессии с номерами N
иM. найти сумму членов с номерами от M до N (считать M < N).
3.заданы первый член и знаменатель геометрической прогрессии. найти сумму членов с номерами от заданного номера K до заданного номера P (считать K < P).
4.повесть рэя брэдбери называется «451 градус по Фаренгейту». напечатать название повести в градусной мере по цельсию. Формула перевода:
tC = 95 (tF −32).
5.в классе N учеников. после контрольной работы было получено: А – пятерок, В – четверок, С – двоек, остальные тройки. найти процент троек.
6.для заданных значений вычислить результат:
1) 1003 −922 +k; |
2) |
|
1−cos(x) |
; |
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ln (x2 ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
4) |
|
sin2 (x)+cos2 |
( |
y3 |
) |
; |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
3) |
−5/4x +ex/2 ; |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
5) |
|
|
|
|
|
|
|
|
|
|
|
6) |
e−1/2(x −α); |
|
|
|
|
|||||||
|
x + x2 +4y2 ; |
|
|
|
|
|||||||||||||||||||
|
ctg(x)−sin ( |
|
|
); |
8) |
|
0,25(a −b) |
|
. |
|
|
|||||||||||||
|
|
|
1 |
|
|
|
|
b |
|
|
|
|
|
|||||||||||
7) |
x2 +1 |
− |
|
|
|
|
|
|
|
|||||||||||||||
|
8 |
|
n+3 |
|
|
lg(b) |
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
+ |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c −d |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
9
7. заданы x, y, z. вычислить a, b, если:
1) a = |
|
|
|
x −1 |
− 3 |
y |
, |
|
|
|
|
|
|
|
|
|
|
|
−(x+3) |
|
; |
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
1+ |
|
x |
|
|
+ |
y |
|
|
|
|
|
b = x arctg (z)+e |
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
2 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
2) |
a = |
|
|
|
|
|
|
3+ey−1 |
|
|
, |
b =1+ |
|
y − x |
|
+ |
(y − x)2 |
+ |
|
y − x |
|
3 |
; |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
1+ x2 |
|
y −tg(z) |
|
|
|
2 |
|
|
3 |
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
2cos |
|
|
− |
π |
|
|
|
|
|
|
z |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
x |
6 |
|
|
|
b =1+ |
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
||||||||||
3) |
a = |
|
|
|
|
|
|
|
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z |
2 |
|
|
|
|
|
|
|
|
|
|
||||||||||||
1 |
+sin2 |
(y) |
|
|
|
|
3+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
8. для x |
= |
|
– |
|
|
вычислить |
значение |
|
многочлена |
|
по |
схеме |
|||||||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||||||||
горнера:
z=5x3 +70x2 +14x =[(5x +70)x +14]x.
9.заданы три числа a, b, c. вычислить их среднее арифметическое:
p = a +3b +c
и среднее геометрическое:
q= 3
abc.
10.заданы R, r, h – измерения усеченного конуса. вычислить площадь поверхности и объем усеченного конуса по формулам:
S = π(R +r)l +πR2 +πr2 ;
V = 13 π(R2 +r2 + Rr)h;
l = 
h2 +(R −r)2 .
10
