Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Работа со строками в объектно-ориентированном программировании. Оператор цикла с параметрами




Для языков программирования характерны не только возможности работы с числовой информацией, но и со строковой. Напомним, что для работы с числами мы использовали два основных типа данных: Integer (целый) и Real (вещественный).

Например, var a: integer; b: real;

Для работы со строками необходимо использовать тип данных 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. Функция Copy (s,pos,n) - возвращает часть строки s длиной n, начиная с позиции pos.

Пример: S:='пароход'; t:=copy(s,1,3) => 'пар'

5. Сцепление строк - функция Concat (s1,s2,s3,…,sn)

Пример: Concat ('к','о','т') => 'кот'

6. Функция Pos (s1,s2) - поиск одной строки в другой. Возвращает номер символа, начиная с которого строка s1 является частью s2.

Пример: pos ('cd','abcdf') => 3

Лабораторная работа №9

Рассмотрим алгоритм решения задачи, в которой нужно подсчитать количество вхождений символа «а» в строку. Используем компоненты классов TEdit и TMemo для ввода строки и вывода результата.

Var s: string;

i, k: integer;

Procedure TForm1.Button1Click(Sender: TObject);

Begin

s:=edit1.text; //ввод строки

For i:=1 to length(s) do //идем по строке

If s[i]=’a’ then k:=k+1; {если i-ый символ а, тогда увеличивай счетчик k}

Memo1.text:=IntToStr(k) //вывод результата

End;

Пусть форма будет выглядеть следующим образом:

Задания для самостоятельной работы:

1. Дана строка s: Найти количество вхождений букв a,c,d в строку.

2. Найти количество цифр в строке.

3. Сцепить несколько строк в одну.

4. Из данной строки выбрать цифры и сформировать из них новую строку.

5. Найти количество слов, начинающихся на букву с.

6. Подсчитать количество слов в строке.

7. Определить начинается и заканчивается ли слово одной буквой.

8. Удалить каждую четную букву в строке.

9. Проверить одинаковое ли число открытых и закрытых скобок в строке.

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

Программирование циклических алгоритмов. Циклы «до» и «пока»

Как уже говорилось, известны три типа циклических алгоритмических структур. Была рассмотрена только одна из них – цикл с параметром. Поговорим об остальных:

- цикл с предусловием

- цикл с постусловием

Существуют операторы для их реализации.

1. Цикл с предусловием (цикл-«пока») - наиболее универсальная циклическая структура. Реализуется оператором While. Формат оператора:

While <логическое выражение> do <тело цикла>

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

2. Цикл с постусловием (цикл-«до») имеет формат

Repeat < тело цикла > until < логическое выражение >

Повторяется выполнение тело цикла. Цикл заканчивается, когда логическое выражение становится истинным. Тело цикла с постусловием выполняется хотя бы один раз. Использование операторных скобок для ограничения тела цикла не требуется.

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

Break – реализует немедленный выход из цикла

Continue – обеспечивает досрочное завершение очередного прохода цикла.

Лабораторная работа №10

Задача: Вывести 5 одинаковых надписей: «Программа цикла»

Для вывода повторяющегося действия нам понадобиться описать переменную i целого типа, обработать события OnClick для кнопки Button1. В теле процедуры необходимо описать нижеследующий метод:

procedure TForm1.Button1Click(Sender: TObject);

begin

for i:=1 to 5 do

Memo1.Lines.Add('Программа цикла')

end;

Рассмотрим пример решения задачи: найти сумму ряда s=1+1/2+1/3+…+1/k.

Для задачи наиболее оптимальным алгоритмом решения будет цикл. Для того чтобы выделить повторяющие части запишем ряд следующим образом: s=1/1+1/2+1/3+…+1/k.

Заметим, что числители постоянен и равен 1. Знаменатели постоянно увеличиваются на 1 в интервале от 1 до k. Таким образом, общий вид элемента ряда = 1/i, где i – изменяющийся знаменатель. Следовательно, запишем метод решения задачи:

Var k,i: integer; s: real;

Begin

k:=StrToInt(Edit1.Text); s:=0;

For i:=1 to k do s:=s+1/i; {i пробегает все значения знаменателя от 1 до k (1, 2, 3, …, k) изначально s=0, при k=1 s=0+1/1, s становится равным 1; при k=2 s=1+1/2, s становится равным 1,5 и т.д.}

Memo1.Text:=FloatToStr(s);

End;

Задания для самостоятельной работы:

1. Вывести таблицу умножения на любое число, введенное с клавиатуры.

2. Вывести таблицу значений функции y=sin(x) в интервале 0..1

3. Вывести 4 надписи: «На окне сидело n кошек», 1£n£4.

4. В интервале [0,20] подсчитать количество четных чисел и чисел, которые делятся на 3.

5. Вычислить сумму натурального ряда чисел от 1 до n.

6. Вычислить сумму чисел s=1/(p+2)+2(p+2)+3/(p+2)+…+p/(p+2).

7. Вычислить произведение чисел кратных 5 ряда от 1 до n.

8*. Вычислить сумму чисел s=(1+3+5+…+2*n-1)3-(2+4+6+…+2*n)2.

9*. Составить программу для проверки утверждения: «Результатами вычислений по формуле х2+х+17 при 0≤х≤15 являются простые числа». Все результаты вывести на экран (простое число – число которое делится только на себя и на единицу).

10*. Покупатель должен заплатить в кассу s рублей. У него имеются 1, 2, 5, 10, 50, 100, 500, 1000-рублевые купюры. Сколько купюр разного достоинства отдаст покупатель, если он начнет платить с самых крупных? (использовать процедуру Continue).

11*. Написать программу, которая запрашивает исходные данные и производит над ними выбранное пользователем действие. Выбор действий осуществляется с помощью меню. Исходные данные – числа a и b. Меню действий:

1. – сложить

2. – умножить

3. – вычесть

4. – разделить

5. – выход

Результат выводить после каждого действия





Поделиться с друзьями:


Дата добавления: 2015-11-05; Мы поможем в написании ваших работ!; просмотров: 913 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2285 - | 2064 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.