|
|
(3 промежуточные версии не показаны) | Строка 1: |
Строка 1: |
| + | <metakeywords>Информатика, класc, урок, на тему, 9 класc, Информатика 9 класс, Дополнение к главе 6, блок-схемы, электронная таблица, алгоритм, программа</metakeywords> |
| + | |
| '''[[Гипермаркет знаний - первый в мире!|Гипермаркет знаний]]>>[[Информатика|Информатика]]>>[[Информатика 9 класс|Информатика 9 класс]]>>Информатика: Информатика 9 класс. Дополнение к главе 6''' | | '''[[Гипермаркет знаний - первый в мире!|Гипермаркет знаний]]>>[[Информатика|Информатика]]>>[[Информатика 9 класс|Информатика 9 класс]]>>Информатика: Информатика 9 класс. Дополнение к главе 6''' |
| | | |
- | <br> | + | <br> <br> |
| | | |
- | <metakeywords>Информатика, класc, урок, на тему, 9 класc, Информатика 9 класс. Дополнение к главе 6.</metakeywords>ИНФОРМАТИКА 9 КЛАСС. ДОПОЛНЕНИЕ К ГЛАВЕ 6<br>
| + | '''Дополнение к главе 6''' |
| + | |
| + | '''6.1. Поиск наибольшего и наименьшего элементов массива''' |
| | | |
| <br> | | <br> |
- |
| |
- | ДОПОЛНЕНИЕ К ГЛАВЕ 6
| |
- |
| |
- | <u>6.1. Поиск наибольшего и наименьшего элементов массива</u>
| |
| | | |
| Основные темы параграфа: | | Основные темы параграфа: |
| | | |
- | ♦ поиск максимума и минимума в электронной таблице; <br>♦ блок-схемы алгоритмов поиска максимума и минимума в массиве; <br>♦ программа на Паскале поиска максимума и минимума в массиве. | + | ♦ поиск максимума и минимума в электронной таблице; <br>♦ '''[[Цикли. Блок–схеми алгоритмів з циклами|блок-схемы]]''' алгоритмов поиска максимума и минимума в массиве; <br>♦ программа на Паскале поиска максимума и минимума в массиве. |
| | | |
- | ''Поиск максимума и минимума в электронной таблице'' | + | <br> |
| + | |
| + | '''Поиск максимума и минимума в электронной таблице''' |
| | | |
| Одной из типовых задач обработки массивов является поиск наибольшего или наименьшего значения среди значений его элементов. Построим алгоритм решения этой задачи и составим программу на Паскале. Для примера возьмем итоговые данные чемпионата России по футболу в премьер-лиге за 2003 год. | | Одной из типовых задач обработки массивов является поиск наибольшего или наименьшего значения среди значений его элементов. Построим алгоритм решения этой задачи и составим программу на Паскале. Для примера возьмем итоговые данные чемпионата России по футболу в премьер-лиге за 2003 год. |
| | | |
- | На рис. 6.12 показана электронная таблица с итогами чемпионата. В столбце А расположены названия команд, в столбце В — количество очков, набранных каждой командой. Команды перечислены в алфавитном порядке. Победителем является команда, набравшая наибольшее количество очков. Команда, набравшая очков меньше всех других, в следующем сезоне покидает премьер-лигу. | + | На рис. 6.12 показана '''[[Что такое электронная таблица|электронная таблица]]''' с итогами чемпионата. В столбце А расположены названия команд, в столбце В — количество очков, набранных каждой командой. Команды перечислены в алфавитном порядке. Победителем является команда, набравшая наибольшее количество очков. Команда, набравшая очков меньше всех других, в следующем сезоне покидает премьер-лигу. |
| | | |
| Для определения максимального значения в электронной таблице существует функция МАКС( ), а для нахождения минимального значения — функция МИН( ). В ячейке В17 записана формула МАКС(В1:В16), а в ячейке В18 — формула МИН(В1:В16). Результаты вы видите в таблице. Отсюда делаем вывод: чемпионом России стала команда ЦСКА, а на последнем месте — Черноморец. | | Для определения максимального значения в электронной таблице существует функция МАКС( ), а для нахождения минимального значения — функция МИН( ). В ячейке В17 записана формула МАКС(В1:В16), а в ячейке В18 — формула МИН(В1:В16). Результаты вы видите в таблице. Отсюда делаем вывод: чемпионом России стала команда ЦСКА, а на последнем месте — Черноморец. |
| | | |
- | ''Блок-схемы алгоритмов поиска максимума и минимума'' | + | <br> |
| + | |
| + | '''Блок-схемы алгоритмов поиска максимума и минимума''' |
| | | |
| Разберемся, как же программируется определение максимального и минимального значения в числовом массиве. | | Разберемся, как же программируется определение максимального и минимального значения в числовом массиве. |
| | | |
- | Начнем с поиска максимума. Опишем алгоритм на Алгоритмическом языке. | + | Начнем с поиска максимума. Опишем '''[[Что такое алгоритм|алгоритм]]''' на Алгоритмическом языке. |
| | | |
- | [[Image:Informatika 9 330k.jpg]]<br> | + | <br> |
| + | |
| + | [[Image:Informatika 9 330k.jpg|240px|Алгоритм на Алгоритмическом языке]]<br> |
| + | |
| + | <br> |
| | | |
| Пусть в целочисленный массив В[1:16] заносятся очки команд в том порядке, в каком они расположены в таблице на рис. 6.12. Максимальное количество очков получим в переменной МахВ. Кроме того, найдем еще и номер команды, занявшей первое место. Для этого будет использоваться переменная Nmax. | | Пусть в целочисленный массив В[1:16] заносятся очки команд в том порядке, в каком они расположены в таблице на рис. 6.12. Максимальное количество очков получим в переменной МахВ. Кроме того, найдем еще и номер команды, занявшей первое место. Для этого будет использоваться переменная Nmax. |
Строка 35: |
Строка 43: |
| Рассмотрим алгоритм решения задачи. Ниже приведен полный алгоритм на Алгоритмическом языке, а на рис. 6.13 — фрагмент блок-схемы, относящийся только к выбору максимального элемента (без ввода и вывода). | | Рассмотрим алгоритм решения задачи. Ниже приведен полный алгоритм на Алгоритмическом языке, а на рис. 6.13 — фрагмент блок-схемы, относящийся только к выбору максимального элемента (без ввода и вывода). |
| | | |
- | [[Image:Informatika 9 330 1e.jpg]]<br>
| + | <br> |
| | | |
- | [[Image:Informatika 9 330 2m.jpg]]<br> | + | [[Image:Informatika 9 330 1e.jpg|320px|Алгоритм решения задачи]]<br> |
| + | |
| + | [[Image:Informatika 9 330 2m.jpg|420px|Алгоритм решения задачи]]<br> |
| + | |
| + | <br> |
| | | |
| Идея алгоритма состоит в следующем. В переменную МахВ заносится значение первого элемента массива, в переменную Nmax — единица, т. е. номер первого элемента. Затем в цикле последовательно с МахВ сравниваются все остальные элементы массива В. Если очередной элемент оказывается больше текущего значения МахВ, то его значение заносится в МахВ, а его номер — в Nmах. Когда закончится цикл, в МахВ останется наибольшее число из всего массива, а в Nmах — его номер. | | Идея алгоритма состоит в следующем. В переменную МахВ заносится значение первого элемента массива, в переменную Nmax — единица, т. е. номер первого элемента. Затем в цикле последовательно с МахВ сравниваются все остальные элементы массива В. Если очередной элемент оказывается больше текущего значения МахВ, то его значение заносится в МахВ, а его номер — в Nmах. Когда закончится цикл, в МахВ останется наибольшее число из всего массива, а в Nmах — его номер. |
| | | |
- | [[Image:Informatika 9 331z.jpg]]<br> | + | [[Image:Informatika 9 331z.jpg|320px|Алгоритм решения задачи]]<br> |
| | | |
- | Теперь нетрудно догадаться, как искать минимальное значение в массиве и его номер. Если для этого использовать в программе переменные МinВ и Nmin и в условии ветвления заменить знак отношения «больше» на «меньше», то получим нужный алгоритм. Он показан блок-схемой на рис. 6.14. | + | Теперь нетрудно догадаться, как искать минимальное значение в массиве и его номер. Если для этого использовать в '''[[Програми браузери. Повні уроки|программе]]''' переменные МinВ и Nmin и в условии ветвления заменить знак отношения «больше» на «меньше», то получим нужный алгоритм. Он показан блок-схемой на рис. 6.14. |
| | | |
- | [[Image:Informatika 9 332z.jpg]]<br> | + | [[Image:Informatika 9 332z.jpg|320px|Блок-схема]]<br> |
| | | |
- | Если в алгоритме нужно одновременно искать максимальное и минимальное значения, то соответствующие ветвления можно объединить в одном цикле. Именно так сделано в приведенной ниже программе на Паскале. | + | Если в алгоритме нужно одновременно искать максимальное и минимальное значения, то соответствующие ветвления можно объединить в одном цикле. Именно так сделано в приведенной ниже [http://xvatit.com/it/fishki-ot-itshki/ '''программе'''] на Паскале. |
| | | |
- | ''Программа на Паскале поиска максимума и минимума в массиве'' | + | <br> |
| + | |
| + | '''Программа на Паскале поиска максимума и минимума в массиве''' |
| | | |
| Составим программу на Паскале. Но в эту программу мы внесем еще некоторые новые детали. Хотелось бы в итоге работы программы получить не номера, а названия команды-победителя и команды, занявшей последнее место. Но для этого названия всех команд чемпионата должны быть организованы в массив и введены как исходные данные. В программе такой массив назван Теаm[1. . 16] и тип его элементов объявлен как string. | | Составим программу на Паскале. Но в эту программу мы внесем еще некоторые новые детали. Хотелось бы в итоге работы программы получить не номера, а названия команды-победителя и команды, занявшей последнее место. Но для этого названия всех команд чемпионата должны быть организованы в массив и введены как исходные данные. В программе такой массив назван Теаm[1. . 16] и тип его элементов объявлен как string. |
Строка 55: |
Строка 69: |
| String — это строковый тип данных Паскаля. Величина такого типа может принимать значение, представляющее собой произвольную символьную последовательность (в том числе и из русских букв), длина которой не должна превышать 255. Для названий команд это вполне подходящие условия. | | String — это строковый тип данных Паскаля. Величина такого типа может принимать значение, представляющее собой произвольную символьную последовательность (в том числе и из русских букв), длина которой не должна превышать 255. Для названий команд это вполне подходящие условия. |
| | | |
- | [[Image:Informatika 9 333e.jpg]]<br> | + | <br> |
| + | |
| + | [[Image:Informatika 9 333e.jpg|380px|Программа]]<br> |
| | | |
| Обратите внимание на то, как определяется название команды-победителя и команды, занявшей последнее место. Это делается по значениям индексов максимального и минимального элементов массива В: Nmах и Nmin. В переменной Теаm[Nmах] находится название чемпиона, а в переменной Теаm[Nmin] — название последней команды в чемпионате. | | Обратите внимание на то, как определяется название команды-победителя и команды, занявшей последнее место. Это делается по значениям индексов максимального и минимального элементов массива В: Nmах и Nmin. В переменной Теаm[Nmах] находится название чемпиона, а в переменной Теаm[Nmin] — название последней команды в чемпионате. |
Строка 61: |
Строка 77: |
| При выполнении программы на экране будет отражено следующее: | | При выполнении программы на экране будет отражено следующее: |
| | | |
- | [[Image:Informatika 9 334.jpg]]<br> | + | <br> |
| + | |
| + | [[Image:Informatika 9 334.jpg|380px|Программа]]<br> |
| + | |
| + | <br> |
| | | |
- | <u>''Коротко о главном''</u>
| + | '''Коротко о главном''' |
| | | |
| Алгоритм выбора максимального (минимального) значения в массиве имеет структуру цикла с вложенным неполным ветвлением. | | Алгоритм выбора максимального (минимального) значения в массиве имеет структуру цикла с вложенным неполным ветвлением. |
Строка 69: |
Строка 89: |
| Для обработки последовательностей символов в Паскале имеется строковый тип данных: string. | | Для обработки последовательностей символов в Паскале имеется строковый тип данных: string. |
| | | |
- | <u>''Вопросы и задания''</u> | + | <br> |
| | | |
- | 1. Придумайте собственные примеры данных, которые можно было бы представить в виде строкового массива.<br>2. Представьте себе, что две команды набрали 59 очков. Например, ЦСКА и ЗЕНИТ. Номер какой команды был бы выведен в качестве результата?<br>3. При условии предыдущего задания определите, какие будут выведены результаты, если в операторе ветвления, где отбирается максимальное значение, заменить знак отношения «>» на «>=»?<br>4. Введите в компьютер программу Рremier-liga. Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе.<br>5. По условиям чемпионата 2003 года из премьер-лиги выбывают две последние в турнирной таблице команды. Составьте программу, определяющую обе команды, выбывающие из премьер-лиги.
| + | '''Вопросы и задания''' |
| | | |
- | <br> | + | ''1. Придумайте собственные примеры данных, которые можно было бы представить в виде строкового массива.<br>2. Представьте себе, что две команды набрали 59 очков. Например, ЦСКА и ЗЕНИТ. Номер какой команды был бы выведен в качестве результата?<br>3. При условии предыдущего задания определите, какие будут выведены результаты, если в операторе ветвления, где отбирается максимальное значение, заменить знак отношения «>» на «>=»?<br>4. Введите в [http://xvatit.com/it '''компьютер'''] программу Рremier-liga. Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе.<br>5. По условиям чемпионата 2003 года из премьер-лиги выбывают две последние в турнирной таблице команды. Составьте программу, определяющую обе команды, выбывающие из премьер-лиги.''<br> |
| | | |
- | <u><br>6.2. Сортировка массива</u> | + | <u><br></u>'''6.2. Сортировка массива''' |
| | | |
| Основные темы параграфа: | | Основные темы параграфа: |
Строка 83: |
Строка 103: |
| Известно, что данные в электронной таблице можно сортировать по возрастанию или убыванию значений в столбцах. Для задачи с таблицей футбольного чемпионата естественным действием была бы сортировка по убыванию значений набранных очков. Тогда вверху таблицы останется победитель чемпионата, а в нижней строчке — команда, занявшая последнее место. На рис. 6.15 показана такая отсортированная таблица. Из нее мы получаем исчерпывающую информацию об итогах чемпионата: кто какое место занял. | | Известно, что данные в электронной таблице можно сортировать по возрастанию или убыванию значений в столбцах. Для задачи с таблицей футбольного чемпионата естественным действием была бы сортировка по убыванию значений набранных очков. Тогда вверху таблицы останется победитель чемпионата, а в нижней строчке — команда, занявшая последнее место. На рис. 6.15 показана такая отсортированная таблица. Из нее мы получаем исчерпывающую информацию об итогах чемпионата: кто какое место занял. |
| | | |
- | [[Image:Informatika_9_335z.jpg]]<br> | + | [[Image:Informatika 9 335z.jpg|240px|Отсортированная таблица]]<br> |
| | | |
- | ''Алгоритм сортировки методом пузырька'' | + | <br> '''Алгоритм сортировки методом пузырька''' |
| | | |
| Рассмотрим, как программируется сортировка массива. Для решения этой задачи существует целый класс алгоритмов. Мы рассмотрим здесь только один из них, известный под названием «метод пузырька». Откуда такое название, станет ясно немного позже. | | Рассмотрим, как программируется сортировка массива. Для решения этой задачи существует целый класс алгоритмов. Мы рассмотрим здесь только один из них, известный под названием «метод пузырька». Откуда такое название, станет ясно немного позже. |
Строка 93: |
Строка 113: |
| Первый этап (первый проход). Последовательно сравниваются пары соседних чисел и упорядочиваются по убыванию. Сначала сравниваются B[1] и В[2]. Поскольку на втором месте должно стоять меньшее число, то числа меняются местами. B[1] становится равным 3, В[2] — равным 1. Затем упорядочиваются B[2] и B[3]. Их значения тоже переставляются: В[2]=2, В[3]=1. Затем упорядочиваются B[3] и B[4]. И наконец, B[4] и B[5]. В результате первого прохода минимальное число попадает на свое место: В[5]=1. | | Первый этап (первый проход). Последовательно сравниваются пары соседних чисел и упорядочиваются по убыванию. Сначала сравниваются B[1] и В[2]. Поскольку на втором месте должно стоять меньшее число, то числа меняются местами. B[1] становится равным 3, В[2] — равным 1. Затем упорядочиваются B[2] и B[3]. Их значения тоже переставляются: В[2]=2, В[3]=1. Затем упорядочиваются B[3] и B[4]. И наконец, B[4] и B[5]. В результате первого прохода минимальное число попадает на свое место: В[5]=1. |
| | | |
- | [[Image:Informatika 9 336z.jpg]]<br> | + | [[Image:Informatika 9 336z.jpg|480px|Иллюстрация метода пузырька]]<br> |
| | | |
| Алгоритм первого прохода можно описать так: | | Алгоритм первого прохода можно описать так: |
| | | |
- | [[Image:Informatika 9 336 1.jpg]] | + | [[Image:Informatika 9 336 1.jpg|380px|Алгоритм]] |
| | | |
| Обмен значениями В[I] и В[I+1] происходит через третью переменную X. Вот теперь можно понять смысл образа пузырька! В результате прохода минимальное значение «всплывает» в конец массива, как воздушный пузырек в воде всплывает на поверхность, подталкиваемый архимедовой силой. | | Обмен значениями В[I] и В[I+1] происходит через третью переменную X. Вот теперь можно понять смысл образа пузырька! В результате прохода минимальное значение «всплывает» в конец массива, как воздушный пузырек в воде всплывает на поверхность, подталкиваемый архимедовой силой. |
Строка 107: |
Строка 127: |
| Вот полный алгоритм сортировки массива В[1:16]: | | Вот полный алгоритм сортировки массива В[1:16]: |
| | | |
- | [[Image:Informatika 9 337v.jpg]]<br> | + | <br> |
| + | |
| + | [[Image:Informatika 9 337v.jpg|380px|Алгоритм сортировки массива]]<br> |
| | | |
| Здесь переменная К играет роль номера прохода. Для массива длиной 16 такие проходы требуется повторить 15 раз. Длина каждого К-го прохода равна 16—К. | | Здесь переменная К играет роль номера прохода. Для массива длиной 16 такие проходы требуется повторить 15 раз. Длина каждого К-го прохода равна 16—К. |
| | | |
- | ''Программа на Паскале сортировки методом пузырька'' | + | <br> |
| + | |
| + | '''Программа на Паскале сортировки методом пузырька''' |
| | | |
| Теперь запишем программу на Паскале. Но мы ее немного усложним по сравнению с построенным алгоритмом. По условию исходной задачи нам нужно получить список команд в порядке занятых ими мест и число очков, полученных каждой команды. Следовательно, сортировать нужно не только массив В, но и массив Team. Делается это очень просто: в массиве Теаm параллельно с массивом В производятся те же самые перестановки. В конце работы программы на экран выводятся одновременно элементы обоих отсортированных массивов. | | Теперь запишем программу на Паскале. Но мы ее немного усложним по сравнению с построенным алгоритмом. По условию исходной задачи нам нужно получить список команд в порядке занятых ими мест и число очков, полученных каждой команды. Следовательно, сортировать нужно не только массив В, но и массив Team. Делается это очень просто: в массиве Теаm параллельно с массивом В производятся те же самые перестановки. В конце работы программы на экран выводятся одновременно элементы обоих отсортированных массивов. |
| | | |
- | [[Image:Informatika 9 338.jpg]] | + | [[Image:Informatika 9 338.jpg|380px|Элементы отсортированных массивов]] |
| | | |
- | [[Image:Informatika 9 339.jpg]] | + | [[Image:Informatika 9 339.jpg|380px|Элементы отсортированных массивов]] |
| | | |
| Поясним новые средства Паскаля, которые применены в этой программе. Обмен значениями между элементами строкового массива Теаm, должен происходить через переменную строкового типа. Для этого в программе используется переменная St. | | Поясним новые средства Паскаля, которые применены в этой программе. Обмен значениями между элементами строкового массива Теаm, должен происходить через переменную строкового типа. Для этого в программе используется переменная St. |
Строка 135: |
Строка 159: |
| 14 ТОРПЕДО-МЕТАЛЛУРГ 29<br>15 УРАЛАН 28<br>16 ЧЕРНОМОРЕЦ 24 | | 14 ТОРПЕДО-МЕТАЛЛУРГ 29<br>15 УРАЛАН 28<br>16 ЧЕРНОМОРЕЦ 24 |
| | | |
- | <u>''Коротко о главном''</u> | + | <br> |
| + | |
| + | '''Коротко о главном''' |
| | | |
| Метод пузырька — алгоритм сортировки числового маcсива. | | Метод пузырька — алгоритм сортировки числового маcсива. |
Строка 145: |
Строка 171: |
| В Паскале существует операция присоединения строк. Ее знак — ''«+».'' | | В Паскале существует операция присоединения строк. Ее знак — ''«+».'' |
| | | |
- | <u>''Вопросы и задания''</u> | + | <br> '''Вопросы и задания''' |
| | | |
- | 1. Как пояснить название метода сортировки массива - «метод пузырька»?<br>2. Сколько проходов с перестановками элементов потребуется при сортировке массива из 100 чисел?<br>3. Введите в компьютер программу Ргemier-liga-2. Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе.<br>4. Внесите изменения в программу для того, чтобы получить список в обратном порядке (по возрастанию очков). Выполните программу.<br>5. Возможно, что массив окажется отсортированным до завершения всех проходов. В таком случае число повторений внешнего цикла можно сократить, и программа будет выполняться быстрее. Попробуйте усовершенствовать приведенную программу с учетом этого факта. Проверьте результат на тестах.<br>6. Если несколько команд набрали одинаковое количество очков, то места между ними распределяются по разнице забитых и пропущенных мячей: чем разница больше, тем место выше. Попробуйте усовершенствовать программу, учитывая это правило. Для этого в программу надо добавить массив с разницами мячей. Придумайте тест, на котором можно проверить работу программы.<br>7. Условие то же, что и в предыдущем задании. Но в качестве исходных данных вводится еще два массива: с числом забитых мячей и с числом пропущенных мячей каждой командой.''<br><br><br>''<u>6.3. О языках программирования и трансляторах</u> | + | ''1. Как пояснить название метода сортировки массива - «метод пузырька»?<br>2. Сколько проходов с перестановками элементов потребуется при сортировке массива из 100 чисел?<br>3. Введите в компьютер программу Ргemier-liga-2. Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе.<br>4. Внесите изменения в программу для того, чтобы получить список в обратном порядке (по возрастанию очков). Выполните программу.<br>5. Возможно, что массив окажется отсортированным до завершения всех проходов. В таком случае число повторений внешнего цикла можно сократить, и программа будет выполняться быстрее. Попробуйте усовершенствовать приведенную программу с учетом этого факта. Проверьте результат на тестах.<br>6. Если несколько команд набрали одинаковое количество очков, то места между ними распределяются по разнице забитых и пропущенных мячей: чем разница больше, тем место выше. Попробуйте усовершенствовать программу, учитывая это правило. Для этого в программу надо добавить массив с разницами мячей. Придумайте тест, на котором можно проверить работу программы.<br>7. Условие то же, что и в предыдущем задании. Но в качестве исходных данных вводится еще два массива: с числом забитых мячей и с числом пропущенных мячей каждой командой.''''<br><br><br>'''''<b>6.3. О языках программирования и трансляторах</b> |
| | | |
| Основные темы параграфа: | | Основные темы параграфа: |
Строка 153: |
Строка 179: |
| ♦ системы программирования;<br>♦ уровни языков программирования;<br>♦ трансляция и трансляторы;<br>♦ о двух способах трансляции;<br>♦ работа компилятора;<br>♦ работа интерпретатора. | | ♦ системы программирования;<br>♦ уровни языков программирования;<br>♦ трансляция и трансляторы;<br>♦ о двух способах трансляции;<br>♦ работа компилятора;<br>♦ работа интерпретатора. |
| | | |
- | ''Системы программирования'' | + | <br> |
| + | |
| + | '''Системы программирования''' |
| | | |
| «Родным» языком ЭВМ является язык машинных команд (ЯМК). Самые первые ламповые ЭВМ понимали только этот язык. В программах на ЯМК данные обозначаются их адресами в памяти машины, выполняемые операции — числовыми кодами. Программист сам должен заботиться о расположении в памяти ЭВМ команд программы и данных. | | «Родным» языком ЭВМ является язык машинных команд (ЯМК). Самые первые ламповые ЭВМ понимали только этот язык. В программах на ЯМК данные обозначаются их адресами в памяти машины, выполняемые операции — числовыми кодами. Программист сам должен заботиться о расположении в памяти ЭВМ команд программы и данных. |
Строка 167: |
Строка 195: |
| ''Системы программирования позволяют разрабатывать и исполнять на компьютере программы, написанные на языках более высокого уровня, чем язык машинных команд.'' | | ''Системы программирования позволяют разрабатывать и исполнять на компьютере программы, написанные на языках более высокого уровня, чем язык машинных команд.'' |
| | | |
- | ''Уровни языков программирования'' | + | <br> '''Уровни языков программирования''' |
| | | |
| Что понимается под уровнем языка? Понятие уровня языка программирования связано со степенью его удаленности от языка процессора компьютера и приближенности к естественному человеческому языку, к формальному языку предметной области (чаще всего — математики). Чем выше уровень, тем дальше язык от компьютера и ближе к человеку. Этот принцип схематически отражен на рис. 6.17. | | Что понимается под уровнем языка? Понятие уровня языка программирования связано со степенью его удаленности от языка процессора компьютера и приближенности к естественному человеческому языку, к формальному языку предметной области (чаще всего — математики). Чем выше уровень, тем дальше язык от компьютера и ближе к человеку. Этот принцип схематически отражен на рис. 6.17. |
| | | |
- | [[Image:Informatika 9 342c.jpg]]<br> | + | [[Image:Informatika 9 342c.jpg|320px|Уровни языков программирования]]<br> |
| | | |
| Язык машинных команд — это язык самого низкого уровня. Первые языки программирования, отличные от ЯМК, появились на машинах первого поколения, и назывались они автокодами. | | Язык машинных команд — это язык самого низкого уровня. Первые языки программирования, отличные от ЯМК, появились на машинах первого поколения, и назывались они автокодами. |
Строка 189: |
Строка 217: |
| Видно, как с повышением уровня языка повышается «понятность» команды (по-английски слово «АDD» означает «сложить»). Однако, чем понятнее язык для человека, тем непонятнее для процессора компьютера. Процессор понимает только ЯМК, это его «родной» язык. Человеку же легче писать программы на языках более высокого уровня. Как же быть? | | Видно, как с повышением уровня языка повышается «понятность» команды (по-английски слово «АDD» означает «сложить»). Однако, чем понятнее язык для человека, тем непонятнее для процессора компьютера. Процессор понимает только ЯМК, это его «родной» язык. Человеку же легче писать программы на языках более высокого уровня. Как же быть? |
| | | |
- | ''Трансляция и трансляторы'' | + | <br> |
| + | |
| + | '''Трансляция и трансляторы''' |
| | | |
| Как сделать так, чтобы человек мог писать программы на автокоде или Паскале, а компьютер мог исполнять эти программы? Ответ на поставленный вопрос такой же, как на вопрос «Как мне общаться с японцем, если я не знаю японского языка?». Нужен переводчик! По-английски «переводчик» — «translator». <br> | | Как сделать так, чтобы человек мог писать программы на автокоде или Паскале, а компьютер мог исполнять эти программы? Ответ на поставленный вопрос такой же, как на вопрос «Как мне общаться с японцем, если я не знаю японского языка?». Нужен переводчик! По-английски «переводчик» — «translator». <br> |
Строка 197: |
Строка 227: |
| Таким образом, компьютер сам производит перевод под управлением программы-транслятора. Процесс перевода программы на язык машинных команд называется трансляцией. Прежде чем выполнить, например, программу на Паскале, ее нужно оттранслировать. Трансляцию можно представить как спуск с верхней ступеньки языка на самую первую ступеньку — ЯМК (рис. 6.18). | | Таким образом, компьютер сам производит перевод под управлением программы-транслятора. Процесс перевода программы на язык машинных команд называется трансляцией. Прежде чем выполнить, например, программу на Паскале, ее нужно оттранслировать. Трансляцию можно представить как спуск с верхней ступеньки языка на самую первую ступеньку — ЯМК (рис. 6.18). |
| | | |
- | [[Image:Informatika 9 344s.jpg]]<br> | + | [[Image:Informatika 9 344s.jpg|380px|Трансляция с автокода и Паскаля на ЯМК]]<br> |
| | | |
| Транслятор является обязательным элементом любой системы программирования. Первые СП включали в себя только транслятор. Затем к транслятору стали добавляться различные сервисные средства: текстовые редакторы, отладчики, системы обслуживания программных библиотек, средства организации дружественного интерфейса с пользователем. | | Транслятор является обязательным элементом любой системы программирования. Первые СП включали в себя только транслятор. Затем к транслятору стали добавляться различные сервисные средства: текстовые редакторы, отладчики, системы обслуживания программных библиотек, средства организации дружественного интерфейса с пользователем. |
Строка 205: |
Строка 235: |
| Язык программирования, с которым работает СП, называется ее входным языком. Системы программирования именуются по названию своего входного языка. Например: «Система Бейсик», «Система Паскаль», «Система Фортран». Иногда в название систем включаются префиксы, обозначающие, например, ее фирменное происхождение. Очень популярны системы с приставкой «Турбо»: Турбо Паскаль, Турбо С и др. Это системы программирования, разработанные фирмой Borland. | | Язык программирования, с которым работает СП, называется ее входным языком. Системы программирования именуются по названию своего входного языка. Например: «Система Бейсик», «Система Паскаль», «Система Фортран». Иногда в название систем включаются префиксы, обозначающие, например, ее фирменное происхождение. Очень популярны системы с приставкой «Турбо»: Турбо Паскаль, Турбо С и др. Это системы программирования, разработанные фирмой Borland. |
| | | |
- | ''О двух способах трансляции'' | + | <br> |
| + | |
| + | '''<u>О двух способах трансляции</u>''' |
| | | |
| Реализовать тот или иной язык программирования на компьютере — это значит создать транслятор с этого языка для данного компьютера. Существуют два принципиально различных метода трансляции. Они называются «компиляция» и «интерпретация». | | Реализовать тот или иной язык программирования на компьютере — это значит создать транслятор с этого языка для данного компьютера. Существуют два принципиально различных метода трансляции. Они называются «компиляция» и «интерпретация». |
Строка 215: |
Строка 247: |
| Компиляция является аналогом полного предварительного перевода; интерпретация — аналог синхронного перевода. Транслятор, работающий по принципу компиляции, называется компилятором. Транслятор, работающий методом интерпретации, называется интерпретатором. | | Компиляция является аналогом полного предварительного перевода; интерпретация — аналог синхронного перевода. Транслятор, работающий по принципу компиляции, называется компилятором. Транслятор, работающий методом интерпретации, называется интерпретатором. |
| | | |
- | ''Работа компилятора'' | + | <br> |
| + | |
| + | '''<u>Работа компилятора</u>''' |
| | | |
| При компиляции в память компьютера загружается программа-компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. Компилятор производит синтаксический контроль программы и при обнаружении ошибок выводит диагностические сообщения. Если ошибок нет, то результатом компиляции является программа на языке машинных команд. | | При компиляции в память компьютера загружается программа-компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. Компилятор производит синтаксический контроль программы и при обнаружении ошибок выводит диагностические сообщения. Если ошибок нет, то результатом компиляции является программа на языке машинных команд. |
Строка 223: |
Строка 257: |
| На рис. 6.19 схематически показан процесс выполнения программы на ЯПВУ с использованием компиляции. Прямоугольниками изображены программы в машинных кодах, овалами — обрабатываемая и конечная информация. | | На рис. 6.19 схематически показан процесс выполнения программы на ЯПВУ с использованием компиляции. Прямоугольниками изображены программы в машинных кодах, овалами — обрабатываемая и конечная информация. |
| | | |
- | ''[[Image:Informatika 9 344 1.jpg]]'' | + | ''[[Image:Informatika 9 344 1.jpg|380px|Выполнение программы]]'' |
| | | |
| Конечно, компиляция с автокода-ассемблера много проще, чем с языков высокого уровня. Для этой процедуры часто применяют специальный термин — ассемблирование. А под словом «ассемблер» понимается не только язык программирования, но и транслятор с него. | | Конечно, компиляция с автокода-ассемблера много проще, чем с языков высокого уровня. Для этой процедуры часто применяют специальный термин — ассемблирование. А под словом «ассемблер» понимается не только язык программирования, но и транслятор с него. |
| | | |
- | ''Работа интерпретатора'' | + | |
| + | |
| + | '''''<u></u>''''' |
| + | |
| + | '''Работа интерпретатора<u></u>''' |
| | | |
| Интерпретатор в течение всего времени работы программы находится во внутренней памяти (иногда для этого используется ПЗУ). В ОЗУ помещается программа на ЯПВУ. Интерпретатор «читает» ее первый оператор, переводит его в машинные команды и тут же организует выполнение этих команд. Затем переходит к переводу и выполнению следующего оператора и так до конца программы. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одного и того же оператора в цикле он снова будет транслироваться. Перед трансляцией каждого оператора происходит его синтаксический анализ. | | Интерпретатор в течение всего времени работы программы находится во внутренней памяти (иногда для этого используется ПЗУ). В ОЗУ помещается программа на ЯПВУ. Интерпретатор «читает» ее первый оператор, переводит его в машинные команды и тут же организует выполнение этих команд. Затем переходит к переводу и выполнению следующего оператора и так до конца программы. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одного и того же оператора в цикле он снова будет транслироваться. Перед трансляцией каждого оператора происходит его синтаксический анализ. |
Строка 233: |
Строка 271: |
| На рис. 6.20 схематически показан процесс выполнения программы на ЯПВУ с использованием интерпретатора. | | На рис. 6.20 схематически показан процесс выполнения программы на ЯПВУ с использованием интерпретатора. |
| | | |
- | [[Image:Informatika 9 346z.jpg]]<br> | + | [[Image:Informatika 9 346z.jpg|380px|Выполнение программы]]<br> |
| | | |
| Таким образом, при компиляции трансляция и исполнение программы идут последовательно друг за другом. При интерпретации — параллельно. | | Таким образом, при компиляции трансляция и исполнение программы идут последовательно друг за другом. При интерпретации — параллельно. |
Строка 241: |
Строка 279: |
| Из-за указанных причин использование компиляторов удобнее для больших программ, требующих быстрого счета и большого объема памяти. Программы на Паскале, Си, Фортране всегда компилируются. Язык Бейсик часто реализуется через интерпретатор. | | Из-за указанных причин использование компиляторов удобнее для больших программ, требующих быстрого счета и большого объема памяти. Программы на Паскале, Си, Фортране всегда компилируются. Язык Бейсик часто реализуется через интерпретатор. |
| | | |
- | <u>''Коротко о главном''</u> | + | <br> |
| + | |
| + | '''Коротко о главном''' |
| | | |
| Для разработки программ управления компьютером программисты используют системы программирования (СП), | | Для разработки программ управления компьютером программисты используют системы программирования (СП), |
Строка 259: |
Строка 299: |
| Существуют два способа трансляции: компиляция и интерпретация. При компиляции сначала весь текст программы переводится на ЯМК, затем производится ее исполнение. При интерпретации перевод и исполнение происходят параллельно. | | Существуют два способа трансляции: компиляция и интерпретация. При компиляции сначала весь текст программы переводится на ЯМК, затем производится ее исполнение. При интерпретации перевод и исполнение происходят параллельно. |
| | | |
- | <u>''Вопросы и задания''</u> | + | <br> |
| | | |
- | 1. Что такое язык программирования?<br>2. Что обозначает понятие «уровень языка программирования»?<br>3. К какому уровню относятся языки типа «автокод-ассемблер»?<br>4. Почему языки программирования высокого уровня называют машинно-независимыми языками?<br>5. Какие из языков программирования высокого уровня вы знаете?<br>6. Что такое трансляция? Что такое транслятор?<br>7. В чем различие между компиляцией и интерпретацией?''<br><br>И. Семакин, Л. Залогова, С. Русаков, Л. Шестакова, Информатика, 9 класс<br>Отослано читателями из интернет-сайтов'' | + | '''Вопросы и задания''' |
| + | |
| + | ''1. Что такое язык программирования?<br>2. Что обозначает понятие «уровень языка программирования»?<br>3. К какому уровню относятся языки типа «автокод-ассемблер»?<br>4. Почему языки программирования высокого уровня называют машинно-независимыми языками?<br>5. Какие из языков программирования высокого уровня вы знаете?<br>6. Что такое трансляция? Что такое транслятор?<br>7. В чем различие между компиляцией и интерпретацией?''''<br>''''' |
| + | |
| + | ''<br>И. Семакин, Л. Залогова, С. Русаков, Л. Шестакова, Информатика, 9 класс<br>Отослано читателями из интернет-сайтов'' |
| | | |
| <br> <sub>Планы уроков [[Інформатика|информатики]], скачать тесты бесплатно, всё для учителя и школьника в подготовке к уроку [[Информатика 9 класс|по информатике 9 класс]], домашние задания, [[Гипермаркет знаний - первый в мире!|вопросы и ответы]]</sub> | | <br> <sub>Планы уроков [[Інформатика|информатики]], скачать тесты бесплатно, всё для учителя и школьника в подготовке к уроку [[Информатика 9 класс|по информатике 9 класс]], домашние задания, [[Гипермаркет знаний - первый в мире!|вопросы и ответы]]</sub> |
Строка 268: |
Строка 312: |
| | | |
| '''<u>Содержание урока</u>''' | | '''<u>Содержание урока</u>''' |
- | '''[[Image:1236084776 kr.jpg|10x10px]] конспект урока ''' | + | '''[[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] конспект урока ''' |
- | [[Image:1236084776 kr.jpg|10x10px]] опорный каркас | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] опорный каркас |
- | [[Image:1236084776 kr.jpg|10x10px]] презентация урока | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] презентация урока |
- | [[Image:1236084776 kr.jpg|10x10px]] акселеративные методы | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] акселеративные методы |
- | [[Image:1236084776 kr.jpg|10x10px]] интерактивные технологии | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] интерактивные технологии |
| | | |
| '''<u>Практика</u>''' | | '''<u>Практика</u>''' |
- | [[Image:1236084776 kr.jpg|10x10px]] задачи и упражнения | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] задачи и упражнения |
- | [[Image:1236084776 kr.jpg|10x10px]] самопроверка | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] самопроверка |
- | [[Image:1236084776 kr.jpg|10x10px]] практикумы, тренинги, кейсы, квесты | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] практикумы, тренинги, кейсы, квесты |
- | [[Image:1236084776 kr.jpg|10x10px]] домашние задания | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] домашние задания |
- | [[Image:1236084776 kr.jpg|10x10px]] дискуссионные вопросы | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] дискуссионные вопросы |
- | [[Image:1236084776 kr.jpg|10x10px]] риторические вопросы от учеников | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] риторические вопросы от учеников |
- |
| + | |
| '''<u>Иллюстрации</u>''' | | '''<u>Иллюстрации</u>''' |
- | '''[[Image:1236084776 kr.jpg|10x10px]] аудио-, видеоклипы и мультимедиа ''' | + | '''[[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] аудио-, видеоклипы и мультимедиа ''' |
- | [[Image:1236084776 kr.jpg|10x10px]] фотографии, картинки | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] фотографии, картинки |
- | [[Image:1236084776 kr.jpg|10x10px]] графики, таблицы, схемы | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] графики, таблицы, схемы |
- | [[Image:1236084776 kr.jpg|10x10px]] юмор, анекдоты, приколы, комиксы | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] юмор, анекдоты, приколы, комиксы |
- | [[Image:1236084776 kr.jpg|10x10px]] притчи, поговорки, кроссворды, цитаты | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] притчи, поговорки, кроссворды, цитаты |
| | | |
| '''<u>Дополнения</u>''' | | '''<u>Дополнения</u>''' |
- | '''[[Image:1236084776 kr.jpg|10x10px]] рефераты''' | + | '''[[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] рефераты''' |
- | [[Image:1236084776 kr.jpg|10x10px]] статьи | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] статьи |
- | [[Image:1236084776 kr.jpg|10x10px]] фишки для любознательных | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] фишки для любознательных |
- | [[Image:1236084776 kr.jpg|10x10px]] шпаргалки | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] шпаргалки |
- | [[Image:1236084776 kr.jpg|10x10px]] учебники основные и дополнительные | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] учебники основные и дополнительные |
- | [[Image:1236084776 kr.jpg|10x10px]] словарь терминов | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] словарь терминов |
- | [[Image:1236084776 kr.jpg|10x10px]] прочие | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] прочие |
| | | |
| <u>Совершенствование учебников и уроков | | <u>Совершенствование учебников и уроков |
- | </u>'''[[Image:1236084776 kr.jpg|10x10px]] исправление ошибок в учебнике''' | + | </u>'''[[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] исправление ошибок в учебнике''' |
- | [[Image:1236084776 kr.jpg|10x10px]] обновление фрагмента в учебнике | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] обновление фрагмента в учебнике |
- | [[Image:1236084776 kr.jpg|10x10px]] элементы новаторства на уроке | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] элементы новаторства на уроке |
- | [[Image:1236084776 kr.jpg|10x10px]] замена устаревших знаний новыми | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] замена устаревших знаний новыми |
- |
| + | |
| '''<u>Только для учителей</u>''' | | '''<u>Только для учителей</u>''' |
- | '''[[Image:1236084776 kr.jpg|10x10px]] идеальные уроки ''' | + | '''[[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] идеальные уроки ''' |
- | [[Image:1236084776 kr.jpg|10x10px]] календарный план на год | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] календарный план на год |
- | [[Image:1236084776 kr.jpg|10x10px]] методические рекомендации | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] методические рекомендации |
- | [[Image:1236084776 kr.jpg|10x10px]] программы | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] программы |
- | [[Image:1236084776 kr.jpg|10x10px]] обсуждения | + | [[Image:1236084776 kr.jpg|10x10px|1236084776 kr.jpg]] обсуждения |
| | | |
| | | |
Текущая версия на 12:48, 4 июля 2012
Гипермаркет знаний>>Информатика>>Информатика 9 класс>>Информатика: Информатика 9 класс. Дополнение к главе 6
Дополнение к главе 6
6.1. Поиск наибольшего и наименьшего элементов массива
Основные темы параграфа:
♦ поиск максимума и минимума в электронной таблице; ♦ блок-схемы алгоритмов поиска максимума и минимума в массиве; ♦ программа на Паскале поиска максимума и минимума в массиве.
Поиск максимума и минимума в электронной таблице
Одной из типовых задач обработки массивов является поиск наибольшего или наименьшего значения среди значений его элементов. Построим алгоритм решения этой задачи и составим программу на Паскале. Для примера возьмем итоговые данные чемпионата России по футболу в премьер-лиге за 2003 год.
На рис. 6.12 показана электронная таблица с итогами чемпионата. В столбце А расположены названия команд, в столбце В — количество очков, набранных каждой командой. Команды перечислены в алфавитном порядке. Победителем является команда, набравшая наибольшее количество очков. Команда, набравшая очков меньше всех других, в следующем сезоне покидает премьер-лигу.
Для определения максимального значения в электронной таблице существует функция МАКС( ), а для нахождения минимального значения — функция МИН( ). В ячейке В17 записана формула МАКС(В1:В16), а в ячейке В18 — формула МИН(В1:В16). Результаты вы видите в таблице. Отсюда делаем вывод: чемпионом России стала команда ЦСКА, а на последнем месте — Черноморец.
Блок-схемы алгоритмов поиска максимума и минимума
Разберемся, как же программируется определение максимального и минимального значения в числовом массиве.
Начнем с поиска максимума. Опишем алгоритм на Алгоритмическом языке.

Пусть в целочисленный массив В[1:16] заносятся очки команд в том порядке, в каком они расположены в таблице на рис. 6.12. Максимальное количество очков получим в переменной МахВ. Кроме того, найдем еще и номер команды, занявшей первое место. Для этого будет использоваться переменная Nmax.
Рассмотрим алгоритм решения задачи. Ниже приведен полный алгоритм на Алгоритмическом языке, а на рис. 6.13 — фрагмент блок-схемы, относящийся только к выбору максимального элемента (без ввода и вывода).


Идея алгоритма состоит в следующем. В переменную МахВ заносится значение первого элемента массива, в переменную Nmax — единица, т. е. номер первого элемента. Затем в цикле последовательно с МахВ сравниваются все остальные элементы массива В. Если очередной элемент оказывается больше текущего значения МахВ, то его значение заносится в МахВ, а его номер — в Nmах. Когда закончится цикл, в МахВ останется наибольшее число из всего массива, а в Nmах — его номер.

Теперь нетрудно догадаться, как искать минимальное значение в массиве и его номер. Если для этого использовать в программе переменные МinВ и Nmin и в условии ветвления заменить знак отношения «больше» на «меньше», то получим нужный алгоритм. Он показан блок-схемой на рис. 6.14.

Если в алгоритме нужно одновременно искать максимальное и минимальное значения, то соответствующие ветвления можно объединить в одном цикле. Именно так сделано в приведенной ниже программе на Паскале.
Программа на Паскале поиска максимума и минимума в массиве
Составим программу на Паскале. Но в эту программу мы внесем еще некоторые новые детали. Хотелось бы в итоге работы программы получить не номера, а названия команды-победителя и команды, занявшей последнее место. Но для этого названия всех команд чемпионата должны быть организованы в массив и введены как исходные данные. В программе такой массив назван Теаm[1. . 16] и тип его элементов объявлен как string.
String — это строковый тип данных Паскаля. Величина такого типа может принимать значение, представляющее собой произвольную символьную последовательность (в том числе и из русских букв), длина которой не должна превышать 255. Для названий команд это вполне подходящие условия.

Обратите внимание на то, как определяется название команды-победителя и команды, занявшей последнее место. Это делается по значениям индексов максимального и минимального элементов массива В: Nmах и Nmin. В переменной Теаm[Nmах] находится название чемпиона, а в переменной Теаm[Nmin] — название последней команды в чемпионате.
При выполнении программы на экране будет отражено следующее:

Коротко о главном
Алгоритм выбора максимального (минимального) значения в массиве имеет структуру цикла с вложенным неполным ветвлением.
Для обработки последовательностей символов в Паскале имеется строковый тип данных: string.
Вопросы и задания
1. Придумайте собственные примеры данных, которые можно было бы представить в виде строкового массива. 2. Представьте себе, что две команды набрали 59 очков. Например, ЦСКА и ЗЕНИТ. Номер какой команды был бы выведен в качестве результата? 3. При условии предыдущего задания определите, какие будут выведены результаты, если в операторе ветвления, где отбирается максимальное значение, заменить знак отношения «>» на «>=»? 4. Введите в компьютер программу Рremier-liga. Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе. 5. По условиям чемпионата 2003 года из премьер-лиги выбывают две последние в турнирной таблице команды. Составьте программу, определяющую обе команды, выбывающие из премьер-лиги.
6.2. Сортировка массива
Основные темы параграфа:
♦ алгоритм сортировки методом пузырька; ♦ программа на Паскале сортировки методом пузырька.
Известно, что данные в электронной таблице можно сортировать по возрастанию или убыванию значений в столбцах. Для задачи с таблицей футбольного чемпионата естественным действием была бы сортировка по убыванию значений набранных очков. Тогда вверху таблицы останется победитель чемпионата, а в нижней строчке — команда, занявшая последнее место. На рис. 6.15 показана такая отсортированная таблица. Из нее мы получаем исчерпывающую информацию об итогах чемпионата: кто какое место занял.

Алгоритм сортировки методом пузырька
Рассмотрим, как программируется сортировка массива. Для решения этой задачи существует целый класс алгоритмов. Мы рассмотрим здесь только один из них, известный под названием «метод пузырька». Откуда такое название, станет ясно немного позже.
Проиллюстрируем идею метода пузырька на маленьком массиве из пяти чисел. Пусть это будет массив В[1:5], исходные значения в котором распределены случайным образом (рис. 6.16). Требуется отсортировать числа по убыванию.
Первый этап (первый проход). Последовательно сравниваются пары соседних чисел и упорядочиваются по убыванию. Сначала сравниваются B[1] и В[2]. Поскольку на втором месте должно стоять меньшее число, то числа меняются местами. B[1] становится равным 3, В[2] — равным 1. Затем упорядочиваются B[2] и B[3]. Их значения тоже переставляются: В[2]=2, В[3]=1. Затем упорядочиваются B[3] и B[4]. И наконец, B[4] и B[5]. В результате первого прохода минимальное число попадает на свое место: В[5]=1.

Алгоритм первого прохода можно описать так:
Обмен значениями В[I] и В[I+1] происходит через третью переменную X. Вот теперь можно понять смысл образа пузырька! В результате прохода минимальное значение «всплывает» в конец массива, как воздушный пузырек в воде всплывает на поверхность, подталкиваемый архимедовой силой.
Далее нужно повторять такие проходы еще три раза. После второго прохода на своем месте окажется B[4], после третьего прохода — В[3]. После четвертого упорядочатся В[2] и В[1]. Нетрудно понять, что при втором проходе не надо трогать В[5], т.е. цикл должен повторяться для I от 1 до 3. При третьем проходе — от 1 до 2. И наконец, на четвертом проходе — от 1 до 1, т. е. всего 1 раз.
Следовательно, циклы, реализующие проходы, сами должны циклически повторяться. Причем, при каждом следующем повторении длина цикла должна уменьшаться на единицу. Отсюда вывод: структура алгоритма должна представлять собой два вложенных цикла.
Вот полный алгоритм сортировки массива В[1:16]:

Здесь переменная К играет роль номера прохода. Для массива длиной 16 такие проходы требуется повторить 15 раз. Длина каждого К-го прохода равна 16—К.
Программа на Паскале сортировки методом пузырька
Теперь запишем программу на Паскале. Но мы ее немного усложним по сравнению с построенным алгоритмом. По условию исходной задачи нам нужно получить список команд в порядке занятых ими мест и число очков, полученных каждой команды. Следовательно, сортировать нужно не только массив В, но и массив Team. Делается это очень просто: в массиве Теаm параллельно с массивом В производятся те же самые перестановки. В конце работы программы на экран выводятся одновременно элементы обоих отсортированных массивов.
Поясним новые средства Паскаля, которые применены в этой программе. Обмен значениями между элементами строкового массива Теаm, должен происходить через переменную строкового типа. Для этого в программе используется переменная St.
Вывод результатов на экран организован так, чтобы на экране номера мест, занятых командами, названия команд и набранные очки выводились в три ровных столбца. Названия разных команд имеют разную длину. Самое длинное название у команды ТОРПЕДО-МЕТАЛЛУРГ состоит из 17 символов. Для выравнивания длин строк каждое название дополняется пробелами до 18 символов. Число добавляемых пробелов вычисляется так:
18-length(Теат[I])
Здесь length( ) — это стандартная функция, вычисляющая длину строки (число символов), указанной в скобках. Например, для ЦСКА длина строки равна 4, а для ТОРПЕДО-МЕТАЛЛУРГ длина равна 17. Значит к ЦСКА добавится 14 пробелов, а к ТОРПЕДО-МЕТАЛЛУРГ — 1 пробел.
В операторе Теаm[I]:=Теаm[I]+;используется операция присоединения символов «+». В данном случае присоединяется пробел. К строке Теam[I] добавится столько пробелов, сколько раз повторится присоединение. После этого по команде
Writeln (I:2,' ',Теаm[I]:18, В[I]:2)
в ровные колонки выведутся места, названия команд и очки. Результаты будут иметь на экране следующий вид: 1 ЦСКА 59 2 ЗЕНИТ 56 3 РУБИН 53 …………..
14 ТОРПЕДО-МЕТАЛЛУРГ 29 15 УРАЛАН 28 16 ЧЕРНОМОРЕЦ 24
Коротко о главном
Метод пузырька — алгоритм сортировки числового маcсива.
Структура алгоритма метода пузырька — два вложенных цикла с переменной длиной внутреннего цикла.
length() — функция определения длины строковой переменной.
В Паскале существует операция присоединения строк. Ее знак — «+».
Вопросы и задания
1. Как пояснить название метода сортировки массива - «метод пузырька»? 2. Сколько проходов с перестановками элементов потребуется при сортировке массива из 100 чисел? 3. Введите в компьютер программу Ргemier-liga-2. Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе. 4. Внесите изменения в программу для того, чтобы получить список в обратном порядке (по возрастанию очков). Выполните программу. 5. Возможно, что массив окажется отсортированным до завершения всех проходов. В таком случае число повторений внешнего цикла можно сократить, и программа будет выполняться быстрее. Попробуйте усовершенствовать приведенную программу с учетом этого факта. Проверьте результат на тестах. 6. Если несколько команд набрали одинаковое количество очков, то места между ними распределяются по разнице забитых и пропущенных мячей: чем разница больше, тем место выше. Попробуйте усовершенствовать программу, учитывая это правило. Для этого в программу надо добавить массив с разницами мячей. Придумайте тест, на котором можно проверить работу программы. 7. Условие то же, что и в предыдущем задании. Но в качестве исходных данных вводится еще два массива: с числом забитых мячей и с числом пропущенных мячей каждой командой.'
6.3. О языках программирования и трансляторах
Основные темы параграфа:
♦ системы программирования; ♦ уровни языков программирования; ♦ трансляция и трансляторы; ♦ о двух способах трансляции; ♦ работа компилятора; ♦ работа интерпретатора.
Системы программирования
«Родным» языком ЭВМ является язык машинных команд (ЯМК). Самые первые ламповые ЭВМ понимали только этот язык. В программах на ЯМК данные обозначаются их адресами в памяти машины, выполняемые операции — числовыми кодами. Программист сам должен заботиться о расположении в памяти ЭВМ команд программы и данных.
Современные программисты так не работают. Для программирования на современных компьютерах применяются системы программирования (СП). В учебнике 8 класса (глава 2) говорилось о том, что программное обеспечение компьютера делится на три части:
• системное ПО; • прикладное ПО; • системы программирования.
С первыми двумя видами программного обеспечения вы уже знакомы. Системное ПО — это прежде всего операционные системы, сервисные программы. Прикладное ПО — это многочисленные редакторы, электронные таблицы, информационные системы, математические пакеты, экспертные системы и многое другое, с чем работает абсолютное большинство пользователей.
Системы программирования (СП) предназначены для создания программ управления компьютером.
Системы программирования позволяют разрабатывать и исполнять на компьютере программы, написанные на языках более высокого уровня, чем язык машинных команд.
Уровни языков программирования
Что понимается под уровнем языка? Понятие уровня языка программирования связано со степенью его удаленности от языка процессора компьютера и приближенности к естественному человеческому языку, к формальному языку предметной области (чаще всего — математики). Чем выше уровень, тем дальше язык от компьютера и ближе к человеку. Этот принцип схематически отражен на рис. 6.17.

Язык машинных команд — это язык самого низкого уровня. Первые языки программирования, отличные от ЯМК, появились на машинах первого поколения, и назывались они автокодами.
Автокод — это машинно-ориентированный язык символического программирования.
Одна команда на автокоде соответствует одной машинной команде. Работая на автокоде, программист освобожден от необходимости распределять память под программу и величины; ему не приходится работать с адресами ячеек. Переменные величины и числовые константы обозначаются так же, как в математике, коды операций — мнемоническими (буквенными) обозначениями.
Начиная с машин третьего поколения, языки такого типа стали называть ассемблерами. В наше время на ассемблере программируют довольно редко. Это, как правило, делают системные программисты.
Сокращение ЯПВУ расшифровывается так: языки программирования высокого уровня. Сегодня большинство программистов работают именно на этих языках. Примеры языков высокого уровня: Паскаль, Бейсик, СИ, Фортран.
Вот пример записи одной и той же команды сложения двух чисел на трех языках разного уровня: ЯМК, автокоде и Паскале:
С:=А+В Паскаль АDD А, В, С автокод 01 24 28 2С ЯМК
Видно, как с повышением уровня языка повышается «понятность» команды (по-английски слово «АDD» означает «сложить»). Однако, чем понятнее язык для человека, тем непонятнее для процессора компьютера. Процессор понимает только ЯМК, это его «родной» язык. Человеку же легче писать программы на языках более высокого уровня. Как же быть?
Трансляция и трансляторы
Как сделать так, чтобы человек мог писать программы на автокоде или Паскале, а компьютер мог исполнять эти программы? Ответ на поставленный вопрос такой же, как на вопрос «Как мне общаться с японцем, если я не знаю японского языка?». Нужен переводчик! По-английски «переводчик» — «translator».
Программы-переводчики с автокода, Паскаля, Фортрана и других языков на язык машинных команд называются трансляторами.
Таким образом, компьютер сам производит перевод под управлением программы-транслятора. Процесс перевода программы на язык машинных команд называется трансляцией. Прежде чем выполнить, например, программу на Паскале, ее нужно оттранслировать. Трансляцию можно представить как спуск с верхней ступеньки языка на самую первую ступеньку — ЯМК (рис. 6.18).

Транслятор является обязательным элементом любой системы программирования. Первые СП включали в себя только транслятор. Затем к транслятору стали добавляться различные сервисные средства: текстовые редакторы, отладчики, системы обслуживания программных библиотек, средства организации дружественного интерфейса с пользователем.
Наиболее удобными для пользователя стали системы программирования, созданные на персональных компьютерах.
Язык программирования, с которым работает СП, называется ее входным языком. Системы программирования именуются по названию своего входного языка. Например: «Система Бейсик», «Система Паскаль», «Система Фортран». Иногда в название систем включаются префиксы, обозначающие, например, ее фирменное происхождение. Очень популярны системы с приставкой «Турбо»: Турбо Паскаль, Турбо С и др. Это системы программирования, разработанные фирмой Borland.
О двух способах трансляции
Реализовать тот или иной язык программирования на компьютере — это значит создать транслятор с этого языка для данного компьютера. Существуют два принципиально различных метода трансляции. Они называются «компиляция» и «интерпретация».
Для объяснения различия можно предложить такую аналогию: представьте себе, что иностранный лектор должен выступить перед аудиторией на незнакомом для слушателей языке. Требуется перевод, который можно организовать двумя способами:
1) полный предварительный перевод: лектор заранее передает текст выступления переводчику, тот записывает перевод, размножает его и раздает слушателям (после этого лектор может уже и не выступать); 2) синхронный перевод: лектор читает доклад, переводчик одновременно с ним, слово за словом, переводит выступление.
Компиляция является аналогом полного предварительного перевода; интерпретация — аналог синхронного перевода. Транслятор, работающий по принципу компиляции, называется компилятором. Транслятор, работающий методом интерпретации, называется интерпретатором.
Работа компилятора
При компиляции в память компьютера загружается программа-компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. Компилятор производит синтаксический контроль программы и при обнаружении ошибок выводит диагностические сообщения. Если ошибок нет, то результатом компиляции является программа на языке машинных команд.
Затем компилятор удаляется из оперативной памяти. В памяти остается только программа на ЯМК, которая выполняется для получения результатов.
На рис. 6.19 схематически показан процесс выполнения программы на ЯПВУ с использованием компиляции. Прямоугольниками изображены программы в машинных кодах, овалами — обрабатываемая и конечная информация.
Конечно, компиляция с автокода-ассемблера много проще, чем с языков высокого уровня. Для этой процедуры часто применяют специальный термин — ассемблирование. А под словом «ассемблер» понимается не только язык программирования, но и транслятор с него.
Работа интерпретатора
Интерпретатор в течение всего времени работы программы находится во внутренней памяти (иногда для этого используется ПЗУ). В ОЗУ помещается программа на ЯПВУ. Интерпретатор «читает» ее первый оператор, переводит его в машинные команды и тут же организует выполнение этих команд. Затем переходит к переводу и выполнению следующего оператора и так до конца программы. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одного и того же оператора в цикле он снова будет транслироваться. Перед трансляцией каждого оператора происходит его синтаксический анализ.
На рис. 6.20 схематически показан процесс выполнения программы на ЯПВУ с использованием интерпретатора.

Таким образом, при компиляции трансляция и исполнение программы идут последовательно друг за другом. При интерпретации — параллельно.
Один раз откомпилированная программа может быть сохранена во внешней памяти и затем многократно выполнена. На компиляцию машинное время тратиться больше не будет. Программа на интерпретируемом языке при каждом выполнении подвергается повторной трансляции. Кроме того, интерпретатор может занимать значительное место в оперативной памяти.
Из-за указанных причин использование компиляторов удобнее для больших программ, требующих быстрого счета и большого объема памяти. Программы на Паскале, Си, Фортране всегда компилируются. Язык Бейсик часто реализуется через интерпретатор.
Коротко о главном
Для разработки программ управления компьютером программисты используют системы программирования (СП),
Язык программирования, с которым позволяет работать данная СП, называется ее входным языком.
Язык процессора компьютера — это язык машинных команд — ЯМК.
Уровень языка программирования определяется степенью его удаленности от ЯМК (чем дальше, тем выше уровень).
Автокод (ассемблер) — это машинно-ориентированный язык символического программирования.
Наиболее удобным средством программирования являются языки высокого уровня (ЯПВУ). Сегодня с ними работает большинство программистов.
Трансляция — это процесс перевода текста программы на язык машинных команд. Программа-переводчик называется транслятором.
Существуют два способа трансляции: компиляция и интерпретация. При компиляции сначала весь текст программы переводится на ЯМК, затем производится ее исполнение. При интерпретации перевод и исполнение происходят параллельно.
Вопросы и задания
1. Что такое язык программирования? 2. Что обозначает понятие «уровень языка программирования»? 3. К какому уровню относятся языки типа «автокод-ассемблер»? 4. Почему языки программирования высокого уровня называют машинно-независимыми языками? 5. Какие из языков программирования высокого уровня вы знаете? 6. Что такое трансляция? Что такое транслятор? 7. В чем различие между компиляцией и интерпретацией?'
И. Семакин, Л. Залогова, С. Русаков, Л. Шестакова, Информатика, 9 класс Отослано читателями из интернет-сайтов
Планы уроков информатики, скачать тесты бесплатно, всё для учителя и школьника в подготовке к уроку по информатике 9 класс, домашние задания, вопросы и ответы
Содержание урока
конспект урока
опорный каркас
презентация урока
акселеративные методы
интерактивные технологии
Практика
задачи и упражнения
самопроверка
практикумы, тренинги, кейсы, квесты
домашние задания
дискуссионные вопросы
риторические вопросы от учеников
Иллюстрации
аудио-, видеоклипы и мультимедиа
фотографии, картинки
графики, таблицы, схемы
юмор, анекдоты, приколы, комиксы
притчи, поговорки, кроссворды, цитаты
Дополнения
рефераты
статьи
фишки для любознательных
шпаргалки
учебники основные и дополнительные
словарь терминов
прочие
Совершенствование учебников и уроков
исправление ошибок в учебнике
обновление фрагмента в учебнике
элементы новаторства на уроке
замена устаревших знаний новыми
Только для учителей
идеальные уроки
календарный план на год
методические рекомендации
программы
обсуждения
Интегрированные уроки
Если у вас есть исправления или предложения к данному уроку, напишите нам.
Если вы хотите увидеть другие корректировки и пожелания к урокам, смотрите здесь - Образовательный форум.
|