Что такое список в информатике кратко

Обновлено: 07.07.2024

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

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

  • по структуре : одноуровневыми (применяются чаще всего) и многоуровневыми;
  • по способу оформления : маркированные и нумерованные.

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

р1.jpg

Одноуровневые нумерованные и маркированные списки используются в большинстве документов (рассмотрены ниже).

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

Маркированные списки обычно применяются для перечисления параметров, порядок следования которых не важен (например, список свойств какого-либо продукта).

р2.jpg

Нумерованный вид списка предполагает вместо значка-маркера использовать последовательность чисел или символов. Каждый элемент такого списка имеет свой индивидуальный номер, что удобно при перечислении свойств или операций, порядок следования которых важен. Например, список пошаговых процедур.


Нумерованные списки применяются при необходимости перечислить элементы списка в определенном порядке, либо чтобы упростить ссылку на конкретный элемент списка (в дипломе, печатном документе, проектной работе).

Нумерованные списки основаны на обозначении составляющих списка (пунктах) цифрами, арабскими, римскими или латинскими (прописными или строчными).

р3.jpg

Для создания списка нужно воспользоваться кнопками на панели форматирования (рис. 4).


Привет. Ей! Не говорите “Да блин! Я знаю, чем отличается список от вектора, мне не нужна эта статья”. Прошу, загляните под кат и освежите свои знания. Я надеюсь, однако, что вы сможете почерпнуть из этой статьи намного больше и, некоторые, возможно, наконец-то разберутся, почему существует так много типов данных для коллекций объектов.

Введение

Так уж сложилось, что в программировании коллекции представляет много, нет ОЧЕНЬ МНОГО различных сущностей — списки, массивы, вектора, множества, стеки, очереди, ассоциативные массивы и у большинства из этих структур данных есть еще по несколько подвидов.

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

Должны же быть отличия между списком и массивом? Между ассоциативным массивом и хеш-таблицей?

Коллекция

Для начала — самое скучное (да, я люблю такое). Что такое коллекция вообще?

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

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

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

Ладно, свой негласный долг я выполнил, теперь поехали!

1 Вектор (Vector, Array)



А вы чего ждали?

Вектор (он же одномерный массив) — упорядоченный набор элементов с произвольным доступом по числовому индексу. Что для нас важно в этом определении? Да ничего. Шучу, на самом деле нам важно почти каждое слово:

Доступ к элементам производится по числовому индексу (обычно начиная с 0-го индекса, хотя есть и исключения), обычно доступ к элементу коллекции по индексу записывается как myFavoriteCats[i] или blackKitties[5]. Причем для обозначения этого самого числа — индекса используют букву i.

А когда одной буквы не хватает приплетают сюда j и k.

Итак, далее мы понимаем, что доступ произвольный — значит мы можем обращаться к элементам под индексами 0, 42, 2014 и вобщем-то ожидаем, что операция будет сложности O(1), т.е. константной и независимо от того какой из элементов мы запросим он нам со скоростью света тут же вернется.

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

Релизация

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

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

И действительно, получить доступ к определенному элементу очень просто — прибавляем к указателю на первый элемент индекс (с некоторыми поправками на размер типа данных) и получаем указатель на нужный элемент! Осталось разыменовать и у нас в переменной нужная кошечка!

Ладно, вектор — классная структура, но и у него есть недостатки (а у кого их нет?!), например нельзя просто так взять и добавить в вектор новый элемент! Особенно втиснуть его в середину. Нельзя также сказать, что кошки с номерами 0, 1 и 4 у нас есть, а с номерами 2 и 3 — нет (раньше они были, но оказалось, что это собаки).

Можно представить себе вектор, как книжную полку с отделениями, в каждом из которых помещается ровно одна книга. Чтобы засунуть новый роман Донцовой между 10-ым и 11-ым томом Большой Совецкой Энциклопедии нужно сильно постараться и переложить все тома с 11-го по 65-ый тома (можно схитрить и поставить 11-ый том в конец, но я вам этого не говорил, да и мы в таком случае потеряем упорядоченность).



В моей памяти все именно так

Применение

В нашем случае вектор бы идеально подошел для топ-10 самых милых котят, т.к. добавлять и удалять элементы не нужно (только изменять), пропусков между 1-ым и 5-ым местом быть не должно, да и удобно обращаться по номеру.

Ладно. В любом случае вектор классный, мы просто посмотрим какие есть еще коллекции.

2 Список (List)



Первый том

Ух! Список задач на сегодня, список покупок в магазине. Список гостей на свадьбу… Так. Ближе к делу.

Мы уже знаем, что элементы вектора лежат акуратненько друг за другом, красиво и ровно. Это дает нам как преимущества так и недостатки.

Список в этом плане полностью противоположная вещь — его элементы могут быть разбросаны по памяти как угодно! Из-за этого мы теряем возможность быстро получить элемент по индексу, а также не можем быстро скопировать весь список, но получаем довольно приятную штуку — мы можем вставлять элементы за константное время в любое место! По слухам удаляются элементы из списка тоже за O(1).

Реализация

Хм. А как с формальным определением?

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

Для последнего элемента списка мы храним нулевой указатель (на диаграммах я буду использовать указатель на нулевую кошку (Null Cat), не пугайтесь).

Внимание! В каноничной реализации списка, для того, чтобы получить размер списка, необходимо обойти весь список — дойдя до нулевого указателя (линейное время — сложность O(n)) и хотя в некоторых реализациях размер кешируется в дескрипторе списка (или в первом элементе), не стоит на это полагаться.



Если бы я мог, я бы один элемент списка разместил на северном полюсе, а другой где-нибудь в окресностях Бетельгейзе

Применение

Ладно. Списки это вроде простая структура. Что есть еще?

3 Множество (Set)



Это Сет

Похожее понятие есть в математике, а точнее в теории множеств. Множество отличается и от вектора и от списка, хотя их реализация может быть похожа.

Множество — неупорядоченный набор элементов, без повторов. Ух. И все? Ни тебе произвольного доступа, ничего! Зачем такое нужно?

Как мы знаем в векторе можно быстро получить элемент по индексу, в списке можно быстро добавить или удалить элемент, а что с множеством?

В множестве можно быстро проверить, есть какой-либо элемент внутри, или его нет. Скажем если бы я хотел узнать, находится ли конкретная кошка в моем списке любимых, то и для списка и для вектора мне пришлось бы перебрать (в худжем случае) все элементы!

Реализация

В множестве, т.к. оно неупорядочено можно сортировать элементы при добавлении и в случае чего устроить бинарный поиск. Хм. Вот ведь парадокс, коллекция неупорядоченная, а внутри все будет по-порядку. Тут важно понять, что если вы добавите новый элемент в множество, не факт, что он пойдет в конец.

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

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

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



Теория множеств дается проще, если брать множество котят

Применение

Множество идеально подойдет для списка любимых котят, потому что их множество. Ха! Шучу.

Но оно действительно подойдет, потому-что такую коллекцию не нужно сортировать (упорядоченность не важна) и мы легко сможем проверить, находится ли какой-нибудь конкретный кот в этом множестве (скажем у меня 100 котят и любимых я кормлю креветками).

Ну ладно. Множества тоже хороши, но неужели есть что-то еще?

4 Словарь (Associative Array, Map, Dictionary)



Признайтесь, это лучше, чем просто словарь

Словарь (он же ассоциативный массив) — это тот-же вектор, но с небольшими отличиями. В качестве индекса (который в словаре будет называться ключ) могут выступать не только числа, но и любые другие типы данных (даже другие коллекции!). Также допустимы пропуски, если мы все-таки будем использовать в качестве ключа целое число, например у нас может быть элемент связанный с ключем 5, но при этом отсутствовать элемент связанный с ключем 4.

Что все это значит на практике? Всего-лишь, то, что в квадратных скобках для ображения к элементу по “индексу” мы можем указывать произвольный тип, например allMyCats[“Murka”].

Реализация

Невооруженным видно, что можно просто завести массив (или список) пар (Ключ, Значение) и добавить специальную функцию, которая будет пробегать по этому списку и возвращать определенное значение по связанному с ним ключу.

Мы также не можем сказать какая пара первая, какая последняя и что раньше “Murka” или “Borka”, поэтому словарь считается неупорядоченной структурой.

Опять-же с каждым ключем может быть связано лишь одно значение, поэтому для приведенного примера с именами кошек словарь в чистом виде подходит слабо.

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

Применение

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



Примерно так выглядит в памяти std::map >

И у меня для вас новость — типы коллекций закончились. Ну все. Вообще больше нет. Совсем.

5 Стек (Stack)



Еще один кот и будет Stack Overflow

Ха! Я вас обманул (всмысле пошутил)! Есть еще пара структур данных, которые представляют коллекции.

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

Все просто — добавляемый элемент, называемый “последним”, первый выбывает из из стека.

Стек очень нужен и полезен в программировании. Например с помощью стека осуществляется вложенный вызов процедур — в стек сохраняются адрес возврата и аргументы вызванной функции.

Реализация

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

В низкоуровневой реализации (точнее то, как он реализован в современных архитектурах) есть интересные моменты.

Стек там является небольшим зарезервированным участком памяти и совместно с ним хранится два указателя — на начало стека (где лежит первый доавленный элемент) и конец стека — где лежит последний добавленный.

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

Также может случиться обратная ситуация (Stack Underflow), если попытаться забрать из стека больше чем в нем есть, но в высокоуровневых языках она не встречается (понятно почему — нам не дают напрямую работать со стеком).

Если кому интересно как это все работает — изучение ассемблера для какой-нибудь популярной архитектуры, вроде i386, может вам помочь.

Применение

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

Разное

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

Есть деревья (да их целый лес!) и графы.

Есть вероятностные структуры данных, такие как вероятностное множество и список с пропусками.

Я очень хочу про все это написать, но времени и места на хабре не всегда мало.

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

Строки

В первую очередь то, как реализованы строки в некоторых языках может показаться странным. Самое простое и эффективное решение это наверное решение C — строка это набор символов, с нулевым символом в конце, что позволяет обходиться без дескриптора.

В C++ std::string уже больше походит на вектор.

Ну а в старом паскале дескриптор (точнее всего-лишь длина) хранится в нулевом элементе массива.

В Haskell String — это список символов ([Char]), из чего вытекает, что получение длины строки имеет сложность O(n). Зато их очень удобно оббегать рекурсивно.

В общем случае, строка — это упорядоченный набор символов и не более. Какой именно тип коллекции будет использован — не важно (ну я бы не советовал использовать множество, ха!).

Очередь (Queue)

Очередь очень похожа на стек и в тоже время является его противоположностью — первым мы получим обратно не тот элемент, что мы добавили последним, а тот, что “стоит в очереди” дольше всех. Очередь очень удобная структура, но несмотря, на то, что принцип ее работы схож со стеком, в эффективной реализации есть небольшое отличие.

Для стека мы могли схитрить и выделить приемлемый по размеру участок памяти, в случае чего его расширяя, потому-что стек то уменьшается, то увеличивается, т.к. элементы и добавляются и удаляются “с одного конца”. Если же мы представим работу очереди, то она будет “ползти в памяти” — начало будет постоянно сдвигаться вверх, поэтому трюк, который применим для стека, будет работать хуже и тут уже намного лучше будет использовать двусвязный список (и не забудьте хранить указатели на первый и последний элементы).

Еще можете попробовать реализвать очередь на двух стеках, но это тоже менее эффективно.

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

Заключение



Ух. Я начинаю повторяться

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

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

Спасибо тем, кто смог дочитать аж до этих строк (как они это выдержали?).

Связный список является простейшим типом данных динамической структуры, состоящей из элементов ( узлов, nodes ). Каждый узел включает в себя в классическом варианте два поля:

  • данные (в качестве данных может выступать переменная, объект класса или структуры и т. д.)
  • указатель на следующий узел в списке.

Элементы связанного списка можно помещать и исключать произвольным образом.

Список

Доступ к списку осуществляется через указатель, который содержит адрес первого элемента списка, называемый корнем списка (head) .

Классификация списков

Виды списков

По количеству полей указателей различают однонаправленный (односвязный) и двунаправленный (двусвязный) списки.

Связный список, содержащий только один указатель на следующий элемент, называется односвязным .
Связный список, содержащий два поля указателя – на следующий элемент и на предыдущий, называется двусвязным .

Линейные и циклические списки

По способу связи элементов различают линейные и циклические списки.

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

Виды списков

Таким образом, различают 4 основных вида списков.

  • Односвязный линейный список (ОЛС).
    Каждый узел ОЛС содержит 1 поле указателя на следующий узел. Поле указателя последнего узла содержит нулевое значение (указывает на NULL).
  • Односвязный циклический список (ОЦС).
    Каждый узел ОЦС содержит 1 поле указателя на следующий узел. Поле указателя последнего узла содержит адрес первого узла (корня списка).
  • Двусвязный линейный список (ДЛС).
    Каждый узел ДЛС содержит два поля указателей: на следующий и на предыдущий узел. Поле указателя на следующий узел последнего узла содержит нулевое значение (указывает на NULL). Поле указателя на предыдущий узел первого узла (корня списка) также содержит нулевое значение (указывает на NULL).
  • Двусвязный циклический список (ДЦС).
    Каждый узел ДЦС содержит два поля указателей: на следующий и на предыдущий узел. Поле указателя на следующий узел последнего узла содержит адрес первого узла (корня списка). Поле указателя на предыдущий узел первого узла (корня списка) содержит адрес последнего узла.

Сравнение массивов и связных списков

Массив Список
Выделение памяти осуществляется единовременно под весь массив до начала его использованияВыделение памяти осуществляется по мере ввода новых элементов
При удалении/добавлении элемента требуется копирование всех последующих элементов для осуществления их сдвигаУдаление/добавление элемента осуществляется переустановкой указателей, при этом сами данные не копируются
Для хранения элемента требуется объем памяти, необходимый только для хранения данных этого элементаДля хранения элемента требуется объем памяти, достаточный для хранения данных этого элемента и указателей (1 или 2) на другие элементы списка
Доступ к элементам может осуществляться в произвольном порядкеВозможен только последовательный доступ к элементам

Односвязный линейный список

Каждый узел однонаправленного (односвязного) линейного списка (ОЛС) содержит одно поле указателя на следующий узел. Поле указателя последнего узла содержит нулевое значение (указывает на NULL).

Узел ОЛС можно представить в виде структуры

  • 1. Инициализация списка
  • 2. Добавление узла в список
  • 3. Вывод элементов списка
  • 4. Поиск узла по его значению
  • 5. Удаление узла из списка
  • 6. Удаление корня списка
  • 7. Взаимообмен двух узлов списка
  • 8. Слияние двух списков

1. Инициализация односвязного линейного списка

Инициализация односвязного линейного списка

Инициализация списка предназначена для создания корневого узла списка, у которого поле указателя на следующий элемент содержит нулевое значение.

Node* Init( int number) // number - значение первого узла
Node *newNode;
// выделение памяти под корень списка
newNode = new Node();
newNode->Data = number;
newNode->Next = NULL ; // это последний узел списка
return newNode;
>

2. Добавление узла в односвязный линейный список

Функция добавления узла в список принимает два аргумента:

  • Указатель на узел, после которого происходит добавление
  • Данные для добавляемого узла.

Добавление элемента односвязного линейного списка

Процедуру добавления узла можно отобразить следующей схемой:

Добавление узла в ОЛС включает в себя следующие этапы:

  • создание добавляемого узла и заполнение его поля данных;
  • переустановка указателя узла, предшествующего добавляемому, на добавляемый узел;
  • установка указателя добавляемого узла на следующий узел (тот, на который указывал предшествующий узел).

Таким образом, функция добавления узла в ОЛС имеет вид:

3. Вывод элементов списка

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

4. Поиск элемента списка

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

5. Удаление узла ОЛС

В качестве аргументов функции удаления элемента ОЛС передаются указатель на удаляемый узел, а также указатель на корень списка.
Функция возвращает указатель на узел, следующий за удаляемым.

Удаление элемента односвязного линейного списка

Удаление узла может быть представлено следующей схемой:

Удаление узла ОЛС включает в себя следующие этапы:

  • установка указателя предыдущего узла на узел, следующий за удаляемым;
  • освобождение памяти удаляемого узла.

Node * DeleteItem(Node* node, Node* head)
Node * temp;
temp = head;
while (temp->Next!= node) // просматриваем список начиная с корня
< // пока не найдем узел, предшествующий node
temp = temp->Next;
>
temp->Next = node->Next; // переставляем указатель
delete node; // освобождаем память удаляемого узла
return temp;
>

Удаление корня списка

Функция удаления корня списка в качестве аргумента получает указатель на текущий корень списка. Возвращаемым значением будет новый корень списка - тот узел, на который указывает удаляемый корень.

Node* DeleteHead(Node* head)
Node* temp;
temp = head->Next;
delete head; // освобождение памяти текущего корня
return temp; // новый корень списка
>

Взаимообмен узлов ОЛС

В качестве аргументов функция взаимообмена ОЛС принимает два указателя на обмениваемые узлы, а также указатель на корень списка. Функция возвращает адрес корневого элемента списка.

Взаимообмен узлов списка осуществляется путем переустановки указателей. Для этого необходимо определить предшествующий и последующий узлы для каждого заменяемого. При этом возможны две ситуации:

  • заменяемые узлы являются соседями;
  • заменяемые узлы не являются соседями, то есть между ними имеется хотя бы один элемент.

При замене соседних узлов переустановка указателей выглядит следующим образом:

При замене узлов, не являющихся соседними переустановка указателей выглядит следующим образом:

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

Функция взаимообмена узлов списка выглядит следующим образом:

struct list * swap( struct list *lst1, struct list *lst2, struct list *head)
// Возвращает новый корень списка
struct list *prev1, *prev2, *next1, *next2;
prev1 = head;
prev2 = head;
if (prev1 == lst1)
prev1 = NULL ;
else
while (prev1->ptr != lst1) // поиск узла предшествующего lst1
prev1 = prev1->ptr;
if (prev2 == lst2)
prev2 = NULL ;
else
while (prev2->ptr != lst2) // поиск узла предшествующего lst2
prev2 = prev2->ptr;
next1 = lst1->ptr; // узел следующий за lst1
next2 = lst2->ptr; // узел следующий за lst2
if (lst2 == next1)
< // обмениваются соседние узлы
lst2->ptr = lst1;
lst1->ptr = next2;
if (lst1 != head)
prev1->ptr = lst2;
>
else
if (lst1 == next2)
// обмениваются соседние узлы
lst1->ptr = lst2;
lst2->ptr = next1;
if (lst2 != head)
prev2->ptr = lst2;
>
else
// обмениваются отстоящие узлы
if (lst1 != head)
prev1->ptr = lst2;
lst2->ptr = next1;
if (lst2 != head)
prev2->ptr = lst1;
lst1->ptr = next2;
>
if (lst1 == head)
return (lst2);
if (lst2 == head)
return (lst1);
return (head);
>


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


В данный момент вы не можете посмотреть или раздать видеоурок ученикам

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

Получите невероятные возможности




Конспект урока "Списки"

· маркированные, нумерованные списки;

· одноуровневые и многоуровневые списки.

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


Использование в текстовых документах списков облегчает чтение и понимание текста.

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


Так что же такое список?

Список – это упорядоченный конечный набор элементов.

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


Списки могут быть двух видов: маркированные и нумерованные.

Рассмотрим маркированные списки.

Маркированным называется список, в котором начало каждого элемента помечается особым знаком – маркером.

Вернёмся к примеру, с Сашей. Итак, мама перечислила продукты, которые Саше нужно купить, и тот, чтобы не забыть, записал всё на листке, в следующем виде:

Теперь уж Саша точно не забудет всё купить.

При создании маркированного списка в текстовом редакторе пользователь может выбрать в качестве маркера любой символ компьютерного алфавита и даже небольшие графические изображения.

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

Посуда для турпохода

· Губка Боб Квадратные Штаны

· Шелдон Планктон и другие.

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

Но если порядок перечисления элементов важен, используют другой тип списка — нумерованный.

В нумерованном списке каждый элемент получает свой индивидуальный номер.

Например, перечислим дни недели:

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

Нумерованный список – это список данных, который подаёт информацию как перечисление нумерованных пунктов.

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


Нумерованные списки часто используются для описания последовательности действий.

Например, на уроке информатики вы получили задание:

1. открыть документ Антошка.doc;

2. вставить недостающие строки;

3. напечатать пропущенный куплет;

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

То есть при указании порядка действий важное значение имеет порядок следования пунктов.

При создании, удалении или перемещении пунктов нумерованного списка автоматически меняется вся нумерация.

Рассмотрим следующий вид списков – многоуровневые.

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

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

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


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

Рассмотрим пример многоуровневого списка. Это оглавление учебника математики.

Перед нами пример трёхуровневого списка. Где первый уровень – это название раздела. Второй уровень – названия глав в данном разделе, а третий уровень – это название параграфов в данной главе.

Итак, под списком мы понимаем последовательность строк, в которых содержатся данные одного типа.

Списки облегчают чтение и понимание текста.

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

В маркированных списках перечисляются пункты, связанные с одной темой.

В нумерованных списках перечисляются пункты, следующие друг за другом в определённом порядке.

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

Перейдём к практической части урока.

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


Итак, рассмотрим решение:

Первыми переправляются дети.

Затем Дима возвращается к родителям.

Теперь отец плывёт на берег к дочери, потом Оля плывёт за братом и возвращается с ним к отцу.

Снова Дима садится в лодку плывёт к матери, отдаёт ей лодку, чтобы она переплыла к отцу и дочери.

После того, как мать переправилась, Оля садится в лодку и плывёт к брату, подбирает его, и вместе они переправляются к родителям.

Дочь остаётся с родителями, а Дима плывёт к рыбаку, отдаёт ему лодку.

Теперь рыбак плывёт на противоположный берег и высаживается.

Оля садится в лодку и плывёт за братом, вместе они возвращаются обратно (наконец-то вся семья вместе). Счастливая семья возвращает лодку рыбаку.

В результате лодка пересекла реку 13 раз.

Как видите, порядок действий семьи мы оформили в виде нумерованного списка, причём если пункты поменять местами, то задача не будет иметь решения.

А теперь пришло время подвести итоги урока.

Список – это упорядоченный конечный набор элементов.

По способу оформления различают маркированные и нумерованные списки.

Элементы маркированного списка обозначаются с помощью значков-маркеров.

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

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

Читайте также: