1685 русский решу егэ

Заказать написание работы программирование и основы алгоритмизации лабораторный практикум направление подготовки: 27.03.04 220400.62 управление в технических системах квалификация степень

Заказать ✍️ написание работы

Программирование и основы алгоритмизации

Лабораторный практикум

Направление подготовки: 27.03.04 (220400.62) «Управление в технических системах»

Квалификация (степень) выпускника — бакалавр

Формы обучения — очная, очно-заочная, заочная

Коломна, 2015

Коломенский институт (филиал)

Федерального государственного бюджетного образовательного учреждения

Высшего профессионального образования

«Московский государственный машиностроительный университет (МАМИ)»

«УТВЕРЖДАЮ»

Директор КИ (ф) МАМИ

____________________

«____»________________2015 г.

Лабораторный практикум

Программирование и основы алгоритмизации

Направление подготовки «Информатика и вычислительная техника»

Профиль подготовкиУправление и информатика в технических системах

Квалификация (степень) выпускникабакалавр

(бакалавр, магистр, дипломированный специалист)

Форма обученияочная , очно-заочная, заочная

Г. Коломна, 2015 г.

УДК 004.4
ББК 32.97
П 78
 
Печатается в
соответствии с решением
учебно-методического совета Коломенского института (филиала) Московского государственного университета машиностроения от 02.09.2015г.№39-10/УМС
 

Программирование и основы алгоритмизации: Лабораторный практикум для студентов очной и очно-заочной, заочной форм обучения направления подготовки бакалавров 220400.62 — Управление в технических системах:/ Сост. Филоненко И.Н. – Коломна: КИ (ф) МАМИ, 2015. – 45 с.

Лабораторный практикум составлен в соответствии с Государственными образовательными стандартами высшего профессионального образования по направлению подготовки бакалавров 220400.62 – Управление в технических системах.

Лабораторный практикум одобрен на заседании кафедры «Автоматизации производства и информационных технологий» Коломенского института (филиала) МАМИ, протокол № 1 от 02.02.15 и утвержден учебно-методическим советом.

УДК 004.4

ББК 32.97

© Филоненко И.Н.

© КИ (ф) МГМУ, 2015

Содержание

Лабораторная работа № 1 Программирование алгоритмов линейной структуры 5

Лабораторная работа № 2 Программирование алгоритмов разветвляющейся и циклической структуры.. 7

Лабораторная работа №3 Программирование алгоритмов итерационной циклической структуры.. 9

Лабораторная работа № 4 Обработка одномерных массивов. 12

Лабораторная работа № 5 Обработка матриц. 13

Лабораторная работа № 6 Программирование с использованием подпрограмм пользователя. 16

Лабораторная работа № 7 Обработка файловых структур данных. 19

Лабораторная работа № 8 Множественный тип данных. 24

Лабораторная работа № 9 Организация и использование статической библиотеки (Unit ) в Delphi. Использование списков выбора. 26

Лабораторная работа №10 Графические средства в DELPHI 29

Приложение 1 Справка по работе с основным набором визуальных компонентов Delphi, требуемых при выполнении лабораторных работ. 31

Список использованной литературы.. 44

Лабораторная работа № 1
Программирование алгоритмов линейной структуры

Цель работы — овладение практическими навыками раз­работки и программирования вычислительного процесса ли­нейной структуры и навыками по отладке и тестированию программ.

Задания для самостоятельной подготовки

1. Изучить:

— запись констант, переменных, стандартных функций;

— правила записи арифметических выражений;

— арифметический оператор присваивания;

— организацию простейшего ввода-вывода данных.

2. Разработать алгоритм решения в соответствии с за­данием.

3. Составить программу решения задачи.

4. Подготовить тестовый вариант исходных данных и вы­числить для них вручную или с помощью микрокалькулятора значения вычисляемых в программе величин.

Задание к работе

Вычислить на ЭВМ значения переменных, указанных в табл. 1.1 (вариант задается преподавателем), по заданным расчетным формулам и наборам исходных данных. На печать вывести значения вводимых исходных данных и результаты вычислений, сопровождая вывод наименованиями выводимых переменных.

Таблица 1.1

Таблица 1.1 Окончание

Контрольные вопросы

1. Какие типы величин используются в языке программи­рования?

2. Указать диапазон значений величин целого и действи­тельного типов.

3. Какие имена переменных допустимы в программе? Как задать тип переменной в программе?

4. Указать имена стандартных функций для вычисления

,ex, sin x, ln x, .

5. Можно ли в качестве операнда в арифметическом выражении использовать: а) имя массива; б) имя стандартной функции, например SIN(Y); в) имя символьной перемен­ной или переменной логического типа?

6. Назвать последовательность действий при выполнении арифметического оператора присваивания. Допустимо ли ис­пользование величин разных типов в арифметическом вы­ражении?

7. Указать старшинство выполнения операций при вы­числении арифметического выражения.

8. Указать средства, имеющиеся в языке программиро­вания для управления размещением данных на строке. Как организовать вывод значений, сопровождая выводимое чис­ловое значение наименованием переменной? Как организо­вать пропуск одной, двух строк при выводе?

9. Как выбрать значения исходных данных для тестово­го варианта счета?

Лабораторная работа № 2
Программирование алгоритмов разветвляющейся и циклической структуры

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

Задания для самостоятельной подготовки

Задание А

1. Изучить возможности языка программирования для реализации:

— условной и безусловной передачи управления;

— вычислительного процесса разветвляющейся струк­туры

2. Разработать алгоритм решения в соответствии с за­данием.

3. Составить программу решения задачи.

4. Подготовить тесты (число тестов равно числу ветвей вычислительного процесса) для проверки правильности фун­кционирования программы.

Задание Б.

1. Изучить возможности языка программирования для реализации:

— вычислительных процессов циклической структуры с известным числом повторений в цикле;

— приема программирования — табулирования функ­ции от одного аргумента (вычисление значении функ­ции при изменении значения аргумента в заданном диапазоне с шагом Дх).

2. Разработать алгоритм табулирования функции, опре­деленной в задании А.

3. Составить программу табулирования функции.

Задание к работе

Задание А.

1. Вычислить значение функции, заданной в табл. 2.1 (в соответствии с вариантом задания). Осущест­вить вывод значений вводимых исходных данных и результат вычисления значения функции, сопровождая вывод наимено­ваниями переменных.

Таблица 2.1

Таблица 2.1 Окончание

Контрольные вопросы

1. Перечислить действия, реализуемые при выполнении условного оператора.

2. Какие действия выполняются оператором перехода?

3. Что такое вычислительный процесс разветвляющейся структуры? Как организовать разветвление вычислений: а) на две ветви; б) на три ветви?

4. Составить последовательность операторов для вычис­ления величины z = 0, если х < -2;z = 1, если ; z = -1, если х > 2.

5. Зачем необходимо при отладке программы тестиро­ватьвсе ветви алгоритма?

6. Указать последовательность действий, выполняемых при организации циклических участков программы с задан­ным числом повторений.

7. Указать назначение и правила организации цикла.

8. Перечислить возможные способы организации цикла с заданным числом повторений в изучаемом языке програм­мирования.

Лабораторная работа №3
Программирование алгоритмов итерационной
циклической структуры

Цель работы — овладение практическими навыками разработки и программирования алгоритмов итерационной циклической структуры; приобретение дальнейших навыков по отладке и тестированию программ.

Задания для самостоятельной подготовки

1. Изучить:

— организацию итерационных циклов;

— возможности языка программирования для органи­зации таких циклов;

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

2. Разработать алгоритм решения задачи для задания.

3. Составить программу решения задач и для задания.

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

Задание к работе

Вычислить на ЭВМ значение суммы чле­нов бесконечного ряда (табл. 3.1) с заданной точностью е. На печать вывести значение суммы и число членов ряда, вошедших в сумму.

Сравнить полученное на ЭВМ значение суммы членов ряда со значением, вычисленным вручную.

Таблица 3.1

Таблица 3.1 Окончание

Контрольные вопросы

1. Указать отличия в организации циклов с заданным числом повторении и итерационных.

2. Какие средства языка целесообразно использовать для организации циклов с заданным числом повторений?

3. Указать, какие операторы составляют тело цикла.

4. В чем состоят преимущества использования операто­ров цикла в программах?

Лабораторная работа № 4
Обработка одномерных массивов

Цель работы — овладение практическими навыками ра­боты с массивами, особенностями их ввода и вывода, приобре­тение дальнейших навыков по организации программ цикли­ческой структуры с использованием приемов программирования.


Воспользуйтесь поиском по сайту:

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для
предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.

Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«МАТИ» – Российский государственный
технологический университет им. К.Э. Циолковского
Кафедра «Высшая математика»
Операторы цикла. Примеры программирования циклических
алгоритмов
Методические указания к лабораторной работе
по курсу “Информатика”
Составители:    Сидоров Б. Н.
Никулин А. М.
Москва 2005
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Данное руководство предназначено для студентов, изучающих предмет
«Программирование на алгоритмических языках» и выполняющих лабораторные работы
по курсу «Информатика». В методических указаниях рассмотрены операторы цикла
языка Паскаль и приведены примеры их использования.
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Введение
Основу любой программы, кроме простейших, составляет цикл. Цикл позволяет, записав
операторы (называемые телом цикла) один раз выполнять их много раз. Эти операторы
называются телом цикла.
В Паскале реализовано три оператора цикла: цикл со счетчиком FOR, используется, когда
заранее известно сколько раз должен выполняться цикл; и два условных цикла WHILE и
REPEAT, используются, когда известно условие работы цикла.
Рассмотрим последовательно эти операторы.
Оператор цикла FOR :
Вид оператора
FOR I:= начальное(нач.) значение TO конечное(кон.)значение DO
BEGIN
Оператор цикла
END;
I - параметр цикла.
Работа
1. Переменная I получает начальное значение
2. Проверка условия: если I > кон. значения, то выход из цикла
если I <= кон. значения, то 3
3. Выполняется оператор цикла
4. I увеличивается на 1
5. Переход к 2
Ограничения:
1. Параметр цикла, нач. значение, кон. значение должны быть целыми числами.
2. Параметр цикла, нач. значение, кон. значение нельзя менять внутри цикла.
3. Для работы цикла нач. значение должно быть меньше кон. значения, если надо,
чтобы параметр цикла менялся от большего значения к меньшему с шагом равным
-1, то заголовок цикла будет выглядеть так:
FOR I:= нач. значение DOUNTO кон. значение DO (нач. значение больше кон. значение)
Пример.
Цикл распечатывает последовательность 1,2,3 …10.
FOR I:=1 TO 10 DO
BEGIN
Write( i:4);
END;
Пример.
Цикл распечатывает последовательность 1,3,5 …19. ( 10 чисел )
3
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Эту задачу можно решить двумя способами:
1. выразив элемент последовательности через I : 2*I - 1
FOR I:=1 TO n DO
BEGIN
Write( 2*i-1:4);
END;
2. Для члена последовательности, введя вспомогательную переменную a, каждый раз
при выполнении цикла a увеличивать на 2 (шаг) : a:=a+2; ( к старому значению а
прибавить 2 и это станет новым значением a). Переменная I, тогда используется только
как счетчик, определяя сколько раз исполнится цикл.
a:=1;
FOR I:=1 TO n DO
BEGIN
a:=a+2;
Write( a:4);
END;
Этот способ, хоть чутя длиннее, но и более универсальный.
Использование оператора FOR для вычисления сумм.
Пример 1 Вычисление простейших сумм и произведений.
Вычислить сумму S=1+2+3+…+n.
Решение.
Рассмотрим процесс суммирования. Введем переменную накапливающую сумму – S;
первоначально положим S:=0; затем будем добавлять по слагаемому, тогда накопление
суммы будет выглядеть так :
S0:=0;
S1:=(0)+1;
S2:=(0+1)+2
S3:=(0+1+2)+3
……
Заметив, что в скобках указано предыдущее значение суммы, перепишем процесс
суммирования;
S0:=0;
S1:=S0+1;
S2:=S1+2
S3:=S2+3
……
4
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Теперь, вспомнив, как работает оператор присваивания (сначала вычисляется выражение,
стоящее справа, а затем вычисленное значение присваивается переменной, стоящей слева,
т. е. справа стоит предыдущее значение переменной Si-1, а слева последующее –Si) ,
отметим, что индексы к переменной S можно опустить, тогда
S:=0;
S:=S+1;
S:=S+2;
S:=S+3;
……
Если ввести обозначение для слагаемого a, (a=1, 2, 3…..), то все операторы, кроме
первого, запишутся так ;
S:=S+a;
Этот единственный оператор и есть оператор суммирования, который и будет размещен в
цикле.
Текст программы:
Var s,a:integer;
i,n: integer;
begin
writeln(’ Программа вычисления суммы S=1+2+3…n ’);
writeln(’ Ввод количества слагаемых ’);
write(’n -> ’);
readln(n);
s:=0;
for i:=1 to n do
begin
s:=s+i;
writeln (’i= ’,i, ’ s= ’,s);
end;
writeln (’ s= ’,s);
readln;
end.
Заметим, так как в само слагаемое совпадает с его номером, то программе вместо a
используется I , также в цикле добавлен отладочный оператор вывода;
Пример 2.
Вычислить произведение P=1*2*3…n.
Решение:
Этот пример аналогичен предыдущему, только вместо S:=S+I, используем P:=P+I;
первоначально же P:=0;
5
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Текст программы:
Var p:integer;
i,n: integer;
begin
writeln(’ Программа вычисления произведения P=1*2*3…n.
’); writeln(’ Ввод количества сомножителей ’);
write(’n -> ’);
readln(n);
p:=1;
for i:=1 to n do
begin
p:=p*i ;
writeln (’i= ’,i, ’ p= ’,p);
end;
writeln (’ p= ’,p);
readln;
Вычисление суммы арифметической прогрессии.
Арифметическая прогрессия задается формулой: an:=an-1+d, где an – n-ый член
прогрессии, an-1 – предыдущий член, d – разность прогрессии. Как было разобрано в
Пример 1 в Паскале формулу определения арифметической прогрессии можно переписать
в виде оператора присваивания, опустив индексы:
a:= a+d;
тогда вычисление суммы первых n членов арифметической прогрессии будет
реализовано таким образом:
S:=0; a:= нач. значение; d:= значение;
FOR I:=1 to N DO
Begin
S:=S+a;
a:=a+d;
End;
6
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Пример 3.
S= 2+5+8+11….
{ здесь сумма является арифметической прогрессией с a1=2; d:=3 }
Текст программы:
Var s,a,d :integer;
i,n: integer;
begin
writeln(’ Программа вычисления суммы      S= 2+5+8+11…. ’);
writeln(’ Ввод количества слагаемых ’);
write(’n -> ’);
readln(n);
s:=0; a:=2; d:=3;
for i:=1 to n do
begin
s:=s+a;
writeln (’a= ’,a, ’ s= ’,s);
a:=a+d;
end;
writeln (’ s= ’,s);
readln;
end.
Вычисление суммы геометрической прогрессии.
Геометрическая прогрессия задается формулой: an:=an-1*q, где an – n-ый член прогрессии,
an-1 – предыдущий член, q – знаменатель прогрессии. В Паскале же формулу определения
прогрессии можно переписать в виде оператора присваивания, опустив индексы:
a:= a*q;
тогда вычисление суммы первых n членов геометрической прогрессии будет реализовано
таким образом:
S:=0; a:= нач. значение; q:= значение;
FOR I:=1 to N DO
Begin
S:=S+a;
a:=a*q;
End;
Пример 4.
S=1+2+4+8+16+….
{ здесь, S – сумма есть геометрической прогрессии с a1=1; q:=2 }
7
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Текст программы:
Var s,a,d :integer;
i,n: integer;
begin
writeln(’ Программа вычисления суммы S=1+2+4+8+16+…         ’);
writeln(’ Ввод количества слагаемых ’);
write(’n -> ’);
readln(n);
s:=0; a:=2; d:=3;
for i:=1 to n do
begin
s:=s+a;
writeln (’a= ’,a, ’ s= ’,s);
a:=a+d;
end;
writeln (’ s= ’,s);
readln;
end.
Пример 5.
Вычислить сумму S=1+3/2+5/4+7/8+9/16+11/32……...
Решение:
Здесь слагаемое a можно представить в виде дроби a=c/z; где c (c= 1,3,5..)– числитель,
представляющий из себя арифметическую прогрессию (a1:=1; d:=2) ; z (z=1,2,4,8…)–
знаменатель, представляющий из себя геометрическую прогрессию (a1:=1; q:=2). Тогда в
одном цикле, отдельно вычисляя числитель и знаменатель, вычисление суммы будет
выглядеть так:
S:=0;
с:=1;{ нач. значение числителя}; d:=2;{ разность ар. прогрессии} ;
z:=1; { нач. значение знаменателя }; q:=2 ; { знаменатель геом. прогрессии} ;
FOR I:=1 to N DO
Begin
a:=c/z;
S:=S+a;
c:=c+d;
z:=z*q;
End;
8
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Оператор цикла WHILE
Вид оператора
WHILE (условие) DO оператор;
Если в цикле необходимо выполнять несколько операторов, то их необходимо объединять
в один составной оператор, заключая в операторные скобки begin ... end.
Работа:
1 вычисляется условие.
2 если условие принимает значение «истинна», то а)выполняется оператор цикла
б)переход к 1.
3 если условие принимает значение «ложь», то выполняется оператор, следующий за
оператором цикла.
То есть оператор цикла повторяется, пока истинно условие; перед каждом повторением
оператора условие вычисляется заново. Для правильной работы цикла необходимо
• перед циклом должны быть определены значения всех переменных, входящих в
условие цикла ( инициализация цикла)
• оператор цикла должен менять значения этих переменных, иначе условие всегда будет
истинно и цикл будет исполняться бесконечно.
Таким образом работа с циклом сводится к следующейсхеме:
Инициализация цикла;
WHILE (условие) DO
begin
оператор;
изменение значения переменных цикла
end;
Примеры программ, использующие цикл WHILE.
Пример .
Программа распечатывает таблицу перевода дюймов в сантиметры (1дюйм=2.54 см)
от 1 дюйма до 35 дюймов с шагом 2 дюйма
{ Программа распечатывает таблицу перевода дюймов в сантиметры}
const n=1;{начальное значение }k=35;{конечное значение }h=2;{шаг }
var x,y:real; {х - дюймы , y - сантиметры}
begin
x:=n; {переменной цикла х присваивается начальное значение}
WHILE (x<=k) DO
begin
y:=2.54*x; { вычисление сантиметров}
writeln( x:6:1, ’ duim = ’, y:6:2, ’ cm’); { печать строки таблицы}
x:=x+h; {х увеличивается на шаг - меняется переменная входящая в условие цикла}
end; {конец цикла}
readln;
end.
9
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Пример. Вычислить сумму N членов геометрической прогрессии
S=1+2+4+8+ . . . +;
Решение.
Эта задача решалась с использованием цикла FOR. При использовании цикла WHILE
возникают два отличия: 1. надо задать условие работы цикла ( количество слагаемых –
счетчик цикла переменная I меньше N ); 2. счетчик цикла (переменная I) необходимо
увеличивать в цикле самостоятельно.
Текст программы:
Var S, n, a, i, q : integer;
Begin
Writeln (‘ Программа вычисления суммы S=1+2+4+8+ . . . + ‘);
Writeln ( ‘ Ввод количество слагаемых ‘);
Write(’n->’);
Readln(n);
S=0; a:=1; q:=2; i:=1;
WHILE (i<=n) DO
Begin
S:=S+a;
Writeln( ‘i= ‘,i ‘a= ‘, a, ‘S= ‘ , S);
a:= a*q;
i:= i+1;
End;
Writeln(‘S= ‘ , S);
Readln;
End.
Пример. Вычислить сумму геометрической прогрессии
S=1+2+4+8+ . . . +; Вычисление прекратить, когда значение суммы превысит N ;
Решение.
Эта задача отличается от предыдущей тем, что заранее не известно количество
слагаемых, а известно условие работы цикла ( Сумма меньше N ). Это условие и надо
поставить в заголовок цикла. В остальном все без изменений.
10
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com

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

Для
организации циклов используются
специальные операторы языка, называемые
операторами
цикла
.

В
языке TurboPascal таких операторов три:
оператор с предусловием While,
оператор с постус­ловием Repeat
и оператор с парамет­ром For.

7.1. Оператор цикла с предусловием while

Общий вид оператора

while
L
do
оператор,

где
L
— логическое выражение, оператор
— простой или состав­ной оператор,
который является телом цикла (рис. 7.1).


Рис.
7.1. Синтаксическая диаграмма оператора
while

Оператор
while
выполняется
так:

1)
вычисляется логическое выражение L,
результат вычисления анализируется;


2)
если результат вычислений true,
то выполняется тело цикла, после чего
осуществляется возврат к оператору
while;
если результат false,
то тело цикла не выполняется, а управление
пе­редаётся оператору программы,
расположенному непосредственно пос­ле
тела цикла.

Если
первая проверка условия окончания цикла
дала результат false,
то тело цикла не выполнится ни разу.

Логику
действия оператора while
можно сформулировать так: «выполнять
тело цикла, пока условие истинно».

Пример 7.1

Вычислить
значения функции
y=sin(x2)
на отрезке
[1,2], если шаг изменения её аргумента
x=0,1.

Схема
алгоритма не приводится, т.к. она
отличается от схемы, приведенной в
примере 1.11, только тем, что проверка
условия выхода из цикла выполняется
перед телом цикла, а не после него.

program
example71;

var

x,
y, dx, a, b : real;

begin

write
(‘введите a,b,dx — ‘);

readln
(
a,b,dx);

x
:=
a;
{ присваивание параметру
цикла
x
его

начального
значения }

while
x
<=
b
do
{проверка условия работы цикла}

begin
{операторы, составляющие}

y
:=
sin(x
*
x);
{тело цикла, заключены в}

writeln
(‘x=’, x:10:3, ‘ y=’ ,y:10:3);

x
:=
x
+
dx
{опе­раторные скобки }

end
{
beginend
}

end.

7.2. Оператор цикла с постусловием repeat

Общий вид оператора

repeat

oператор1;

oператор2;

……………..

oператорN

until
L

где
L
— логическое выражение; опе­ратор1,
оператор2,…,
операторN
— операторы, представляющие в совокупности
тело цикла (рис. 7.2).

Рис.
7.2. Синтаксическая диаграмма оператора
repeat

Последовательность
выполнения оператора repeat:

1) исполняются
операторы, составляющие тело цикла;

2) Вычисляется логическое выражение l, результат вычисления анализируется;

3)
если результатом вычислений является
false,
тело цикла выполняется снова, в противном
случае (результат вычислений
true)
очередного
повторения
тела не происходит, а осуществляется
выход из цикла на следующий по порядку
оператор программы.

Таким
образом, логику действия оператора
repeat
можно
выра­зить инструкцией «выполнять
тело цикла до тех пор, пока условие не
станет истинным»
.

Пример 7.2

Выполнить
задание примера 7.1, используя оператор
repeat.

program
example72;

var

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Страницы работы

Содержание работы

БЕЛОРУССКИЙ  ГОСУДАРСТВЕННЫЙ  УНИВЕРСИТЕТ

Факультет  радиофизики  и  электроники

Кафедра  информатики

МЕТОДИЧЕСКИЕ  УКАЗАНИЯ

к  лабораторным  работам   по теме   2  «Организация
 циклических вычислений»  (курс  «Программирование»,  1-ый  семестр)

для  студентов  специальности  «Физическая 
электроника»

    
Пособие подготовлено доцентом  кафедры  информатики      

Пособие может быть полезно при
выполнении лабораторных  работ по данной теме студентами специальностей
«Радиофизика» и «Компьютерная безопасность».

          Главное при
изучении программирования  – навыки алгоритмизации и структурирования данных.
 Если
они есть, то кодирование алгоритмов на любом языке программирования – дело не
самое сложное.

«Если вы не можете выразить что-то на повседневном
языке, то вы не сможете это сделать  и  на  С/С++»,  –  А. Голуб
(известный американский специалист  в  области 
программирования, консультант и преподаватель).

«При  написании  программ на С++ столько тонкостей,
что даже опытные  программисты  временами  забывают  о  них»,  – А. Голуб.

Минск      2008

Содержание

Стр.

1.    Основной  теоретический  материал                                 
                          2

1.1.  Операторы  для  организации  циклов                                 
                          2

1.2.  Вложенные  циклы 5

1.3.  Другие  операторы 
передачи  управления                                                    
6                                                                      

1.4.  Организация  цикла  с 
параметром                                                                 8

1.5.  Организация  итерационного  цикла                                                               
9

          
2.  Контрольные  вопросы  и  задания                                                                11

1.    Основной  теоретический  материал

1.1.  Операторы  для  организации  циклов                                                        

Циклические вычислительные процессы.   Для большинства задач характерно
многократное выполнение отдельных участков вычислений: табулирование
(создание  таблицы значений) функции одной или нескольких
переменных, вычисление значения интеграла и нахождение корней  нелинейного
уравнения  численными методами, решение систем линейных и нелинейных уравнений,
матричные операции (сложение, вычитание, умножение матриц, вычисление
определителя и обратной матрицы) и др. Циклическими вычислительными процессами называют такие процессы, при реализации
которых происходит многократное выполнение
 одного или нескольких участков
вычислений. Повторяющиеся участки вычислений называют
циклами. Для организации циклов в компьютере  предусмотрены
аппаратно-программные средства. Регистр базы и индексные регистры в центральном
процессоре поддерживают различные режимы адресации операндов в машинных
командах и широко используются при работе с массивами (векторами, матрицами,
строками). Для организации циклов c известным числом повторений в системе команд микропроцессоров
компании Intel   реализована машинная команда с
мнемоническим кодом LOOP,
 которая анализирует 
содержимое регистра СХ (16-разрядные микропроцессоры) или ЕСХ (32-разрядные МП),
используемого как счетчик  повторений цикла. Начальное значение этого счетчика
– известное число повторений цикла. Об инициализации счетчика значением числа
повторений должен позаботиться разработчик, если пишет программу на
машинно-ориентированном языке (Ассемблере). При использовании С++ эту работу
выполнит компилятор, если разработчик корректно выбрал один из операторов цикла
(нужен оператор цикла for).
Содержимое счетчика автоматически уменьшается на 1 при выполнении команды LOOP. Когда содержимое счетчика циклов
становится равным 0, осуществляется выход из цикла.

В программировании принято
различать два вида циклов:

·  циклы с параметром – число  повторения действий  (тела цикла), как правило, известно или его
легко определить;

·  итерационные циклы число повторений цикла неизвестно. Для организации повторения действий
в теле цикла  (или для организации выхода из цикла) в С++ используется и
анализируется соответствующее условие повторения, записанное после ключевого
слова в  операторе цикла
while  или в конце цикла  do . . .  while.

Операторы цикла.Для организации циклов в языке С++ предназначаются три
оператора: for (для, в течение),   while (пока),  do … while 
(выполнять … пока). Тело цикла    простой или составной оператор. Оператор цикла
с предусловием (
while) и оператор цикла с постусловием (dowhile) предназначаются для организации циклов с заранее 
неизвестным  числом  повторений.

Оператор  цикла  с  предусловием   имеет  вид:

while  (условие_повторения)  тело_цикла;

Похожие материалы

  • Основные понятия языка С++. Разветвление вычислительного процесса. Простые типы данных
  • Отношения классов и объектов. Отношения между объектами. Диаграмма вариантов использования программы
  • Полиморфизм. Виртуальные функции. Позднее связывание. Пример шаблона семейства функций. Класс в качестве перегружаемого параметра функции

Информация о работе

Тип:

Методические указания и пособия

Содержание

Методическая разработка «Программирование циклов на языке программирования C++» предназначена для учащихся и учителей, занимающихся углубленным изучением языков программирования.

Методическая разработка включают в себя теоретическое изложение по теме и экспериментальное подтверждение изученных теоретических положений путем проверки на компьютере рассмотренных примеров. Теоретический материал построен на сравнении циклических конструкций, примеры решения задач даются в нескольких вариантах с использованием различных циклических операторов. В методической разработке предусмотрен тренинг умений, включающий задания по рассмотренной теме. Изложение теоретического материала опирается на структурные схемы циклических конструкций, для примеров приведены блок-схемы, что в значительной мере упрощает изучение нового материала, делает его более наглядным.

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

Алгоритмы, отдельные действия в которых многократно повторяются, называются циклическими алгоритмами циклической структуры (повторение). Совокупность действий алгоритма, связанную с повторением называют циклом.

Приведем пример схемы алгоритма циклической структуры.

Задача 1. Вычислить множество значений функции y=x2+b для всех значений х от -10 до 10 с шагом 2 при b=5.

Разработка алгоритма. Значение y необходимо вычислить 11 раз, то есть необходимо 11 раз выполнить алгоритм линейной структуры (рис.1).

Задание х можно автоматизировать, организовав цикл. Для этого необходимо задать начальное значение х, то есть х=-10. Далее рассчитать y по формуле, вывести числовое значение у, изменить х и вернуться к расчету у.

Тогда схема буде выглядеть следующим образом (рис. 2).

На рис. 2 представлена схема алгоритма циклической структуры. Блоки 3, 4, образующие тело цикла, повторяются многократно. Сколько раз? Бесконечное количество. При каждом расчете к предыдущему значению х прибавляется 2, далее следует возврат к расчету у, вывод у и опять у изменяется на 2. По условию задачи расчетом у при х=10 нужно ограничиться. Следовательно, необходимо включить условие окончания расчетов. До тех пор, пока х≤10, расчеты производить; как только х станет больше 10-вычисления закончить. В схему включим логический блок (рис. 3).

В блоке 2 осуществляется задание начального значения для х. В блоке 3 рассчитываются значения у. В блоке 5 фиксируется текущее значение х с заданным шагом. В блоке 6 анализируется величина х. Если х еще не превысил своего конечного значения, то необходимо вернуться к блоку 3 и повторить вычисления. Если х сталь больше предельного значения расчеты нужно закончить.

Чтобы алгоритм стал еще более универсальным, начальное значение хn, конечное значение хk и шаг изменения dx зададим в блоке ввода (рис. 4).

Величина, с изменением которой связано многократное выполнение цикла, называется параметром цикла. В нашем примере это х. Блоки 4, 5 – тело цикла. Блок 3 представляет собой подготовку цикла. Блок 6 – изменение параметра цикла (подготовка очередного шага), а блок 7 – условие продолжения цикла.

Представим схемы циклов в общем виде.

Циклическая структура на рис. 5 называется циклом «До». Особенность этого цикла состоит в том, что он выполняется хотя бы один раз, так как первая проверка условия выхода из цикла происходит после того, как тело цикла выполнено.

Цикл «Пока» изображен на рис. 6. Цикл «Пока» отличается от цикла «До» тем, что здесь проверка условия проводится до выполнения тела цикла. Если при первой проверке условие выхода из цикла выполняется, то тело цикла не выполнится ни разу.

Используем цикл «Пока» для нашего примера (рис.7).

Для изображения алгоритмов циклической структуры используется также блок «модификация» (рис. 8). В блоке «модификация»объединяются несколько блоков: подготовка цикла, условие окончания, изменение параметра цикла (подготовка очередного шага). В блоке модификации записывается параметр цикла, знак равенства (присваивание), начальное значение параметра цикла, конечное значение параметра цикла и шаг изменения параметра цикла. Для нашего примера схема алгоритма с использованием блока модификации показана на рис. 8.

Блок 3 можно прочитать таким образом: выполнить для всех х от xn до xk с шагом dx. Тело цикла выделено линией потока, замкнутой на блок модификации.

В практике программирования циклом называют многократное автоматическое выполнение некоторых действий (операторов). Любой цикл состоит из тела цикла, то есть из тех операторов, которые выполняются несколько раз, начальных установок, модификации параметра цикла и проверки условия продолжения выполнения цикла.

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

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

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

Цикл завершается если условие его продолжения не выполняется. Возможно принудительное завершение, как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return, goto. Передавать управление извне внутрь цикла не рекомендуется.

Для удобства, а не по необходимости, в С++ есть три разных оператора цикла – while, do while и for.

Цикл с предусловием реализует структурную схему, приведенную на рис. 6, и имеет вид:

while (выражение) оператор

Выражение определяет условие повторения тела цикла, представленного простым или составным оператором. Выполнение оператора начинается с вычисления выражения. Если оно истинно (не равно false), выполняется оператор цикла. Если при первой проверке выражение ложно (равно false), цикл не выполняется ни разу. Тип выражения должен быть арифметическим или приводимым к нему. Выражение вычисляется перед каждой итерацией цикла.

Напишем программы на рассмотренный пример: вычислить множество значений функции y=x2+b для всех значений х от -10 до 10 с шагом 2 при b=5, с использованием каждого циклического оператора.

Следующая программа соответствует примеру задачи рис .7.

#include

int main()

{float xn, xk, dx, b, x, y;

printf(“введите значение b диапазон и шаг изменения аргумента”);

scanf(%f%f%f%f, &b, &xn, &xk, &dx);

printf(“| x | y |n”);

x=xn;

while (x<=xk)

{y= x*x+b;

printf(“|%5.2f|%5.2f|n”,x,y);

x+=dx;

}

return 0;

}

Цикл с постусловием реализует структурную схему, приведенную на рис. 5, и имеет вид:

do оператор while (выражение);

Сначала выполняется простой или составной оператор, составляющий тело цикла, а затем вычисляется выражение. Если оно истинно, тело цикл выполняется еще раз. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления. Тип выражения должен быть арифметическим или приводимым к нему.

Следующая программа реализует пример рассмотренный на рис. 4.

#include

int main()

{float xn, xk, dx, b, x, y;

printf(“введите значение b диапазон и шаг изменения аргумента”);

scanf(%f%f%f%f, &b, &xn, &xk, &dx);

printf(“| x | y |n”);

x=xn;

do

{y= x*x+b;

printf(“|%5.2f|%5.2f|n”,x,y);

x+=dx;

}

while (x<=xk);

return 0;

}

Цикл с параметром имеет следующий формат:

for (инициализация; выражение; модификации) оператор;

Инициализация используется для объявления и присвоения начальных значений величинам, используемых в цикле. В этой части можно использовать несколько операторов, разделенных запятой, например, так

int k, m;

for (k=1, m=0; . . .

for (int i=0, j=2; . . .

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

Выражение определяет условие выполнения цикла: если его результат приведенный к типу bool равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификации можно записать несколько операторов через запятую. Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятыми надо ставить на своих местах!).

Пример (оператор, вычисляет сумму чисел от 1 до 100)

for (int i=1, s=0; i<=100; i++) s+=i;

Следующая программа составлена по блок-схеме рассмотренной на рис. 8.

# include

int main()

{ float xn, xk, dx, x, y;

printf(“Введите значение b, диапазон и шаг изменения аргумента:”);

scanf(“%f%f%f%f,&b,&xn,&xk,&dx”);

printf(“| X | Y |n”);

for (x=xn; x<=xk; x+=dx)

{y= x*x+b;

printf(“|%5.2f|%5.2f |n”,x, y);

}

return 0;

}

Пример1. Программа вычисления факториала. В программе использован цикл с постусловием.

# include

int main()

{ long int f;

int i, n;

cout<<”n=”; cin>>n;

f=i=1;

do

f*=i++; //f=f*i; i=i+I;

while (i<=n);

cout<<”n”<

return 0;

}

Задание. Составьте блок-схемы и программы вычисления N!, используя операторы цикла с предусловием и с параметром.

Пример 2. Программа находит все делители целого положительного числа.

Использован цикл с предусловием

#include <iostream.h>

int main()

{int num;

cout<<”nВведите число: “; cin>>num;

int half=num/2;

int d=2;

while (d<=half)

{if (!(num%d)) cout<

d++;}

return 0;}

Использован цикл с параметром.

# include

int main()

{ int num, half, div;

cout<<”Введите число:”; cin>>num;

for (half=num/2, div=2; div<=half; div++)

if (num%div=0) cout<

return 0;

}

  1. Написать программу возведения числа в степень y=an (n>0).

  2. Написать программу возведения числа в степень. Предусмотреть все возможные значения n.

  3. Найти НОД двух чисел по алгоритму Евклида.

  4. Составить программу, которая определяет, является ли число симметричным, т.е. справа налево и слева направо читается одинаково.

  5. Определить количество цифр заданного числа.

  6. Определить сумму цифр заданного числа.

  7. Определить количество «счастливых» шестизначных билетиков в рулоне. Известен номер первого и последнего билета.

  8. Дана последовательность из N целых чисел определить, сколько положительных и отрицательных чисел в последовательности.

  9. Дана последовательность из n целых чисел, определить является ли она убывающей.

  10. Вводится последовательность из целых чисел, 0- конец последовательности, найти наименьшее число.