OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 13:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 10 Октябрь, 2021 23:29 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Сегодня в Риге начались курсы по программированию на Обероне. Два занятия в неделю по 3 часа (1 ч — лекция, 2 ч — практика). Используется язык Оберон-07 в среде Free Oberon. Занятие прошло успешно. На лекции была краткая история языков программирования (мнемокод, Фортран, линия Алгол—Оберон), краткое введение в программирование, пара слов о тестировании и верификации, о вычислительных процессах и алгоритмах. На практике решали простейшие задачи построения линейных программ:

(Используется только тип INTEGER, процедуры In.Int, Out.String, Out.Int, Out.Ln)

1. Вводятся длины сторон коробки, вывести её объём и площадь её поверхности.
2. Перевести км/ч в м/с и м/мин.
3. По диаметру круга рассчитать длину окружности и площадь круга.
4. Вывести квадрат, куб, четвёртую и пятую степень введённого числа.
5. Перевод температуры из градусов Цельсия (C) в гр. Реомюра (R), гр. Фаренгейта (F) и гр. Кельвина (K). R = 0,8C. F = 1,8C + 32. K = 273 + C.
6. Вводятся два числа. Построить квадратное уравнение, корнями которого являются эти числа.
7. То же самое, но — три числа.
8. Найти максимум двух чисел, не используя IF. Использовать ABS.
9. То же самое, но — минимум.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 12 Октябрь, 2021 01:13 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
На второй лекции (11 октября) проходили оператор IF. Понятие ветвления, оператора, последовательности операторов, условия, логического типа данных (BOOLEAN), согласования типов, структурной вложенности операторов, приоритета операций, ключевого слова, встроенной процедуры. Шесть операции сравнения (= # < > <= >=). Три логические операции & OR ~. Встроенные процедуры ABS и ODD. Деление нацело и взятие остатка (DIV, MOD). Составные логические условия со скобками. На практике переводили математические и словесные условия на язык Оберон, программировали простейшее меню, решали задачи на ветвление.

Задачи на практику
1. Пользователь выбирает из списка единицу измерения (м/с, км/ч, м/мин) и указывает величину скорости. Перевести скорость в две другие единицы измерения.
2. Вводится школьная оценка. Вывести характеристику этой оценки (хорошая, плохая и т. д.).
3. Даны два числа. Вывести первое, если оно больше второго, или второе, если оно больше первого. Если они равны, вывести 0.
Вариант: использовать вызов Out.Int только один раз, обойтись двумя переменными.
4. Существует ли треугольник с данными длинами сторон. Если да, то вывести величину квадрата его площади (по формуле Герона).
Примечание: уменьшить погрешность, возникающую из-за того, что квадрат площади вычисляется в целых числах.
5. Даны длины трёх сторон треугольника. Определить вид треугольника: равнобедренный, равносторонний, прямоугольный, общего вида (ни тот ни другой).
6. Дан размер кирпича (три числа) и размер прямоугольного отверстия (два числа). Пролезет ли кирпич в отверстие? Кирпич распологается параллельно краям отверстия.
7. Даны размеры письма и конверта. Поместится ли письмо в конверт? Письмо должно быть расположено параллельно краям конверта.
8. То же самое, но письмо разрешается согнуть пополам один раз.
9. Даны a и b. Решить неравенство ax + b > 0.
10. Даны четыре числа. Сколько среди них различных?
11. Даны пять чисел. Найти среди них наименьшее, наибольшее и третье по величине (медианное).
12. Расставить по возрастанию три числа.
13. Расставить по возрастанию четыре числа.
14. Дано число n. Вывести фразу «У вас n рублей», написав «рублей» с правильным окончанием: рубль, рубля, рублей.
15. Даны размеры ящика в форме прямоугольного параллелепипеда: a, b, c. Имеются коробки размером WxHxD, которые надо поместить в ящик. Все коробки должны быть ориентированы одинаково, но ориентацию коробок можно выбирать. Какое максимальное количество коробок поместится в ящик?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Октябрь, 2021 05:22 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
На третьей лекции (17 октября) проходили циклы WHILE и REPEAT, встроенные процедуры INC и DEC, упомянули цикл Дейкстры и инвариант цикла, поговорили о различиях между операторами и выражениями. WHILE как оператор, задача которого — сделать данное условие ложным. Постусловие. Логические преобразования при отрицании условия (раскрытие скобок, перед которыми стоит оператором «не»). Итерация (шаг) цикла. «Подготовка к циклу» как подготовка к первой итерации цикла, условие продолжения цикла, условие окончания цикла, тело цикла, полезное действие, подготовка к следующей итерации цикла, счётчик цикла. Метод половинного деления.

Поговорили также о рекомендации Э. В. Дейкстры писать более слабые условия продолжения цикла. Например, в следующем примере не i < 11, а i # 11:
Код:
i := 1; WHILE i # 11 DO Out.Int(i, 3); INC(i) END

Это для того, чтобы ошибки в программировании приводили к краху программы и, таким образом, были бы видны. И для того, чтобы получались сильные постусловия цикла (в данном примере i = 11 — сильнее, чем i >= 11).

Цитата:
Как работает цикл WHILE
-----------------------
1) Проверяется условие.
2) Если оно истинное, то выполняется тело цикла,
затем переходим на пункт 1.
3) Если условие ложное, то цикл заканчивается
(то есть программа продолжает выполняться
со следующего оператора после всего WHILE).


Задания на практику

(Используются только циклы WHILE и REPEAT и только тип INTEGER.)

1) Вывести числа от 1 до 100 с шагом 3: 1, 4, 7…
2) Даны два числа: A и B. Вывести все числа между A и B включительно. Учесть, что A может быть больше, чем B.
3) Даны две последовательности: 1, 4, 7, 10,… и 10, 12, 14,… Выводить их до тех пор, пока первая не перегонит вторую.
4) Старая задача с переводом единиц измерения, но зациклить её (спрашивать в конце: «Повторить?»)
5) Найти все числа Фибоначчи, не превосходящие 1 млн.
Два первых члена последовательности равны единице, а все остальные равны сумме двух предыдущих. 1, 1, 2, 3, 5, 8, 13…
6) Игра «Угадайка» в диапазоне от 1 до 100. Программа не более чем за 7 шагов определяет загаданное пользователем число, задавая вопросы вида: «Ваше число больше чем X?».
7) Игра «Спички». На столе лежит N спичек. Каждый игрок по очереди берёт 1, 2 или 3 спички. Кто взял последнюю — проиграл.
8) Найти сумму и количество цифр данного натурального числа.
9) Перевернуть заданное натуральное число задом наперёд.
10) Найти три наибольших из введённых положительных чисел. Признак конца ввода — ноль.
11) Вывести в порядке возрастания все трёхзначные числа, сумма цифр которых равна заданному числу S.
12) Имеется последовательность: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4,… Какое число находится на N-ом месте?
13) Вводятся числа. Каждое следующее число не меньше предыдущего. Как только введено число, меньшее предыдущего, ввод прекращается (это число не считаем членом введённой последовательности). Вывести: а) сколько всего чисел введено, б) сколько различных чисел введено, в) каково максимальное количество повторов одного числа.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Октябрь, 2021 06:40 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Спасибо за методические рекомендации.
Очень полезно смотреть на опыт по преподаванию более опытных товарищей.
У меня тоже начался кружок в школе со встроенным экспресс-курсом по программированию: https://vk.com/mcuoberon


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 30 Октябрь, 2021 03:00 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
На четвёртой лекции (18 октября) вместе написали «Угадайку», решили задачу о нахождении суммы и количества цифр натурального числа и задачу о переворачивании числа. Говорили о логическом разбиении программы на подзадачи. Проходили обычные и функциональные процедуры. Объявление и вызов. Тип возвращаемого значения. Сигнатура. Формальные и фактические параметры. Глобальные и локальные переменные. Возврат из процедуры и оператор RETURN. Булевы процедуры. Коснулись понятия экспорта и разбиения программы на модули.

Задания на практику
Все задачи решаются с помощью написания процедур. В каждой задаче процедура Do организует ввод и вывод.
1) Написать процедуру, возвращающую знак числа (-1, 0 или 1).
PROCEDURE Sign(n: INTEGER): INTEGER;
2) Какая степень двойки? Если никакая, то возвращать -1.
PROCEDURE Power2(n: INTEGER): INTEGER;
3) Какая степень числа K?
PROCEDURE PowerK(n: INTEGER; K: INTEGER): INTEGER;
4) Простое ли число? Простое число — это натуральное число, которое делится только на себя и на единицу и не является единицей.
PROCEDURE Prime(n: INTEGER): BOOLEAN;
5) Точным квадратом какого числа является данное число? Если никакого, возвращать -1.
PROCEDURE PerfectSquare(n: INTEGER): INTEGER;
Пример: PerfectSquare(9) = 3, PerfectSquare(8) = -1
6) Правда ли, что все цифры в числе чётные?
7) Правда ли, что все цифры в числе имеют одинаковую чётность?
8) а) Сколько натуральных чисел, не превосходящих A, делится на C. б) Пользуясь написанной в (а) процедурой, написать процедуру, которая определяет, сколько целых чисел из отрезка [A; B] делится на C.
9) Процедура принимает 4 числа от 1 до 8 (вариант: до 1 млн) — координаты двух клеток на шахматной доске. Если это одна и та же клетка, возвратить -1, иначе если они соединены ходом короля, возвратить 1, ладьи — 2 слона — 3, коня — 4. Если клетки не соединены ходом ни одной из этих фигур, возвратить 0. Разбить задачу на несколько подзадач и оформить каждую из них в виде булевой процедуры.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 30 Октябрь, 2021 21:34 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
На пятой лекции (24 октября) написали в трёх вариантах процедуру, которая возвращает знак числа. Повторили логическое раскрытие скобок, перед которыми стоит оператор «не». Проходили схему программирования «линейный поиск». Говорили о программировании как целенаправленной деятельности. Органическое разбиение задачи на подзадачи против механического её разбиения. Процедура как момент программы, выполняющая некоторое законченное действие. Побочные эффект функциональной процедуры. Применяя идею структуризации в форме процедур, написали программу, представляющую данное число в виде суммы двух простых чисел десятью различными способами.

Задания на практику
1) Дано число N. Вывести фигуры:

Код:
а)       б)       в)       г)        д)

1        1        1111      1        1111
22       22       222      222       2222
333      333      33      33333      3333
4444     22       4        222       4444
55555    1                  1

N = 5   N = 3    N = 4    N = 3     N = 4


2) Дано число N. Вывести фигуры:

Код:
а)       б)
xxxx        x
xxxx       x x
xxxx      x   x
           x x
            x

N = 1     N = 3

Код:
в)       г)
xxxxxx   xxxxxx
x    x   x++++x
x    x   x++++x
xxxxxx   xxxxxx

N = 2    N = 2


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 30 Октябрь, 2021 21:53 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Видеозапись шестого занятия на Ютубе

На шестой лекции (25 октября) повторили схему программирования «линейный поиск», проходили массивы, константные выражения, постоянные, открытые массивы, оператор LEN. Говорили о «магических» числах в исходных кодах программ, о делении на ноль. Логически вывели необходимость массивов. Написали программу, выводящую последовательность вводимых чисел в обратном порядке.

Задания на практику

Написать функциональную процедуру, которая возвращает:
1) сумму элементов массива;
PROCEDURE Sum(m: ARRAY OF INTEGER): INTEGER;
2) минимальное значение в массиве;
3) встречается ли среди элементов массива число X;
PROCEDURE Sum(m: ARRAY OF INTEGER; x: INTEGER): BOOLEAN;
4) сколько раз число X встречается среди элементов массива;
5) количество положительных чисел в массиве;
6) индекс элемента с максимальным значением в массиве (любого);
PROCEDURE MaxI(m: ARRAY OF INTEGER): INTEGER;
7) индекс последнего ненулевого элемента, или -1, если таких нет;
8) истину, если два массива равны (по значениям элементов);
PROCEDURE Equal(a, b: ARRAY OF INTEGER): BOOLEAN;
9) количество различий в двух массивах (различие — на одинаковой
позиции стоят различные числа);
PROCEDURE Diff(a, b: ARRAY OF INTEGER): INTEGER;
10) Написать процедуру, которая выводит на экран значения
элементов массива в два столбца. Слева отрицательные числа,
справа — неотрицательные. Два варианта: а) оставлять пустые
места, б) честно выводить в два столбца.
Код:
а)          б)
   -5          -5  2
   -2          -2  3
       2       -1  0
       3
   -1
       0

11) Написать функциональную процедуру, которая возвращает
количество различных элементов массива.
PROCEDURE Unique(m: ARRAY OF INTEGER): INTEGER;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 08 Ноябрь, 2021 10:17 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Очень полезное упражнение:
написать одну и ту же процедуру (функцию)
а) итеративно
б) рекурсивно
в) итеративно с явным использованием стека


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 13 Ноябрь, 2021 23:59 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Валерий Лаптев писал(а):
Очень полезное упражнение:
написать одну и ту же процедуру (функцию)
а) итеративно
б) рекурсивно
в) итеративно с явным использованием стека
Зачем в)?
Понимание механизма и принципов?
Так это - пока стековое размещение контекста дешевле и быстрее "связносписочной".
А, вообще, главное в формализмах - не то, что МОЖНО на них записать, а то, что писать в них НЕ ОБЯЗАТЕЛЬНО. То есть, не ТРЕБОВАНИЕ ЯВНОСТИ, а - УМОЛЧАНИЯ.
К тому же, Вирт говорил, что основной принцип ЯП - СОКРЫТИЕ подробностей механизма исполнения, получение независимости от него, наиболее общего вида решений.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 18 Ноябрь, 2021 08:19 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Для начинающих - ПОЛЕЗНО!
Понимать будут лучше - проверено.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 19 Ноябрь, 2021 00:52 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Валерий Лаптев писал(а):
Цитата:
в) итеративно с явным использованием стека

Для начинающих - ПОЛЕЗНО!
Понимать будут лучше - проверено.

Но ведь нет никаких средств (и в инструментарии автора темы, и в фильмах не просматривается) уведеть "стек-не стек", "перым зашёл - последним выйдешь", "сколько занял - столько же и в обратном порядке освободи"?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Апрель, 2022 03:17 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Видеозапись седьмого занятия на Ютубе

На седьмой лекции (31 октября) проходили цикл FOR, VAR-параметры. Рассмотрели понятия: счётчик цикла, константное выражение, последовательность операторов, промежуток, интервал, полуинтервал. Соответствие цикла FOR циклу WHILE. Вместе решили некоторые задачи. Длинную арифметику решили реализовать через массив целых чисел при активном использовании разделения задачи на процедуры.

Задания на практику

1) Есть ли в массиве все числа от 0 до 5? (Оптимизировать.)
2) Дан числовой массив и число B. Переставить местами числа в массиве так, чтобы сначала шли все числа, меньшие B, потом все числа, равные B, потом все числа, большие B.
3) Даны два неубывающих числовых массива. Слить их в третий массив так, чтобы он тоже не убывал.
4) Длинная арифметика. Длинное число представлено в виде массива, каждая цифра записана в своей ячейке. а) Написать процедуру, которая увеличивает число в данном массиве на единицу. б) —||— уменьшает число на единицу.
5) Создать массив с числами Фибоначчи, не превосходящими 1000000.
6) Рекуррентная последовательность. Первые пять чисел даны, каждое следующее число определяется как
x[k] = max(x[k - 5], x[k - 2]). а) Программа должна определить, с какого места эта последовательность станет стабильной, то есть все элементы станут одинаковыми. б) Числа 2 и 5 тоже вводятся (из отрезка [1; 5]).
7) Удалить из массива все чётные числа, эти числа записать в другой массив.


Последний раз редактировалось kekc_leader Четверг, 07 Апрель, 2022 03:41, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Апрель, 2022 03:38 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Видеозапись восьмого занятия на Ютубе

На восьмой лекции (1 ноября) на примере задачи о длинной арифметике рассмотрели порядок составления алгоритма. Проходили литерный тип данных, типы литер, однобайтные, двухбайтные и другие кодировки, ASCII, Юникод, UCS-2, встроенные процедуры ORD и CHR. Шестнадцатеричная запись целых чисел и литерных литералов. Разница между 6AX и 6AH. Строки как массивы литер. Нуль-терминатор.

Псевдокод
Код:
Как увеличить число на единицу:

  Встаём на самую младшую цифру числа;
  Цикл: пока мы не вышли за рамки массива и данная цифра = 9:
    Меняем данную цифру на 0;
    Сдвигаемся левее
  Конец цикла;
  Если мы вышли за рамки массива:
    Увеличить количество цифр в числе;
    Самую старшую цифру числа заменить на 1;
    Самую младшую цифру числа установить в 0
  Иначе:
    Увеличить данную цифру на 1
  Конец если


Задания на практику

Написать процедуры, которые производят указанное действие или отвечают на указанный вопрос:
  • Удалять лидирующие/хвостовые пробелы строки.
  • Симметрична ли строка?
  • Подсчитать количество вхождений данной литеры в данную строку.
  • Удалить все вхождения данной литеры в строку.
  • Заменить определённую литеру (литеру с заданным номером) в строке на другую литеру или цепочку литер.
  • Заменить все вхождения некоторой заданной литеры (заданной — в данном случае это не номер, а именно литера, CHAR) на некоторую другую заданную литеру или строку.
  • Определить количество вхождений заданной подстроки в строку.
  • Вернуть место K-го вхождения данной литеры в строку.
  • Проверить, является ли строка записью целого неотрицательного числа, т. е. содержит только цифры.
  • Заменить кратные (подряд идущие) пробелы одиночными.
  • Перевести строку, содержащую запись целого неотрицательного числа (длина строки не превышает 9 литер) в величину типа INTEGER.
  • Удалить все лидирующие нули в записи целого неотрицательного числа, кроме последнего. Строка '001122' переводится в строку '1122', строка '0000' — в '0'.
  • Перевести число типа INTEGER в строку.
  • Правда ли, что строка состоит только из а) больших латинских букв? б) вообще из латинских букв, больших или маленьких?
  • Входит ли одна строка в другую как подстрока?
  • Переставить первую литеру в конец данного слова.
  • Переставить первую литеру в конец каждого слова в данной строке.
  • Сколько раз одна строка входит в другую как подстрока; вхождения могут перекрываться, например строка lala входит в строку lalalal два раза.
  • Входит ли одна строка в другую как подпоследовательность? Т. е. литеры второй строки идут в первой строке в том же порядке, но не обязательно подряд. Иначе говоря, можно ли в первой строке вычеркнуть некоторые литеры, чтобы осталась вторая строка?
  • Найти количество чисел в строке; числом считаем произвольную последовательность подряд идущих цифр, перед которой и вслед за которой стоят не цифры; например, в строке '12 + x= 123 5 0 000 0a' шесть чисел.
  • Количество пар рядом стоящих одинаковых литер; например, в строке abbacccdddd имеется шесть таких пар.
  • Строку расщепить на две строки: в первую входят 1-й, 3-й, 5-й и т. д. литеры строки, во вторую — 2-й, 4-й, 6-й и т. д. литеры.
  • Если в строке подряд идёт несколько одинаковых литер, то вычеркнуть все, вроме одной.
  • Удалить в строке все вхождения её первой литеры.
  • Поменять в строке первую литеру со второй, третью с четвёртой, пятую с шестой и т. д.; если в строке нечётное количество литер, то последнюю литеру оставить на месте.


Последний раз редактировалось kekc_leader Четверг, 07 Апрель, 2022 03:47, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Апрель, 2022 03:47 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Девятое занятие по программированию состоялось в светлый праздник годовщины Великой Октябрьской социалистической революции 7 ноября в 11:30.

На девятой лекции (7 ноября) проходили сортировку. Понятие об упорядоченности по возрастанию, по убыванию, по невозрастанию, по неубыванию. Разобрали и вместе реализовали сортировку вставками. Определили алгоритм сортировки выбором.

Код:
        упорядоч. |    не упорядоч.
      [* * * * * * * * * * * * * ... * * *]
       0 1 2 3 4 5 6 7 8 9 ...
   N = 7

  a:  64  51  73  15  24  88  38
      0   1   2   3   4   5   6
  B = 1

  a:  51  64  73  15  24  88  38
      0   1   2   3   4   5   6
  B = 2

  a:  51  64  73  15  24  88  38
      0   1   2   3   4   5   6
  B = 3

  a:  15  51  64  73  24  88  38
      0   1   2   3   4   5   6
  B = 4            Хотим найти такой (i - 1)-й элемент массива a,
                   который был бы меньше (или равен) tmp.

  tmp = 24     tmp := a[b]

  a:  15  24  51  64  73  88  38
      0   1   2   3   4   5   6
  B = 5

  a:  15  24  51  64  73  88  38
      0   1   2   3   4   5   6
  B = 6

  tmp = 38    i = 6  ->  i = 2

  a:  15  24  38  51  64  73  88
      0   1   2   3   4   5   6
  B = 7


Задание на практику

Реализовать алгоритм сортировки выбором.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Апрель, 2022 03:54 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
На десятой лекции (8 ноября) проходили работу со строками, повторили понятие и принцип работы нуль-терминированных строк.

Задания на практику

Реализовать следующие процедуры:

Процедура, которая в каждом слове циклично сдвигает литеры на K позиций влево.
Например: `'привет как дела' при K = 2 становится 'иветпр кка ладе'`.

(* Вставляет строку what в строку s на позицию to так, что s[to] = what[0] *)
PROCEDURE Insert(VAR s: ARRAY OF CHAR; what: ARRAY OF CHAR; to: INTEGER);

(* Первую букву, найденную в строке, делает заглавной, остальные - строчными. Пример: '322привет' -> '332Привет' *)
PROCEDURE Capitalize(VAR s: ARRAY OF CHAR);

(* Первую букву каждого предложения в строке s делает заглавной, остальные - строчными. Пример: 'привет? да' -> 'Привет? Да' *)
PROCEDURE Capitalize(VAR s: ARRAY OF CHAR);

(* Добавляет what в конец строки s. *)
PROCEDURE Append(what: ARRAY OF CHAR; VAR s: ARRAY OF CHAR);

(* Возвращает TRUE, если строки равны без учёта регистра. *)
PROCEDURE CompareI(a, b: ARRAY OF CHAR): BOOLEAN;

(* Начинается ли строка s с подстроки with? *)
PROCEDURE StartsWith(s, with: ARRAY OF CHAR): BOOLEAN;

PROCEDURE Repeat(s: ARRAY OF CHAR; n: INTEGER; VAR out: ARRAY OF CHAR);

PROCEDURE NextWord(s: ARRAY OF CHAR; start: INTEGER;
VAR index, len: INTEGER);

Пример работы процедуры NextWord
Код:
NextWord('привет как дела', 0, index, len);
index = 0  len = 6

NextWord('привет как дела', 6, index, len);
index = 7  len = 3
                 (10 = 7 + 3 = index + len)
NextWord('привет как дела', 10, index, len);
index = 11  len = 4

NextWord('привет как дела', 15, index, len);
index = ?   len = 0


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Апрель, 2022 00:34 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Цитата:
Девятое занятие по программированию состоялось в светлый праздник годовщины Великой Октябрьской социалистической революции 7 ноября...
Задание на практику
Реализовать алгоритм сортировки выбором.

А должно было быть: пальба холстыми по музею-Эрмитажу с последующим вскарабкиванием на кованую ограду

PS: \-8Ж ну ё-моё, так паскудно опошлить информатику...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB