Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб.раб. программирование.pdf
Скачиваний:
111
Добавлен:
21.05.2015
Размер:
764.95 Кб
Скачать

Лабораторная работа 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.

©ИМПИ ОГПУ