Группа Т(О), ТГ(О), С(О)–24-02, 2025 год
Занятие по рабочей программе №7
Дисциплина: ОД.08 «Информатика»
Раздел 3. Информационное моделирование.
Тема: Практическая работа №4. Задачи поиска элемента с заданными свойствами.
Цель занятия: Дидактическая:
сформулировать представление студентов об алгоритме и основных алгоритмических структурах;
выяснить способы поиска элемента с заданными свойствами;
определение порядка построения простейших алгоритмов;
овладение умениями и навыками осуществлять поиск элемента с заданными свойствами;
систематизировать и обобщить знания об алгоритмических структурах;
углубить и закрепить знания по дисциплине «Информатика».
Воспитательная:
развивать коммуникативные способности;
развивать аналитические способности;
развивать творческий подход к процессу обучения.
воспитывать самостоятельность, дисциплинированность;
стимулировать студентов к изучению дисциплины;
побуждать к формированию активной жизненной позиции;
прививать уважение и любовь к будущей профессии.
Вид занятия: практическое занятие.
Тип занятия: обобщение и систематизация знаний.
Форма проведения занятия: репродуктивная и эвристическая беседа.
Междисциплинарные связи:
Обеспечивающие Математика, Охрана труда, Безопасность жизнедеятельности.
Обеспечиваемые
Информационные технологии в профессиональной деятельности, и др.
Методическое обеспечение: опорный конспект.
Литература:
Филимонова, Е. В. Информатика и информационные технологии в профессиональной деятельности: учебник / Е. В. Филимонова. – Москва: Юстиция, 2019. – 213 с. – (Среднее профессиональное образование). - ISBN 978-5-4365-2703-1.
Зимин, В. П. Информатика. Лабораторный практикум в 2 ч. Часть 1 : учебное пособие для среднего профессионального образования / В. П. Зимин. — 2-е изд., испр. и доп. — Москва : Издательство Юрайт, 2023. — 126 с. — (Профессиональное образование). — ISBN 978-5-534-11851-3. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/514893
ХОД ЗАНЯТИЯ
Ознакомление с темой, целью и планом занятия.
Тема: ПР №4. Задачи поиска элемента с заданными свойствами.
Цель работы: Закрепить представление о структурированном типе данных массив;
научиться осуществлять поиск элементов с заданными свойствами.
Отработка навыков решения задач с применением одномерных массивов;
ПЛАН
Теоретические сведения к практической работе.
Закрепление нового материала. Практическая часть.
Изложение и изучение нового материала, практическое занятие.
ЛИТЕРАТУРА: [1], стр.
1. Теоретические сведения к практической работе
1.1. Поиск элементов, обладающих заданным свойством.
При поиске элементов, обладающих заданным свойством, необязательно просматривать все элементы массива. Например, требуется определить, есть ли в массиве хотя бы один нулевой элемент. Для ответа на этот вопрос, достаточно в цикле просматривать элементы массива до тех пор, пока не закончится массив или не встретится равный нулю элемент. Если, например, уже третий элемент равен нулю, то остальные элементы просматривать нет необходимости.
В таких случаях для просмотра массива обычно используется оператор цикла while со сложным условием. Графическая схема для рассматриваемого примера изображена на Рис.1. После цикла достаточно проверить, чему равно i. Если окажется, что i=n, т.е. были просмотрены все элементы, то в массиве нет нулевых элементов.
| i=0; while(i If(i == n) puts("В массиве нет нулевых элементов"); else puts("В массиве есть нулевой элемент"); |
Рис.1. Графическая схема и фрагмент программы поиска
нулевого элемента в массиве
Встречаются задачи, в которых требуется не только определить, есть ли элемент, обладающим заданным свойством в массиве, но и номер (индекс) такого элемента. Например, найти максимальный элемент в части массива, находящейся после последнего нуля. Решение задачи следует начать с вычисления индекса последнего нулевого элемента. Для определения индекса самого правого элемента, обладающего заданным свойством, массив следует просматривать с конца до тех пор, пока не закончатся элементы и текущий элемент не равен нулю (Рис. 2).
| i=n–1; while(i=0 && a[i]!=0) i=i–1; If(i puts("В массиве нет нулевых элементов"); else printf("Индекс последнего нуля – %d \n", i); |
Рис. 2. Графическая схема и фрагмент программы поиска номера последнего нулевого элемента в массиве
Номер (индекс) первого встретившегося нулевого элемента можно узнать по значению параметра цикла i. Этот номер можно использовать в дальнейших вычислениях например как номер начального элемента для поиска максимума.
1.2. Поиск в упорядоченном массиве.
Упорядоченность элементов массива позволяет значительно увеличить скорость его обработки, за счет снижения числа проверяемых элементов массива. В таких алгоритмах массив проверяется пока выполняется (или не выполняется) дополнительное условие, определяющее досрочный выход из цикла. Также при составлении алгоритма необходимо учитывать возрастающим или убывающим является проверяемый массив, что оказывает влияние на то как удобнее обрабатывать массив с начала или с конца. В общем, случаи алгоритм обработки упорядоченного массива имеет следующий вид – Рис.3.
| |
(а) | (б) |
Рис. 3. Графический алгоритм обработки упорядоченного массива с перебором с начала (а), с конца (б)
Как видно из блок–схемы, дополнительное условие управляет досрочным выходом из цикла. Пока дополнительное условие истина и не конец массива i, цикл выполняется, как только одно из условий будет не выполнено происходит выход из цикла.
Пример 1. В возрастающем одномерном массиве X с количеством элементов n, определить есть ли число равное A и на какой позиции оно находится, если числа A нет определить место, на котором оно должно находиться чтобы не нарушить упорядоченность массива.
Решение
В данной задаче обработку массива будем проводить сначала. Выход из цикла по дополнительному условию будет выполнен, если в массиве найден элемент больший, либо равный A (k=1). Для индикации наличия в массиве элемента равного A, введем вспомогательную переменную f с начальным значением f=0. При обнаружении элемента A, переменная f=1. Для определения номера позиции числа A в массиве введем дополнительную переменную poz с начальным значением n, т.е. предполагая, что все элементы массива меньше A. При обнаружении в массиве числа большего или равного A в переменной poz сохраняется его индекс – i. После выхода из цикла, по значению переменной f определяется наличие и место переменной A в массиве.
Описанный алгоритм поиска и программа представлены на Рис. 4.
Используемые переменные: n – число элементов массива; a[] – статический массив; k – переменная для досрочного выхода из цикла при нахождении элемента большего или равного a; f – вспомогательная переменная для индикации наличия в массиве числа равного a; poz – номер элемента массива на котором должно находится число a; i – параметр цикла; | #include main() { int f, k, n, poz, i, x[10], a; puts("Введите число элементов массива:"); scanf("%d",&n); for(i=0;i { printf("x[%2d]=",i); scanf("%d",&x[i]); } puts("Введите число a:"); scanf("%d",&a); f=0; poz=n; k=0; for(i=0;i { if(x[i]a) { poz=i;k=1;} else { if(x[i]==a) {poz=i; f=1; k=1;} } } if(f==1) printf("В массиве есть число =%d, на позиции-%d\n", a, poz); else printf("Число %d должно находиться на позиции-%d\n" ,a, poz); for(i=0;i printf("x[%d]=%d\n",i,x[i]); return 0; } |
Рис. 4. Графический алгоритм и программа для примера 1
Описанный алгоритм можно дополнить предварительным сравнением последнего элемента массива X[n-1] с числом A, если X[n-1]=A – то заданное число находится на последнем месте, а в случаи выполнения X[n-1]A – то, число A должно находится в массиве на позиции n. Если ни одно из этих условий не выполнено, то это означает что необходимо выполнить поиск числа A в массиве.
1.3. Поиск минимального и максимального элемента массива и его порядкового номера (индекса).
Пусть требуется найти минимальный элемент (min) и его индекс (n_min) во всем массиве (in=0 и ik=n) или какой-то его части (с in – го по ik – ый), в этом случаи алгоритм решения задачи можно записать так:
в качестве начального значения переменной min выберем любой из рассматриваемых элементов (обычно выбирают первый). Тогда min=ain, n_min= in;
затем в цикле по параметру i начиная со следующего элемента (i=in+1, …, ik) будем сравнивать элементы массива ai текущим минимальным min. Если окажется, что текущий (i – ый) элемент массива меньше минимального (ai ), то переменная min принимает значение ai, а n_min – на i: min=ai, n_min= i.
Графическая схема алгоритма и фрагмент программы поиска минимального элемента в массиве приведены на Рис. 5.
| min=a[in]; n_min=in; for(i=in+1; i if(a[i] { min=a[i]; n_min=i; } |
Рис. 5. Графический алгоритм и фрагмент программы поиска минимального элемента в массиве
Заметим, что при наличии в массиве нескольких минимальных элементов, найден, будет первый из них (самый левый минимальный элемент) при просмотре массива слева направо. Если в неравенстве ai знак поменять на знак ≥, то будет найден последний из них (самый правый минимальный элемент).
Для поиска максимального элемента max и его индекса n_max используется аналогичный алгоритм, в котором сначала надо принять max =ain, n_ max = in, вместо неравенства ai используется неравенство ai max. В случаи выполнения условия ai max записать в max =ai и в n_ max = i.
Для поиска в массиве экстремума можно не использовать вспомогательную переменную min (max). В этом случаи минимальный элемент массива определяется только по его индексу n_min (n_max) (Рис. 6).
| /*поиск минимального элемента*/ n_min=in; for(i=in+1; i if(a[i] n_min=i; /*поиск максимального элемента*/ n_max=in; for(i=in+1; i if(a[i]a[n_max]) n_max=i; |
Рис. 6. Графический алгоритм и фрагмент программы поиска минимального элемента в массиве по его индексу
Примечание. Условия, которые часто используют при поиске элементов в массиве.
2. Закрепление нового материала. Практическая часть
Задача 1. Определить максимальный элемент массива из 7 случайных целых чисел от 0 до 50. Составить блок-схему алгоритма.
Для этого рассмотрим алгоритм поиска максимального элемента. Максимальный элемент будем хранить в переменной max, а его индекс - в переменной k. Предположим, что максимальный элемент массива - первый max:=A[i], k=1. Для нахождения максимального элемента, нам теперь необходимо последовательно сравнивать все элементы A[i] со значением max, начиная со второго. Для этого организуем цикл for с параметром i, который будет уже меняться от 2 до 7. На каждом цикле будет проверяться условие A[i]max. Когда же это условие будет выполняться, то значение этого элемента примем в качестве максимального max:=A[i], индекс же теперь будет k:=i.
Задача 2. Найти номер и время победителя соревнований по бегу, в котором участвовало 12 спортсменов. Результаты забегов вводятся с клавиатуры. Составить блок-схему алгоритма.
Как и в прошлой задаче, предположим, что минимальное время показал участник под номером 1. Также присвоим переменной k его индекс k:=1. Зададим в цикле условие поиска индексе участника с минимальным временем.
Задача 3. Написать программу, на языке программирования Паскаль, которая находит минимальный рост учащихся нашей подгруппы, массив данных о росте вводится с клавиатуры.
Задача 4. В массиве хранится средний балл за первый семестр 12 студентов группы: 4.9, 4.6, 5.0, 4.8, 4.3, 4.5, 4.3, 3.6, 4.1, 3.3, 4.0, 4.4. Составить программу на языке программирования Паскаль, которая определяет, есть ли в группе студенты, средний балл которых меньше 4,5. Массив данных о среднем балле задается в виде действительных констант.
Вопросы и задания
Как записывается массив в языке Pascal ABC?
Что такое размер массива? Максимально возможное количество элементов.
Как записать массив из 8 константных значений?
Как присвоить значения элементу массива?
А как какие процедуры позволяют вам ввести значения с клавиатуры?
Как на языке программирования будут выглядеть логическое выражение, указывающее на положительные элементы массива?
ДОМАШНЕЕ ЗАДАНИЕ
Изучить материал занятия, составить конспект.
Ответить на вопросы и выполнить Задача 1.. 4
Сделать вывод о проделанной практической работе.
Перечень рекомендуемых учебных изданий, Интернет-ресурсов, дополнительной литературы.
Основные источники:
Информатика. 10 класс : учебник для общеобразоват. организаций: базовый и углубленный уровни / [А.Г.Гейн , А.Б Ливчак, А.И. Сенокосов, Н.А. Юнерман]. – 4-е изд. – М. : Просвещение, 2018. – 272 с. : ил. – ISBN 978-5-09-058130-1
Информатика. 11 класс : учебник для общеобразоват. организаций: базовый и углубленный уровни / [А.Г.Гейн, А.И. Сенокосов]. – 6-е изд. – М. : Просвещение, 2019. – 336 с. : ил. – ISBN 978-5-09-072326-8.
Электронные источники:
Зимин, В. П. Информатика. Лабораторный практикум в 2 ч. Часть 1 : учебное пособие для среднего профессионального образования / В. П. Зимин. — 2-е изд., испр. и доп. — Москва : Издательство Юрайт, 2023. — 126 с. — (Профессиональное образование). — ISBN 978-5-534-11851-3. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/514893
Зимин, В. П. Информатика. Лабораторный практикум в 2 ч. Часть 2 : учебное пособие для среднего профессионального образования / В. П. Зимин. — 2-е изд. — Москва : Издательство Юрайт, 2023. — 153 с. — (Профессиональное образование). — ISBN 978-5-534-11854-4. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/514918
Мойзес, О. Е. Информатика. Углубленный курс : учебное пособие для среднего профессионального образования / О. Е. Мойзес, Е. А. Кузьменко. — Москва: Издательство Юрайт, 2020. — 164 с. — (Профессиональное образование). — ISBN 978-5-534-07980-7. — Текст : электронный // ЭБС Юрайт [сайт]. — URL: https://urait.ru/bcode/455803 .
Советов, Б. Я. Информационные технологии : учебник для среднего профессионального образования / Б. Я. Советов, В. В. Цехановский. — 7-е изд., перераб. и доп. — Москва : Издательство Юрайт, 2020. — 327 с. — (Профессиональное образование). — ISBN 978-5-534-06399-8. — Текст: электронный // ЭБС Юрайт [сайт]. — URL: https://urait.ru/bcode/450686 .
Новожилов, О. П. Информатика в 2 ч. Часть 1 : учебник для среднего профессионального образования / О. П. Новожилов. — 3-е изд., перераб. и доп. — Москва: Издательство Юрайт, 2020. — 320 с. — (Профессиональное образование). — ISBN 978-5-534-06372-1. — Текст : электронный // ЭБС Юрайт [сайт]. — URL: https://urait.ru/bcode/448995 .
Новожилов, О. П. Информатика в 2 ч. Часть 2 : учебник для среднего профессионального образования / О. П. Новожилов. — 3-е изд., перераб. и доп. — Москва: Издательство Юрайт, 2020. — 302 с. — (Профессиональное образование). — ISBN 978-5-534-06374-5. — Текст : электронный // ЭБС Юрайт [сайт]. — URL: https://urait.ru/bcode/448996
Гаврилов, М. В. Информатика и информационные технологии : учебник для среднего профессионального образования / М. В. Гаврилов, В. А. Климов. — 4-е изд., перераб. и доп. — Москва: Издательство Юрайт, 2020. — 383 с. — (Профессиональное образование). — ISBN 978-5-534-03051-8. — Текст: электронный // ЭБС Юрайт [сайт]. — URL: https://urait.ru/bcode/449286
Дополнительные источники:
Филимонова, Е. В. Информатика и информационные технологии в профессиональной деятельности: учебник / Е. В. Филимонова. – Москва: Юстиция, 2019. – 213 с. – (Среднее профессиональное образование). - ISBN 978-5-4365-2703-1.
Цветкова М.С., Информатика. Практикум для профессий и специальностей естественно-научного и гуманитарного профилей: : учеб. пособие для студентов учреждений сред. проф. образования / М.С. Цветкова, И.Ю. Хлобыстова. - 5-е изд., стер. - М. : Издательский центр "Академия", 2019. - 240 с. ISBN 978-5-4468-7901-4
Электронные источники:
Гаврилов, М. В. Информатика и информационные технологии : учебник для среднего профессионального образования / М. В. Гаврилов, В. А. Климов. — 4-е изд., перераб. и доп. — Москва : Издательство Юрайт, 2021. — 383 с. — (Профессиональное образование). — ISBN 978-5-534-03051-8. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/469424
Акопов, А. С. Компьютерное моделирование : учебник и практикум для среднего профессионального образования / А. С. Акопов. — Москва : Издательство Юрайт, 2023. — 389 с. — (Профессиональное образование). — ISBN 978-5-534-10712-8. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/517999
Демин, А. Ю. Информатика. Лабораторный практикум : учебное пособие для среднего профессионального образования / А. Ю. Демин, В. А. Дорофеев. — Москва : Издательство Юрайт, 2023. — 133 с. — (Профессиональное образование). — ISBN 978-5-534-07984-5. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/516857
Преподаватель: Владимир Александрович Волков