Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
10_программирование.doc
Скачиваний:
8
Добавлен:
09.11.2019
Размер:
1.07 Mб
Скачать

Локализация имен.

Все имена, описанные в разделе описаний программы доступны всем подпрограммам. Они являются глобальными. Имена, описанные в разделе описаний подпрограмм доступны только данной подпрограмме и подпрограммам, описанным в ней (локальные имена). Локальные имена "живут" только внутри подпрограммы и не занимают места в памяти, пока нет обращения к данной подпрограмме. Использование глобальных имен не рекомендуется, подпрограмма должна лишь изменить параметр. Имена глобальных и локальных величин могут совпадать, в этом случае преимуществом для процедуры обладает локальная величина.

Часто бывает, что процедура генерирует некоторое значение, в этом случае подпрограмму лучше описать как функцию. Функция отличается от процедуры тем, что результат ее работы возвращается в виде значения этой функции. Если процедуры мы используем в программе как команды, то функции- как значения; их можно использовать в выражениях, выводить на экран, сравнивать.

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

Var

a1,b1,c1,a2,b2,c2: real; {величины сторон}

Function pl (a,b,c:real): real;

var p,s:real;

begin

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

pl:=s;

end;

BEGIN

Write('Введите длины сторон первого треугольника ');readln(a1,b1,c1);

Write('Введите длины сторон второго треугольника ');readln(a2,b2,c2);

If pl(a1,b1,c1)>pl(a2,b2,c2) then

writeln('площадь первого треугольника больше')

else

if pl(a1,b1,c1)<pl(a2,b2,c2) then writeln('площадь второго треугольника

больше')

else writeln ('треугольники равновелики');

END.

В теле функции имени функции должно присваиваться вычисленное значение.

Задачи

  1. Вывести на экран все простые числа, принадлежащие числовому отрезку от А до В

  2. Составить программу, определяющую, в каком из данных двух чисел больше цифр

  3. Сообщить все натуральные совершенные числа до 1000. (совершенным является число, равное сумме своих делителей, не включая себя самого, например 6=1+2+3)

  4. Н айти сумму ряда, общий член которого задан формулой

с точностью 0,001 ( написать функцию- факториал и функцию- степень)

  1. Н айти сумму ряда с точностью 0,001 общий член которого задан формулой

  2. Найти наибольший общий делитель трех данных чисел. (используйте функцию, значением которой будет НОД двух чисел)

  3. Треугольник задан координатами своих вершин. Составить программу вычисления его площади (написать функцию значением которой будет длина стороны).

  4. Даны координаты вершин четырехугольника ABCD. Найти сумму длин его диагоналей. Данные для ввода: А(0;1) В(2;5) С(2;0) D(4;8)

Обработка строковых величин

Строковый тип данных- это структура данных, т.е. данные, состоящие из отдельных компонентов. Компонентами строки являются символы. Количество символов строковой переменной не может превышать 255. Строковая переменная описывается:

Var <имя>: string[<длина строки>]

К каждому символу строки можно обратиться по общему имени и порядковому номеру символа в строке. Например, если переменной с именем S присвоили строку: S:='Мама мыла раму', то буква "у" находится в S[14], а буква "р" в S[11] . Обратите внимание, что пробел является таким же символом.

Для работы со строками определены следующие стандартные процедуры и функции:

Length(<строка>)

Copy(<строка>,n1,n2)

Pos(<подстрока>,<строка>)

Concat (<строка1>,<строка2>,…)

Delete(<строка>,n1,n2)

Insert (<подстрока>, <строка>, <n>)

Val (<строка>, <число>, <ошибка>)

Str (<число>, <строка>)

значением функции является целое число, соответствующее количеству символов строки

значением является подстрока, вырезанная из строки, начиная с символа n1 длиною n2

значением является целое число-номер позиции первого вхождения подстроки в строку.

Значением функции будет строка, составленная из строк- аргументов в указанном порядке

Процедура удаления из строки n2 символов, начиная с n1-го

В строку, начиная с позиции n вставляется подстрока

Строковая величина преобразуется в числовую

Числовая величина преобразуется в строковую

Пример: Подчитать количество вхождений символа "а" в данную строку.

Решение: Будем по очереди просматривать каждый символ строки с первого до последнего, номер которого равен длине строки, и сравнивать его с "а". При совпадении увеличиваем счетчик.

Поскольку результатом алгоритма будет целое число, соответствующее количеству вхождений указанного символа в строку, опишем функцию целого типа, аргументом которой будет строка.

Var st:string;

Function count(st:string):byte;

Var k,i:byte;

begin

k:=0;

For i:=1 to length(st) do

If st[i]='a' then inc(k);

Count:=k;

end;

Begin

Write('введите строку'); readln(st);

Writeln('количество вхождений равно ', count(st));

End.

Пример: заменить в данной строке все вхождения подстроки St1 на подстроку St2

Решение

Var

st,st1,st2:string;

k,i: byte;

Begin

Write(' введите строку '); readln(st);

Write('Что меняем в ней? '); readln(st1);

Write(' На что меняем ? '); readln(st2);

While pos (st1,st)<>0 do

begin

k:= pos (st1,st); { номер позиции первого вхождения подстроки st1}

delete(st, k, length(st1)); { удаляем кол-во символов подстроки st1}

insert(st2,st,k); {С этого же символа вставляем подстроку st2}

end;

write (st);

readln;

End.

Задачи

  1. Сообщить номер первой буквы а во фразе.

  2. Сколько слов во фразе?

  3. Какая буква, «а» или «б» во фразе встречается раньше?(использовать функцию)

  4. Сколько во фразе гласных? (Написать функцию логического типа, аргументом которой является символ)

  5. Сколько раз во фразе встречается ее последняя буква

  6. Какая буква, «а» или «б» во фразе встречается чаще?(использовать функцию)

  7. Является ли слово Перевертышем? (одинаково читается в обе стороны)

  8. Из скольких букв состоит самое длинное слово фразы (использовать функцию)

  9. Есть ли во фразе буквы, встречающиеся трижды?

  10. Выделить в слове все буквы «-о-»

  11. Все ли слова фразы различны?

  12. Удвоить все буквы о

  13. Заменить во всех словах первую букву заглавной

  14. Сколько во фразе гласных?

  15. Сколько слов фразы начинается с буквы "а"

  16. После каждой буквы "а" вставить строку st.

  17. *Напечатать все различные слова предложения.

  18. Найти сумму всех чисел строки.

  19. *В строке символов без пробелов найти самую длинную последовательность- "палиндром"

  20. Какой символ чаще всего встречается во фразе?

  21. Дана строка, содержащая текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

  22. *Даны две фразы X и Y. Выяснить, можно ли из букв фразы Х, меняя их местами, получить фразу Y . Буквы можно использовать 1 раз

  23. Дана строка, содержащая текст на русском языке. В предложе­ниях некоторые из слов записаны подряд несколько раз (пред­ложение заканчивается точкой или знаком восклицания). Получить в новой строке отредактированный текст, в котором удалены подряд идущие вхождения слов в предложениях.

  24. Дана строка, содержащая текст на русском языке. Опреде­лить, сколько раз встречается в ней самое длинное слово

  25. Дана строка, содержащая текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте

  26. Дана строка, содержащая текст на русском языке и некоторая буква. Найти слово, содержащее наибольшее количество ука­занных букв.

  27. Дана строка, содержащая текст на русском языке. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет.

  28. Дана строка, содержащая текст. Сколько слов в тексте? Сколько цифр в тексте?

  29. Дана строка, содержащая текст, включающий русские и анг­лийские слова. Получить новую строку, заменив в исходной все заглавные буквы строчными и наоборот.

  30. Дана строка, содержащая зашифрованный русский текст. Каждая буква заменяется на следующую за ней (буква я заме­няется на а). Получить в новом файле расшифровку данного текста.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]