Олег Деревенец - Песни о Паскале

Тут можно читать онлайн Олег Деревенец - Песни о Паскале - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Песни о Паскале
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.5/5. Голосов: 21
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Олег Деревенец - Песни о Паскале краткое содержание

Песни о Паскале - описание и краткое содержание, автор Олег Деревенец, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Аннотация: Изложены основы программирования на языке Паскаль. По ходу обучения решаются десятки задач (использован проектный подход). От читателя не требуется начальных познаний в программировании, но круг затронутых тем ориентирует его в профессиональную область. Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Будет полезна студентам-первокурсникам и преподавателям информатики.

Песни о Паскале - читать онлайн бесплатно полную версию (весь текст целиком)

Песни о Паскале - читать книгу онлайн бесплатно, автор Олег Деревенец
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

var Aces : TAces; { набранные очки }

Names: TNames; { названия команд }

{ Процедура "пузырьковой" сортировки очков с именами команд }

procedure BubbleSort2(var arg1: TAces; var arg2: TNames);

var i, j, t: Integer;

s: string;

begin

for i:= 1 to CSize-1 do { внешний цикл }

for j:= 1 to CSize-i do { внутренний цикл }

{ если текущий элемент меньше следующего …}

if arg1[j] < arg1[j+1] then begin

{ то меняем местами соседние элементы }

t:= arg1[j]; { временно запоминаем }

arg1[j]:= arg1[j+1]; { следующий -> в текущий }

arg1[j+1]:= t; { текущий -> в следующий }

{ меняем местами и названия команд }

s:= arg2[j]; { временно запоминаем }

arg2[j]:= arg2[j+1]; { следующий -> в текущий }

arg2[j+1]:= s; { текущий -> в следующий }

end;

end;

var i: integer;

begin { главная программа }

{ Вводим названия команд и набранные очки }

for i:=1 to CSize do begin

Write('Название команды: '); Readln(Names[i]);

Write('Набранные очки: '); Readln(Aces[i]);

end;

BubbleSort2(Aces, Names); { сортируем }

Writeln('Итоги чемпионата:');

Writeln('Место Команда Очки');

for i:=1 to CSize do

Writeln(i:3,' ':3, Names[i], Aces[i]:20-Length(Names[i]));

Readln;

end.

Спецификатор ширины поля в операторе печати задан выражением.

20 – Length(Names[i])

Здесь перед колонкой с очками будет тем больше пробелов, чем короче название команды, – так выравниваются колонки таблицы.

Для проверки программы я ввел наобум имена четырех команд нашего чемпионата и очки, якобы заработанные ими (количество команд CSize установил равным 4), и вот что у меня вышло.

Итоги чемпионата:

Место Команда Очки

1 Локомотив 55

2 Крылья Советов 54

3 Спартак 47

4 Зенит 43

Болельщики вправе оспорить результат, но я им доволен.

Итоги

• Расположение данных в порядке возрастания или убывания называется сортировкой.

• Простейший алгоритм сортировки массива – «пузырьковая» сортировка. Она состоит в сравнении и перестановке соседних элементов массива, при этом организуются два вложенных цикла.

А слабо?

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

Б) Придумайте самый несправедливый способ пиратской дележки по два слитка и напишите программу для неё.

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

Г) Напишите функцию, проверяющую, упорядочен ли числовой массив. Функция должна вернуть TRUE, если массив упорядочен по возрастанию. Массив внутрь функции передайте параметром по ссылке.

Глава 42

Кто ищет, тот всегда найдет

Все кругом ищут чтото КарабасБарабас золотой ключик Лиса с Котом - фото 135

Все кругом ищут что-то: Карабас-Барабас – золотой ключик, Лиса с Котом – дураков, а Буратино – Страну Дураков. И я ищу: то ключи в карманах, то тапочки под диваном. А сколько всего таится в Интернете! Благо, искать информацию там помогают компьютеры.

Где эта улица, где этот дом?

В 40-й главе мы смастерили программу для поиска угнанных автомобилей. Испытаем её вон на той легковушке. Вводим номер машины и… оп! Вот так удача! Автомобильчик-то в розыске, – надо вернуть его владельцу. Однако, кто он? Где живет? А телефончик не подскажете? К сожалению, в нашей базе данных этих сведений нет, – её следует дополнить.

Добавим в программу поиска автомобилей массив строк, где будем хранить сведения о владельце: его имя, фамилию и телефон.

const CNumbers = 100; { размер массивов }

type TNumbers = array[1..CNumbers] of integer;

TNames = array[1..CNumbers] of string;

var Numbers : TNumbers; { массив номеров автомобилей }

Names : TNames; { массив сведений о владельце }

Здесь добавлен массив Names (имена), содержащий столько же строк, сколько номеров в базе данных. Эти строки соответствуют элементам массива номеров Numbers. Так, если элемент Numbers[7] содержит число 123, а элемент Names[7] – строку «Горбунков С.С., тел. 11-22-33», то значит, гражданин Горбунков владеет автомобилем с номером 123.

Что связывает массивы Names и Numbers? Ответ очевиден – общий индекс. Определив индекс автомобиля в массиве номеров, мы получим доступ и к сведениям о его владельце в строковом массиве.

Последовательный поиск

Напомню, что в полицейской базе данных из 40-й главы заголовок функции поиска был таким.

function FindNumber(aNum: integer): boolean;

Функция FindNumber выясняет, существует ли искомый номер в массиве Numbers, то есть она дает булев результат. Теперь этого мало, – хочется получить индекс элемента, где хранится искомый номер. А если такого номера в массиве нет? Пусть тогда функция вернет некоторое условное значение, например, минус единицу.

С учетом этих пожеланий, напишем новую функцию поиска и дадим ей имя FindSeq (от слов Find – «искать», Sequence – «последовательно»).

{ Функция поиска в массиве Numbers позиции числа aNum }

function FindSeq (aNum: integer): integer;

var i: integer;

begin

FindSeq:= -1; { если не найдем, то результат будет -1 }

for i:=1 to Fact do

if aNum=Numbers[i] then begin

FindSeq:= i; { нашли, возвращаем индекс }

Break; { выход из цикла }

end

end;

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

Этот способ называют поиском прямым перебором или линейным поиском. Линейный поиск прост, но крайне медлителен. Если бы библиотекарь искал заказанную книгу прямым перебором, клиент дремал бы в ожидании заказа месяцами! Но библиотекарь справляется с поиском, живо находя нужное среди сотен тысяч томов. Как ему удается это?

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Олег Деревенец читать все книги автора по порядку

Олег Деревенец - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Песни о Паскале отзывы


Отзывы читателей о книге Песни о Паскале, автор: Олег Деревенец. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x