- •Лабораторная работа 1. Реализация линейных алгоритмов
- •Вариант 1
- •1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
- •Вариант 2
- •1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
- •Вариант 3
- •1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой.
- •Вариант 4
- •1. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
- •Лабораторная работа 2. Условный оператор
- •Лабораторная работа 3. Оператор варианта.
- •Лабораторная работа 4. Строки. Операторы цикла.
- •Программирование численных циклических алгоритмов. Циклы «до» и «пока»
- •Лабораторная работа 5. Подпрограммы
- •Лабораторная работа 6. Массивы
- •Лабораторная работа 7. Множества
- •Лабораторная работа 8. Комбинированный тип данных (Запись)
- •Лабораторная работа 9. Работа с файлами
- •Лабораторная работа 10. Процедуры и функции модуля GraphABC
- •Графические примитивы
- •Подпрограммы для работы с пером
- •Лабораторная работа 11. Создание собственных модулей.
- •Лабораторная работа 12. Решение простейших задач в Console Application
- •Лабораторная работа 13. Динамические массивы
- •Лабораторная работа 14. Тип данных Variant
- •Лабораторная работа 15. Тип TDateTime
- •Лабораторная работа 16. Простейшие задачи на форме
- •Лабораторная работа 17. Флажки и переключатели
- •Лабораторная работа 18. Работа с меню
- •Главное меню
- •КОНТЕКСТНОЕ МЕНЮ
- •Лабораторная работа 19. Работа со списками
- •СПИСКИ ВЫБОРА
- •ВЫПАДАЮЩИЕ СПИСКИ
- •Лабораторная работа 20. Таймер. Работа с календарем
- •Лабораторная работа 21. Таблица строк
- •Лабораторная работа 22. Графика в Delphi
- •Лабораторная работа 23. Калькулятор
- •Лабораторная работа 24. Моделирование движения. Пуля
- •Лабораторная работа 25. Моделирование движения по кругу
- •Лабораторная работа 26. Цветомузыка
- •Лабораторная работа 27. Проигрыватель
- •Лабораторная работа 28. Цветочная поляна
- •Лабораторная работа 29. QUEST
- •Лабораторная работа 30. Тир
- •Лабораторная работа 31. Компоненты Delphi для взаимодействия с серверами автоматизации MS Office
- •Лабораторная работа 32. Обмен данными между программами с помощью DDE
- •Лабораторная работа 33. Технология Drag & Drop
- •Лабораторная работа 34. Использование динамически подключаемых библиотек (DLL).
- •Лабораторная работа 35. Создание собственного класса
- •Лабораторная работа 36. Конструкторы и деструкторы
- •Лабораторная работа 37. Создание собственных компонентов
Лабораторная работа 4. Строки. Операторы цикла.
Для работы со строками необходимо использовать тип данных string (var s : string). Отличительной чертой этого типа данных является то, что мы
можем обратиться как к строке целиком, так и посимвольно, то есть к каждой букве в отдельности. Для этого нам необходимо использовать оператор цикла.
Цикл — многократное повторение последовательности действий по некоторому условию. Известны три типа циклических алгоритмических структур, но при работе со строками будем использовать одну из них – цикл с параметром. Он имеет две формы записи:
For <параметр>:=<нач. зн.> to <кон. зн.> do <тело цикла>;
For <параметр>:=<кон. зн.> downto <нач. зн.> do <тело цикла>;
Цикл повторяется, пока значение параметра лежит в интервале между начальным и конечным значениями параметра. Причем эти выражения (начального и конечного значение) вычисляются только один раз в начале выполнения цикла. Параметр обязательно должен быть целого типа.
В первом варианте при каждом повторении цикла значение параметра изменяется на следующее значение в данном типе (для целого типа — увеличивается на 1). Понятие шаг. Во втором варианте при каждом повторении цикла значение параметра изменяется на предыдущее значение параметра (для целого типа - уменьшается на единицу).
При работе со строкой запишем оператор цикла следующим образом: for i:=1 to length(s) do (обращение к символам от первого до последнего в строке s). Кроме того, используются следующие встроенные процедуры и функции:
1. Функция length (s) определяет длину строки. Результат - целое число 0..255.
Пример: дана строка, подсчитать количество цифр в строке.
var s : string; k : integer;
k := length(s);
2.Процедура Delete (s,pos,n) - удаление части строки. Удаляет из строки s n-символов начиная с символа № pos.
Пример: s := 'рогатка'; Delete(s,5,3); получим ‘рога’.
3. Процедура Insert (s1,s2,pos). Вставка части строки.
S1-что, S2-куда, Pos-с какой позиции.
© ИМПИ ОГПУ
Пример: S1 := 'свет'; Insert(s1,'o',2); получим 'совет'.
4.Функция s1 := Copy (s,pos,n) - возвращает часть строки s длиной n, начиная с позиции pos.
Пример: S := 'пароход'; t := copy(s,1,3); получим 'пар'.
5.Сцепление строк - функция Concat (s1,s2,s3,…,sn).
Пример: s := Concat ('к','о','т'); получим 'кот'.
6.Функция Pos (s1,s2) - поиск одной строки в другой. Возвращает номер символа, начиная с которого строка s1 является частью s2.
Пример: k := pos ('cd','abcdf'); получим 3, где k – целое число.
Рассмотрим алгоритм решения задачи, в которой нужно подсчитать количество вхождений символов «а» и «b» в строку.
Var s : string;
i, k : integer;
Begin
Write(‘Введите строку = ’); Readln(s);
For i := 1 to length(s) do {идем по строке} If (s[i]=’a’) or (s[i]=’b’) then k := k+1;
{если i-ый символ а или b, тогда увеличивай счетчик k}
Writeln(‘количество вхождений =’ ,k) {вывод результата}
End.
Программирование численных циклических алгоритмов. Циклы «до» и «пока»
Как уже говорилось, известны три типа циклических алгоритмических структур. Была рассмотрена только одна из них — цикл с параметром. Поговорим об остальных:
∙цикл с предусловием,
∙цикл с постусловием.
Существуют операторы для их реализации.
1. Цикл с предусловием (цикл-«пока») — наиболее универсальная циклическая структура. Реализуется оператором While. Формат оператора:
While <логическое выражение> do <тело цикла>
© ИМПИ ОГПУ
Пока значение логического выражения истинно (true), выполняется тело цикла, тело может быть простым или составным оператором.
2. Цикл с постусловием (цикл-«до») имеет формат
Repeat < тело цикла > until < логическое выражение >
Повторяется выполнение тело цикла. Цикл заканчивается, когда логическое выражение становится истинным. Тело цикла с постусловием выполняется хотя бы один раз. Использование операторных скобок для ограничения тела цикла не требуется.
Для гибкого управления циклическими операторами используют следующие процедуры:
Break – реализует немедленный выход из цикла.
Continue – обеспечивает досрочное завершение очередного прохода цикла.
Пример. Вычислить сумму натурального ряда чисел от 1 до N.
Программа будет состоять из трех частей, в которых повторяется решение этой задачи в использовании циклов While, Repeat и For.
Program Primer;
Var a, s : integer;
Begin
Write ('N='); readln (N); {цикл с предусловием}
a := 1; s := 0;
While a<=N do
Begin
end; s := s+a; a := a+1; Write('s1=', s);
{цикл с постусловием}
a := 1; s := 0; repeat
s := s+a; a := a+1 until a>N;
Write('s2=', s); {цикл с параметром}
s := 0;
for a := 1 to N do s := s+a; End. Write('s3=', s)
© ИМПИ ОГПУ
Задания для самостоятельной работы
Вариант 1.
1.Дана строка s: Найти количество вхождений букв a, c, d в строку.
2.Заменить цифры в строке звездочками.
3.Проверить одинаковое ли число открытых и закрытых скобок в строке.
4.Вывести таблицу умножения на любое число, введенное с клавиатуры.
5.Вычислить произведение чисел кратных 5 ряда от 1 до n.
6.Вычислить сумму чисел s=(1+3+5+…+2*n-1)3-(2+4+6+…+2*n)2.
Вариант 2.
1.Дана строка s. Найти количество вхождений знаков препинания в строку.
2.Вырезать гласные буквы из строки.
3.Удалить каждую четную букву в строке.
4.Вывести таблицу значений функции y=sin(x) в интервале 0..1.
5.Вычислить сумму чисел s=1/(p+2)+2(p+2)+3/(p+2)+…+p/(p+2).
6.Составить программу для проверки утверждения: «Результатами вычислений по формуле х2+х+17 при 0≤х≤15 являются простые числа». Все результаты вывести на экран (простое число – число которое делится только на себя и на единицу).
Вариант 3.
1.Дана строка s. Найти количество вхождений гласных букв.
2.Заменить цифры на символ «+» в строке.
3.Определить, начинается и заканчивается ли слово одной буквой.
4.В интервале [0,20] подсчитать количество четных чисел и чисел, которые делятся на 3.
5.Вычислить сумму ряда s=1-2+3-4+…-2*n+2*(n-1).
6.Покупатель должен заплатить в кассу s рублей. У него имеются 1, 2, 5, 10, 50, 100, 500, 1000-рублевые купюры. Сколько купюр разного достоинства отдаст покупатель, если он начнет платить с самых крупных? (использовать процедуру Continue).
Вариант 4.
1.Найти количество слов, начинающихся на букву с.
2.Из данной строки выбрать цифры и сформировать из них новую строку.
3.Подсчитать количество слов в строке.
4.Вывести таблицу значений функции y=cos(x) в интервале -π.. π.
5.Вычислить сумму натурального ряда чисел от 1 до n.
6.Вычислить сумму чисел s=(1+3+5+…+2*n-1)3-(2+4+6+…+2*n)2.
©ИМПИ ОГПУ