Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 20

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 20 страницаОсновы программирования (947332) страница 202013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 20)

Процедура Str(x[:w [:d]], St) - преобразует результат выражения x встроку st, содержащую запись этого числа в виде последовательности симво­лов (как при выводе).Примечание. По правилам описания конструкций языков программирования используе­мые в описании заголовков процедур и функций квадратные скобки означают, что соответст­вующий параметр может быть опущен.Значение w, если оно указано, интерпретируется как длина строки, азначение d, если оно указано - как количество цифр дробной части для веще­ственных чисел, например:х:=-5.67;Str(x:7:3,sl);{получим строку ' -5.670'}Процедура обычно используется для формирования строк, включающихчисловую информацию.5.

Процедура Val(St, х, Code) - преобразует строку St с записью числа ввиде последовательности символов во внутреннее представление целого иливещественного числа и помещает его в переменную х. В целочисленной пе­ременной Code процедура возвращает код ошибки: О, если преобразованиепрошло успешно, и номер ошибочного символа, если строка st не являласьдопустимой формой записи числа.1164. Структурные типы данныхПроцедура обычно используется, если необходимо предотвратить не­корректный ввод чисел, например:Var S:strmg; Code:mteger; a:real; ....„repeatWrite('Beedume число a:');ReadLn(S);{вводим строку}Val(S,afCode); {пытаемся преобразовать строку в число}ifCodeoOthenWriteLn('Число введено не верно *);until Code-0;...{до получения правильного значения числа}6.

Функция Copy(St,index,count):string - возвращает фрагмент строки Stдлиной count символов, начиная с символа с номером index, например:S1 = 'qqqEEEEEEuuuuu';S:= Copy(SlJ,6);{получим строку 'ЕЕЕЕЕЕ'}7. Функция Pos(St2,Stl):integer - возвращает номер позиции первоговхождения подстроки St2 в строку Stl. Если вхождение не найдено, то функ­ция возвращает О, например:S] = 'qqqEEppEEuuuuu':i:= Pos('EE\Sl);{получим i=4}8. Функция UpCase(ch):char - возвращает символ, соответствующийсимволу верхнего регистра для ch, если таковой имеется, либо сам символch, если для него не определен символ верхнего регистра.В качестве первого примера посмотрим, как будет выглядеть решениезадачи из примера 4.3 с использованием строковых типов.Пример 4.14. Дана строка не более 40 символов, состоящая из слов, раз­деленных пробелами.

Разработать программу удаления «лишних» пробелов.Лишними считать пробелы в начале строки до первого символа, второй и бо­лее пробелы между словами и пробелы в конце строки.При решении данной задачи с использованием строкового типа отпада­ет необходимость посимвольного анализа строки. Функция Pos, которой вкачестве подстроки заданы два пробела подряд, позволит определить все ме­ста в строке, где записаны несколько пробелов подряд. Поочередно удаливлишние пробелы, получим строку, в которой останется только проверить ипри необходимости удалить пробел в начале и пробел в конце (рис. 4.28).

Ни­же приведен текст программы.Program ex;Var st:string[40];k:byte;117Часть I. Основы алгоритмизации и процедурное программированиенет1.delete(St, 1,1)k:=length{st):st[k] = 'J>нет(1delete(st,k,l)Конец JРис. 4.28. Схема алгоритма программы удаления «лишних» пробеловBeginWriteLnCВведите строку длиной <= 40 символов');ReadLn(st):Write (*Введенная строка:');WriteLn(^);k:-posC^^ \st); {проверяем, есть ли сдвоенные пробелы?}while к<>0 do {пока есть сдвоенные пробелы}begindelete(st,k,l);{удаляем первый пробел}k:=posC^^ ^,st); {проверяем, есть ли сдвоенные пробелы?}end;ifst[l]= ^^^ then delete(stJJ);{удалили пробел в начале}Л:;= length(st);ifst[kj= ^^^ then delete(st,kj); {удалили пробел в конце}WriteLn('Результат:');iflength(st.)<>0 then WnteLn(st)else WriteLn('Строка codepjfcana только пробелы.');End1184.

Структурные типы данныхПример 4Л5. Разработать программу, которая вводит строки, содержа­щие фамилию, имя, отчество и год рождения, а выводит - строки, содержа­щие фамилию, инициалы и возраст на текущий год. Например:Иванов Иван Иванович 1956 => Иванов И.И. 45Завершение ввода - при чтении пустой строки.Для выполнения операций над строками используем строковые функ­ции. Обработку строк будем выполнять в цикле до ввода пустой строки. Нач­нем с определения местоположения первого пробела, который отделяет имяот фамилии.

Для этого используем функцию Pos, а результат запишем в пе­ременную с1. Затем перепишем в строку результата фамилию, пробел и пер­вый инициал. Туда же дописываем точ!^.Для поиска следующего пробела придется копировать в рабочую строкучасть исходной строки, начиная с символа после первой буквы имени. В этойстроке вновь определяем местоположение пробела и заносим результат в пе­ременную с2. Теперь можно переписать в строку-результат второй инициал.Удаляем из рабочей строки начало, включая второй инициал, и вновь оп­ределяем местоположение пробела, выделяя подстро!^, содержащую годрождения.

Удаляем из рабочей строки остаток отчества и преобразуем стро­ку в число. Полученное значение вычитаем из текущего номера года, а ре­зультат вновь преобразуем в строку и дописываем к строке результата. Вы­водим результат на экран и вводим следующую строку.Несколько первых шагов преобразования показаны на рис. 4.29.Program stroka;Var st,strez,strab:string[40]:cl, c2, c3, n, old, code:word;cl[T|ИсходнаястрокаSt T""^1И|в 1 a 1HI 01 в 1 | и | в | а | н | | и | в | а [ н [ )( | в | и | ч |^с2|1|9|5|б|Рабочая строка 1 4 1strab^''|в|а|н|| и | в | а | н | () РвУи|чУ 1 1 ] 9] 5 |Т]г1 1""^^Строка резулbxaxastrez j ^|И|в|а|н|о|в|\Щ.\2кШЖЁШ^t ] 1 1 1 1 1 IIРис.

4.29. Начало решения задачи преобразования строк119Часть I. Основы алгоритмизации и процедурное программированиеBeginWriteLn('Введите строку. Завершение - ввод пустой строки.');ReadLn(st);while sto^^ do {цикл ввода, преобразования и вывода строк}begincl:=Pos(' ',^/у);{определим местоположение первого пробела}strez:=Copy(stJ,c] + lJ+ \ V {перепишем фамилию, инициали добавим точку}strab:=Copy(st,cl+2,Length(st)-cJ-l);{копируем остаток строкив рабочее поле}c2:=Pos(' \strab); {определяем местоположение второго пробела}strez:=strez+strabfc2+lj+ \ V {добавляем к результату второйинициал и точку}Delete(strabJ,c2+l);{удаляем распознанную часть}c3:=PosC \strab); {onpmQ^HQM местоположение третьего пробела}Delete(strabJ,c3);{удаляем остаток имени}Val(strab,n,code);{преобразуем год рождения в число}old:=2001'n;{определяем возраст}Str(old,strab);{преобразуем возраст в строку}strez:=strez-^ ' '+strab;{добавляем возраст в результат}WriteLn(strez);{выводим результат}WriteLnCВведите строку.

Завершение- ввод пустой строки. ');ReadLn(st);end;End.4.6. Практикум. Обработка и поиск символьной информацииВ основе обработки символьной информации, как правило, лежит разби­ение текста на слова и выполнение некоторых операций со словами.Пример 4.16. Разработать программу, которая определяет в строке коли­чество слов длиннее четырех символов. Слова разделены одним пробелом.Решение задачи будем осуществлять следующим образом. Вначале убе­димся, что в конце строки есть пробел. Если пробела нет, тогда вставим его.Затем, пока длина строки не станет равной нулю, будем определять местопо­ложение пробела и, соответственно, длину слова, которая на единицу мень­ше номера пробела.

Если длина слова больше четырех символов, то добавимединицу к счетчику слов. Затем удалим обработанное слово вместе с пробе­лом и перейдем к обработке следующего слова.Program strokal;Var St: string;p, spos: integer;1204. Структурные типы данныхBeginWriteLn('Введите строку');ReadLn(st); {вводим строку}р:=0;{обнуляем счетчик слов }ifst[Length(st)] <> ' ' then st:=st-^ ' V {если в конце нет пробела,то добавим его}while Length(st)<>0 dobeginspos:^ Pos(' \ St);ifspos>5 thenp:=p+J;{определяем длину слова}Delete(st,l,spos);{удаляем слово}end;WriteLnCB строке \ p, ' слов(а), длина которых больше четырех. ) ;End.Пример 4.17. Разработать программу, меняющую в строке односочетание букв на другое.С использованием строковых функций задача решается просто. Вводимстроку и оба сочетания букв.

Затем определяем вхождения заменяемого со­четания, удаляем его и вставляем на это место заменяющее сочетание.Program Stroka;Var mbyte; s, si, s2:string;BeginWriteLnCBeediwie исходную строку);ReadLn(s);WriteLnCВведите заменяемое слово: ) ;ReadLn(sl);WriteLn('Введите заменяюгцее слово: ) ;ReadLn(s2);n:=Pos(sl,s);{определяем вхождение заменяемого сочетания}while п > О dobeginDelete(s,n,Length(s 1)); {удаляем заменяемое сочетание}Insert(s2,s,n);{вставляем заменяющее сочетание}n:=Pos(sl,s); {определяем следующее вхождение}end;WriteLn(Teзyльmam : \s);ReadLn;EndПример 4.18. Разработать программу, меняющую в строке местами сло­ва с указанными номерами.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее