Файл: Практическая работа Реализация алгоритма линейной структуры.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.02.2024

Просмотров: 29

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


5. Как организовать бинарное ветвление?

6. Как организовать множественное ветвление?

7. Какие наборы тестовых данных необходимы для тестирования программ с ветвлением?

8. Раскажите о каждом из структурированных опараторов Паскаля, реализующих ветвление.

9. Дайте новичку несколько полезных советов о программировании вложенных условных операторов.

10. Перечислите арифметические и логические операции в порядке убывания их приоритета.


Лабораторная работа №3

Программирование алгоритмов циклической структуры



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

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

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

  3. Подобрать тестовые данные.


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

Написать программу, отладить её, протестировать. Распечатать текст программы и результаты её работы на тестовых данных.
Содержание отчёта

  1. Условие задачи.

  2. Описание алгоритма.

  3. Набор текстовых данных с обоснованием их выбора.

  4. Текст программы.

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


Краткие теоретические сведения

В языке Турбо Паскаль имеются три различных оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты программ.

1. Операторы цикла со счетчиком For … to … do и For … downto … do имеют следующую структуру

F or <параметр>:=<нач.знач.> to <кон.знач.> do <оператор>;

Рассмотрим программу, осуществляющую ввод с клавиатуры произвольного целого числа N и вычисление суммы всех целых чисел от 1до N

p
y

конец
rogram Sum


Var

i, n, s : integer ;

Begin

Write ('N =');

Readln (n);

S :=0;

For i :=1 to n do

s:=s+i ;

writeln('сумма = ',s)

end.

Отметим два обстоятельства. Во-первых, условие, управляющее работой оператора FOR, проверяется перед выполнением оператора: если условие не выполняется в самом начале работы оператора FOR, исполняемый оператор не будет выполнении ни разу. Другое обстоятельство - шаг наращивания цикла строго постоянен и равен (+l). Существует другая форма оператора: Существует другая форма оператора:

For <параметр>:=<нач.знач.> downto <кон.знач.> do <оператор>;

Замена зарезервированного слова ТО на DOWNTO означает, что шаг наращивания параметра цикла равен (-1).

Приведенный выше пример можно модифицировать так, чтобы сделать его пригодным для подсчета любых сумм - положительных и отрицательных:

Var

I, n, s : integer ;

Begin

Write ('N =');

Readln (n);
s :=0;

if n>=0

then

for i :=1 to n do

s:=s+i

else

for i:=-1 downto n do

s:=s+i;

writeln('сумма = ',s)

end.

2. Оператор цикла WHILE с предусловием (предпроверкой условия) имеет вид:

while <условие> do <оператор>

WHILE, DO - зарезервированные слова (пока (выполняется условие) делать)

<условие> - выражение логического типа

<оператор> - произвольный оператор Турбо Паскаля

Порядок работы оператора WHILE

Условие выполняется?




нет

да



Оператор

Выход


3. Оператор цикла REPEAT... UNTIL с постусловием (постпроверкой условия)

Структура:

R epeat

<Оператор1>;

<Оператор2>;

. . .

<ОператорN>

UNTIL <условие>;

где

REPEAT,UNTIL - зарезервированные слова (повторять до тех пор, пока)

<ОПЕРАТОР1>,<ОПЕРАТОР2>,...<ОПЕРАТОРN> - произвольные операторы Турбо Паскаля

<УСЛОВИЕ> - выражение логического типа.

порядок работы оператора REPEAT представлен на бллок-схеме:

Составим программу, которая вводит символ и выводит на экран его код. Для завершения работы программы нужно дважды нажать Enter.

Решение.

program char_code;

var ch:char;

const cr=13;

begin

repeat

writeln(‘введите символ’);

readln(ch);

write(ch,’=’,ord(ch));

until ord(ch)=cr;

end.

Оператор цикла repeat повторяет команды тела цикла до тех пор, пока условие, записанное после слова until не верно.
Варианты заданий

1/21. Вводится последовательность из n целых чисел. Найти сумму всех отрицательных чисел.

2/22. Вводится последовательность из n целых чисел. Найти сколько в ней нулей.

3/23. Вводится последовательность из n целых чисел. Найти наибольшее число.

4/24. Вводится последовательность из n целых чисел. Найти наибольшее из всех отрицательных чисел.

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

6/26. Вводится последовательность чисел, 0- конец последовательности, определить, содержит ли последовательность хотя бы 2 равных числа.

7/27. Вводится последовательность чисел, 0- конец последовательности, определить, сколько раз последовательность меняет знак.

8/28. Вводится последовательность из N произвольных чисел, определить, сколько раз последовательность меняет знак.

9/29. Вводится последовательность ненулевых чисел, 0- конец последовательности, определить, является ли последовательность возрастающей.

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

11/31. На выставке собак, где были представлены разные породы, отбор животных проводится по возрасту и высоте холки. Определить, сколько было боксеров 2-3-летнего возраста с высотой холки не менее 55 сантиметров.

12/32. В очереди за билетами стоят мужчины и женщины. Какое количество мужчин стоит до первой женщины.

13/33. Вводится последовательность ненулевых чисел, 0- конец последовательности, посчитать, сколько в ней отрицательных чисел, и сумму положительных чисел.

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

15/35. Дана последовательность из n целых чисел, определить сохраняет ли она знак.

16/36. Вводится последовательность ненулевых чисел, 0- конец последовательности, определить, сколько в ней пар равных соседних элементов.

17/37. Дана последовательность из n целых чисел, определить сумму 3 наибольших элементов.

18/38. Установить, чётным или нечётным является число цифр в записи данного натурального числа.

19/39. Дано целое число N , удовлетворяющее условию 0<|N|<2*109 . Найти сумму цифр числа N.

20/40. Дано целое число N , удовлетворяющее условию 0<|N|<2*109 . Проверить, входит ли в запись числа N цифра 5 ровно 2 раза.
Контрольные вопросы

      1. Классифицируйте операторы циклов в Паскале.

      2. Расскажите о каждом из структурных операторов Паскаля, реализующих цикл.

      3. Как выбираются циклы в разных ситуациях, связанных с программированием повторяющихся вычислений?

      4. Перечислите отличие циклов while от repeat.

      5. Какой тип может иметь параметр цикла FOR , начальное и конечное выражение?

      6. Какие действия с параметром цикла FOR недопустимы в теле цикла?

      7. Какое значение имеет параметр цикла FOR после окончания работы цикла?







Лабораторная работа №4

Работа с одномерными массивами


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

  1. Изучить способы описания и использования массивов, алгоритмы сортировки массивов и алгоритмы поиска элемента в массивах.

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

  3. Подобрать тестовые данные.

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

Написать программу, отладить её, протестировать. Распечатать текст программы и результаты её работы на тестовых данных.
Содержание отчёта

  1. Условие задачи.

  2. Описание алгоритма.

  3. Набор тестовых данных с обоснованием их выбора.

  4. Текст программы.

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


Краткие теоретические сведения

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

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

Описывать массивы можно двумя способами:

1. Type <имя типа>= array[<номер 1 эл-та>..<номер последнего эл-та>] of <тип элементов>;

Var <имя массива>:<имя типа>;
2. Var <имя массива>:array [<номер 1 эл-та>..<номер последнего эл-та>] of <тип элементов>;
Пример. Описать массив из 10 целых чисел, назвать его а.

Решение.

1) Type Myarray=array[1..10]of integer;

Var a:MyArray;
2) Var a:array[1..10]of integer;


Чтобы получить доступ к нужному элементу массива, нужно указать имя массива и индекс (номер) элемента массива.

Пример. Пусть описан массив из 5 целых чисел:

Var A:array [1..5] of integer;

И пусть первоначально все элементы массива равны 0, а третьему элементу массива мы хотим присвоить значение 9. Оператор присваивания будет иметь вид:

A[3]:=9;

Для большей наглядности представим графически набор ячеек памяти компьютера, которые выделяются для хранения этого массива:


Рисунок 3.2.1.



Здесь I - порядковый номер элемента в массиве.
Работа над элементами массива осуществляется в цикле.

Пример. Ввод элементов массива

var i:integer;

Begin

for i:=1 to n do

Begin

Write(Name,'[',i,']=');

ReadLn(a[i]);

End;
Пример. Составим программу заполнения массива случайными числами.

Program wwod;

Const n=10;

Var a:array[1..n]of integer;

Begin

Randomize;

for i:=1 to n do

a[i]:=Random(121);

End.

Варианты заданий


1/21. Дан массив чисел. Найти значение max элемента. Если таких элементов несколько, то определить, сколько их.

2/22. Дан массив чисел. Найти, сколько в нем пар одинаковых соседних элементов.

3/23. Дан массив чисел. Найти max элемент, поставить его первым. Вывести на печать исходный и полученный массивы.

4/24. Дан массив чисел. Расставить их по убыванию. Вывести на печать исходный и полученный массивы.

5/25. Имеются данные об успеваемости не более чем 24 учебных групп (в процентах). Определить, на сколько нужно повысить успеваемость в самой отстающей группе, чтобы достичь среднего уровня успеваемости.

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

7/27. В одномерном массиве произвольных чисел вычислить произведение отрицательных элементов, имеющих отрицательные индексы.

8/28. В одномерном массиве произвольных чисел найти max элемент из отрицательных.

9/29. В одномерном массиве из 20 чисел определить сумму и количество элементов, которые меньше 50 и индексы, которых кратны 4.

10/30. Определить сумму чётных элементов массива.

11/31. Определить сумму элементов массива, стоящих на нечётных местах.

12/32. Определить сумму элементов массива. А, удовлетворяющих условию A[I]>d.

13/33. Определить произведение элементов массива, стоящих на нечётных местах.

14/34. Определить произведение массива. А, удовлетворяющих условию d1<A[I]<d2.

15/35. Найти первый отрицательный элемент в массиве.

16/36. Найти первый элемент в массиве больший заданного значения.

17/37. Найти максимальный и минимальный элемент в массиве.

18/38. Определить какой элемент раньше встречается в массиве: максимальный или минимальный.


19/39. Найти максимальный элемент в массиве, стоящий на чётном месте.

20/40. Найти последний отрицательный элемент в массиве.




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

  1. Как описываются массивы в Паскале?

  2. Какой тип может быть базовым типом массива и типом индекса?

  3. Как осуществляется ввод и вывод массивов?

  4. Какие действия определены над массивами как единым объектами?

  5. Где можно использовать переменные с индексами?

  6. Дайте подробное описание типа «массив».

  7. Назовите известные вам способы сортировки одномерных массивов?

  8. Какими способами может, осуществлен поиск элемента в упорядоченном и не упорядоченном одномерном массиве?


Лабораторная работа №5

Работа с двумерными массивами



Цель работы: Получение навыков работы с двумерными массивами. Закрепление навыков построения циклических алгоритмов и работы с одномерными массивами.
Задание для подготовки к работе

  1. Изучить способы описания и использования двумерных массивов; назначение подпрограмм; описание и обращение к подпрограммам. Основные алгоритмы для работы с матрицами.

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

  3. Подобрать тестовые данные.

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

Написать программу, отладить её, протестировать. Распечатать текст программы и результаты её работы на тестовых данных.
Содержание отчёта

  1. Условие задачи.

  2. Описание алгоритма.

  3. Набор тестовых данных с обоснованием их выбора.

  4. Текст программы.

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


Краткие теоретические сведения

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



Колонки и строки таблицы содержат, как правило, однородную информацию, т.е. являются данными одного типа.