Для записи блока на диск предназначена команда все прописные буквы латинского алфавита
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
Рабочие листы и материалы для учителей и воспитателей
Более 2 500 дидактических материалов для школьного и домашнего обучения
Столичный центр образовательных технологий г. Москва
Получите квалификацию учитель математики за 2 месяца
от 3 170 руб. 1900 руб.
Количество часов 300 ч. / 600 ч.
Успеть записаться со скидкой
Форма обучения дистанционная
- Онлайн
формат - Диплом
гособразца - Помощь в трудоустройстве
311 лекций для учителей,
воспитателей и психологов
Получите свидетельство
о просмотре прямо сейчас!
Выберите документ из архива для просмотра:
Кодовая таблица целиком.pas
Стандартная часть кода ansi.jpg
Выбранный для просмотра документ Строки_2.doc
Юдин Андрей Борисович
учитель информатики МКОУ Плесской СОШ
Приволжского р-на, Ивановской обл.
Презентация с методическим сопровождением
«Задачи на обработку строк»
В презентации рассмотрен материал, не вошедши в первую часть презентации «Строки в Pascal ». Этот материал можно условно разделить на три части:
1. Разрезка строки (Слайды 1- 18)
2. Коды символов (Слайды 19- 30)
3. Способы решения задач с дополнительной переменной и без. (Слайды 31- 36)
Презентацию можно использовать на уроках информатики в «сильных» классах и на занятиях кружков и факультативов по программированию.
Разрезка строки
В различных задачах, в том числе и задачах С4 ЕГЭ по информатике, очень часто требуется обработать строку вводимую с клавиатуры. Для этого ее нужно разрезать на отдельные слова. Существует много способов реализации данной задачи. Я рассмотрю лишь некоторые, на мой взгляд, самые интересные и простые для понимания алгоритмы.
Слайд 1. Строку символов удобнее рассматривать как массив символов. Это упрощает понимание алгоритмов работы со строками, так как учащиеся уже работали с одномерными массивами. В принципе записи S : String [6]; и S : array [1..6] of char ; можно считать равнозначными. Хотя на самом деле это не совсем так. Длина строки в Паскале 255 символов, а массив можно сделать намного больше. И второе, на мой взгляд, главное отличие: строка при выводе и выводе рассматривается как единое целое, а массив необходимо вводить и выводить при помощи цикла. А вот обработка символьного массива и строки очень похожи. На данном слайде показаны как выполняются операции присваивания и проверки условий с элементами строки.
S [ i ]:=' A '; //присваивание
If ( S [ i ]=' A ') then … ; //проверка условий
Практически, так же как и с элементом одномерного массива. В приведенных мною решениях задач я буду делать упор на такой способ решения, по минимуму используя специальные функции обработки строк. Хотя в некоторых случаях использование таких функций может сделать алгоритм более простым.
Слайд 2. Сформулирована задача: (Задача 1) Вводится строка (с клавиатуры или из файла), представляющая Фамилия Имя Отчество (разделены пробелом). Составить программу присваивающую Фамилия Имя Отчество трем различным переменным.
Ее решение мы будем рассматривать далее.
Слайд 3. Показана идея решения данной задачи. Слова в данной задаче разделены пробелами. Поэтому все показанные далее способы сводятся к одной идее. Разбираем строку по буквам (различные виды циклов), Забираем символы из строки, пока не встретился пробел. Если очередной символ пробел, то переходим к следующему слову. И так далее.
Слайд 4. Показан алгоритм формирования новой строки с использованием цикла пока. Буквально:
берем первую букву;
пока очередной символ не пробел, выполняем:
в S 1 запоминаем очередной символ и
номер символа увеличиваем на 1.
Тож самое на Паскале:
while (s[i]<>' ') do begin
Слайд 5. Показан пример разрезки строки на три части с использованием трех последовательно соединенных циклов пока. Необходимо помнить, что в конце строки пробела нет, поэтому в последнем цикле сравниваем порядковый номер буквы с длинной строки. Иногда бывает выгоднее приписать к существующей строке в конце пробел:
S := S + ' ' ;
В некоторых учебниках такой способ называют метод барьерных элементов.
Слайд 6. Показана блок-схема решения задачи с использованием последовательно соединенных трех циклов пока.
Слайд 7. Показано как можно упростить данный алгоритм, заменив третий цикл на функцию COPY . Так как мы нашли номер последнего пробела, и нет смысла перебирать остатки строки.
Слайд 8. Показана блок-схема решения задачи, где вместо третьего цикла используется одна операция присваивания.
Слайд 9. Показано решение задачи, в котором цикл с предусловием заменен на цикл с постусловием.
Слайд 10. Показано решение задачи с использованием цикла с параметром. Идея решения в следующем: заводим переменную k . Которая будет хранить номер слова, являясь по сути дела переключателем. Перед циклом присваиваем k значение 1 и перебирая символы в строке переносим их в переменную S 1. Как только встретится пробел, номер слова увеличиваем на 1 (переключаем переключатель на второе слово) и начинаем заполнять S 2. И так далее.
Слайд 11. Показана блок- схема решения задачи при помощи цикла с параметром.
Слайд 12. Показано решение задачи с использованием функций обработки строк. Идея заключается в следующем: ищем первый пробел (функция вхождения подстроки в строку) копируем ( COPY ) фрагмент строки от начала до первого пробела в S 1. Удаляем (delete) часть строки от начала до первого пробела включительно и повторяем теже самые операции операции для S 2. Для S 3 останется последнее слово.
Слайд 13. Показана блок-схема решения задачи при помощи функций обработки строк. На данном примере хорошо видно, что использование специальных функций сводит алгоритм к линейному.
Слайд 15. Очень часто при решении задач на разрезку строки количество слов в строке заранее неизвестно. В этом случае можно завести массив строк длинной 255 ячеек. Даже если слова в строке будут состоять из одной буквы, то мы все равно целиком не заполним этот массив словами, так как строка не может превышать 255 символов, а слова нужно разделить пробелами. Ячейки массива являются переменными строкового типа, поэтому в них можно хранить целиковые слова. Идея алгоритма: Перебираем строку от первой до последней буквы. Начиная с первой ячейки, заполняем ее символами из строки, если встретится пробел, переходим к следующей ячейке и так далее пока строка не кончится. На данном слайде показана программа, реализующая данную идею.
Слайд 16. Показана блок-схема решения задачи, когда слова сохраняются в массиве.
Слайд 17. Если необходимости запоминать все слова нет, то можно обойтись без массива. Слова будут храниться в переменной А, и каждое следующее слово будет затирать предыдущее. В место, где полностью сформировано слово (у меня стоит просто вывод на экран) можно вставить процедуру, которая что-то с этой переменной в зависимости от условия задачи будет делать. На данном слайде показана программа, реализующая данную идею.
Слайд 18. Показана блок-схема решения задачи, когда слова по очереди хранятся в одной переменной.
Коды символов
Очень большой класс задач на символьные переменные проще решать, используя коды символов в кодовой таблице. По этому я рассмотрю несколько типовых на мой взгляд задач.
Слайд 19. Показан фрагмент кодовой таблицы. Даны интервалы для английских строчных, заглавных, русских строчных, заглавных букв и цифр.
Слайд 20. Даны определения функций языка Паскаль для работы с кодами символов. Функция Ord(S) – определяет порядковый номер символа. Функция Chr(i) – определяет символ с порядковым номером i.
Слайд 21. Пример и скриншот программы выводящей коды некоторых букв.
Слайд 22. Используя цикл с параметром можно просмотреть коды всех символов в кодовой таблице. Что и показано на этом слайде.
Слайд 23. Кодовая таблица, полученная на примере в предыдущем слайде достаточно неудобна для чтения. Поэтому воспользуемся оператором GotoXY который устанавливает текстовый курсор в указанное место на экране. На данном слайде приведена программа, которая выводит символы и их коды в 10 столбцов по 24 строки в каждом. В таком виде таблица более удобна.
Слайд 24. Показан скриншот работы программы выводящей кодовую таблицу.
Слайд 25. Показано решение задачи: (Задача 2) Составить программу которая считает сколько русских и сколько английских букв в строке введенной с клавиатуры. В данном примере две переменные S и S 1 увеличиваются в зависимости от того в каком интервале находится код i -го символа.
Слайд 26. Показано решение задачи сформулированной на слайде 25, но интервалы задаются в виде множеств. Причем в первом случае код символа используется как элемент множества:
if (b in [65..90]) or (b in [97..122]) then…
Во втором случае сам символ используется как элемент множества:
if (a[i] in ['А'..'Я']) or (a[i] in ['а'..'я']) then…
Слайд 27. Показано решение задачи: (Задача 3) Составить программу заменяющую все заглавные буквы на строчные. В строке вводятся русские и латинские буквы вразнобой. Идея решения заключается в том, что разница между кодами строчных и заглавных букв постоянна. Так как заглавные буквы стоят в кодовой таблице впереди строчных то достаточно к коду заглавной буквы прибавить 32, то мы получим код строчной буквы. А затем заменяем в строке i -ый символ на новый при помощи операции присваивания.
Слайд 28. Показано решение задачи: (Задача 4) С клавиатуры вводится строка из заглавных русских букв. Подсчитать сколько каждых букв по отдельности в этой строке. (Например: А-10, Б-2, В-4 и т.д.) Идея решения заключается в следующем: так как считать нужно только русские заглавные буквы, нам достаточно массива из 33 ячеек, в которых будем хранить количество тех или иных букв. Что бы получить порядковый номер буквы в русском алфавите, то есть индекс ячейки массива, необходимо из кода символа вычесть 191 (и наоборот, чтобы из номера буквы в алфавите получить код буквы в кодовой таблице необходимо прибавить 191). Мы перебираем буквы и если это заглавная русская буква, то содержимое ячейки под номером данной буквы увеличиваем на единицу. При выводе массива добавлено условие, те буквы которые не встретились в строке, на экран не выводятся.
Слайд 29. Дано определение случайного числа и правила задания числового интервала, из которого будет получено случайное число.
Слайд 30. Показано решение задачи: (Задача 5) Составить программу – генератор паролей из английских заглавных, строчных букв и цифр. В данном примере переменная k определяет вид знака: заглавная, строчная или цифра. k := random (3); дает случайное число от 0 до 2 включительно. 0- число генерируется из интервала заглавных букв, 1- строчных, 2 – цифр. А затем полученное случайное число из определенного интервала преобразуется в символ и добавляется к паролю.
Способы решения задач с дополнительной переменной и без
Какой способ решения выбрать всегда остается за программистом. Поэтому я стараюсь на своих занятиях показать несколько способов решения одной и той же задачи. Показанные ниже примеры иллюстрируют способ решения задач с использованием дополнительной переменной и без.
Слайд 31. Показано решение задачи: (Задача 6) Составить программу удаляющую «лишние» пробелы между словами, то есть слова должны быть разделены одним пробелом. Решение основано на применении функции DELETE . Перебираются символы, и если находится пара пробелов стоящих рядом, один из них удаляется. Изменения вносятся в исходную строку.
Слайд 32. Показано решение задачи, условие которой сформулировано на предыдущем слайде, с использованием дополнительной переменной. Перебираются символы исходной строки и переносятся в новую переменную, за исключением пробела, перед которым уже есть пробел.
Слайд 33. Показана логика работы программы с решающей задачу 6, с использованием дополнительной переменной.
Слайд 34. Показано решение задачи: (Задача 7) Составить программу переворачивающую строку, все символы которой идут в обратном порядке относительно исходной. Идея решения без дополнительной переменной заключается в обмене символов относительно середины строки.
Слайд 35. Показана логика работы программы переворачивающей строку относительно середины.
Слайд 36. Показано решение задачи 7 с использованием дополнительной переменной. Суть решения в следующем символы исходной строки в обратном порядке добавляются в новую строку. А затем исходная строка заменяется вновь сформированной.
Задачи для самостоятельного решения.
- Дана строка цифр без пробелов. Четные цифры записать в одну строку, а нечетные — в другую. Вывести исходную и полученные строки.
- Переписать в одну строку часть исходной строки до заданного слова, а в другую строку все — после заданного слова.
- Проверить, является ли строка палиндромом.
- Дана символьная строка. Найти слова, начинающиеся и заканчивающиеся на одну и ту же букву
- В строке записано предложение, слова в котором разделяются пробелами. Сформировать новую строку, в которой слова исходной строки будут записаны в обратном порядке. Например, из строки МАМА МЫЛА РАМУ сделать РАМУ МЫЛА МАМА.
- Слова в строке разделяются пробелами. Зашифровать текст таким образом, чтобы каждое слово текста было записано в обратном порядке.
- Оператор последовательно через пробел вводит сумму заработка сотрудников своей организации за последний месяц. В сумме заработка при вводе рубли от копеек отделяются точкой. Сформировать строку следующего содержания: “Сумма подоходного налога организации составила __ рублей”.
- Слова в строке разделены пробелами, найти самое длинное слово.
- Проверить, входит ли в строку слово, введенное с клавиатуры. Строчные и заглавные буквы не различаются
- Дана строка латинского текста. Составить программу шифровки текста, пользуясь простым правилом: каждая буква заменяется на следующую по алфавиту, при этом буква 'z' заменяется на букву 'a'.
- Шифр Цезаря реализует кодирование фразы путем “сдвига” всех букв фразы на определенное число k (в оригинальном шифре Цезаря k = 3). Если буква кодируемой фразы имеет в алфавите позицию j, то она в “шифровке” будет заменяться буквой, находящейся в алфавите на позиции j + k.
- Введена строка. Проверить, является ли она правильным идентификатором в Pascal. Идентификатор считается правильным, если он состоит только из латинских букв, цифр и знака “_” и не начинается с цифры.
- Дан текст. Определите процентное отношение строчных и прописных букв к общему числу символов в нем.
- Дана текстовая строка, состоящая из заглавных латинских букв. Требуется найти подстроку из трёх букв, которая встречается в данной строке чаще всего. Например, в строке DEFDEFABCABCZABCDEFDEF чаще всего (4 раза) встречается подстрока DEF.
- Дана строка, состоящая из слов и чисел, отделенных друг от друга пробелами. Сформировать три строки, одна из которых содержит только целые числа, встречающиеся в исходной строке, вторая - только вещественные числа, а третья – оставшиеся слова.
- Оставить в строке только один экземпляр каждого встречающегося символа.
- Калькулятор. Введена строка, которая является арифметическим выражением. Вычислить это выражение и напечатать результат. Алгоритм работы программы должен соответствовать правилам работы в обычном калькуляторе: действия выполняются с учетом приоритета арифметических операций.
а) 2 + 8/2= (все числа из интервала [0 ; 9] )
б) 123-45678= (два числа произвольной разрядности)
в) 234-22*4= (числа произвольной разрядности и чисел 3)
г) 234-22*4= (числа произвольной разрядности и чисел произвольное количество)
д) (23-200)*5= (выражение содержит только одни скобки)
Список используемой литературы.
1. Основы программирования. И. Г. Семакин, А. П. Шестаков Издательство: Высшая школа, 2001
2. 100 задач по программированию. В. А. Дагене, Г. К. Григас, К. Ф. Аугутис Издательство: Просвещение 1993
3. Паскаль для школьников, Подготовка к ЕГЭ, Кашаев С.М., Шерстнева Л.В., 2011.
Запись графических объектов или блоков в отдельный файл.
В диалоговом окне "Запись блока на диск" отображаются различные параметры по умолчанию в зависимости от выбранных элементов чертежа (ничего не выбрано, выбран одиночный блок, выбраны объекты, но не блоки).
Отображаются следующие параметры.
Выбор блоков и объектов, запись их в файл и задание точек вставки.
Выбор блока для записи в файл. Имя нужного блока выбирается из списка.
Выбор текущего чертежа для сохранения его как другого файла.
Выбор объектов для сохранения их как файла. Укажите базовую точку и выберите приведенные ниже объекты.
Задание базовой точки для блока. Значение по умолчанию 0,0,0.
Временное закрытие диалогового окна для указания базовой точки вставки на текущем чертеже.
Задаются значения координаты X базовой точки.
Задается значение координаты Y для базовой точки.
Значение координаты базовой точки по оси Z.
Выбор способа обработки выбранных объектов текущего чертежа после записи блока в файл.
Сохранение выбранных объектов текущего чертежа без изменений после записи их в файл.
Преобразование выбранных объектов текущего чертежа в блок после записи их в файл.
Удаление выбранных объектов из текущего чертежа после записи их в файл.
Позволяет временно закрыть диалоговое окно для выбора одного или нескольких объектов, которые требуется записать в файл.
Служит для вызова диалогового окна "Быстрый выбор" , в котором можно отфильтровать набор объектов.
Вывод информации о количестве выбранных объектов.
Задание нового имени и расположения файла, а также указание единиц измерения, используемых при вставке блока.
Имя и путь к файлу, в который требуется сохранить блок или объекты.
Задание единиц измерения, которые будут использоваться для автоматического масштабирования при перетаскивании нового файла из Центра управления ™ или вставке его в качестве блока в чертеж с другими единицами. Если выбрано значение "Безразмерный", блок вставляется в чертеж без масштабирования. См. раздел INSUNITS .
В заданной строке, длиной не больше 100 символов, строчные латинские буквы заменить на прописные, а прописные на строчн
В заданной строке, длиной не больше 100 символов, строчные латинские буквы заменить на прописные, а.
Файл f содержит буквы латинского и русского алфавитов. Занести в файл h только латинские буквы, а в файл g - только русские буквы
Помогите пожалуйста. Файл f содержит буквы латинского и русского алфавитов. Занести в файл h.
Записать в файле H все латинские буквы (прописные и строчные) из файла F
Даны а F и G,элементами которых являются символы,записать в файле H все латинские буквы(прописные и.
Файл: Заменить в файле все строчные латинские буквы на прописные, прописные – на строчные.
Дан текстовый файл. Заменить в нем все строчные латинские буквы на прописные, прописные – на.
Дан файл , записать в другой файл только те строки которые начинаются с буквы a
Дан файл , записать в другой файл только те строки которые начинаются с буквы a
Дан файл. Записать в другой файл только те строки, которые начинаются с заданной буквы
Помогите пожалуйста.))Дан файл. Записать в другой файл только те строки, которые начинаются с.
Занести в файл h только латинские буквы, а в файл g - только русские буквы
1)Файл f содержит буквы латинского и русского алфавитов. Занести в файл h только латинские буквы, а.
Занести в файл h только латинские буквы, а в файл g — только русские буквы
Файл f содержит буквы латинского и русского алфавитов. Занести в файл h только латинские буквы, а в.
Записать в другой файл только те строки,которые начинаются с заданной буквы
Помогите,пожалуйста,написать программу.Дан файл. Записать в другой файл только те строки,которые.
Записать в другой файл только те строки, которые начинаются с заданной буквы
ЗАДАНИЕ ЗВУЧИТ ТАК: "дан файл записать в другой файл только те строки, которые начинаются с.
Записать в другой файл только те строки, которые начинаются с заданной буквы
Помогите пож-та с прогой. дан файл. записать в другой файл только те строки, которые начинаются с.
Символьный тип (Char) - это тип данных, используемый для описания отдельных символов (знаков, букв, кодов). Он позволяет обрабатывать любые символы ПК.
Для кодировки символов используется восьмибитовый код. Символы с кодами от 0 до 31 относятся к служебным.
К символьным значениям и переменным применимы операции присваивания, сравнения и следующие встроенные функции:
Функция: тип | Назначение |
ORD(c: char): Byte CHR(b:byte) : Char UPCASE(c:char):Char Pred(c:char):Char Succ(c:char):Char | Возвращает код символа Выдаёт по коду аргумента символ Переводит латинские строчные буквы в прописные Выдаёт предшествующий С символ Выдаёт следующий за С символ |
Строковый тип (String) используется для обработки текстовой информации. Строка-константа - это произвольная последовательность символов, заключённая в апострофы. Отдельный символ совместим по типу с элементом типа CHAR.
Строки можно присваивать, сцеплять и сравнивать.
Функции (процедуры) для работы со строками
1. LENGTH(S:string):byte - выдаёт текущую длину строки S;
вместо неё можно пользоваться функцией (Ord s[0]).
2. CONCAT(S1,S2,…,Sn:string):string - осуществляет сцепление строк;
вместо неё можно пользоваться операцией “+”.
3. COPY(S:string; index, len:integer):string выдаёт подстроку длиной len, начиная с символа с номером index.
4. DELETE(var S:string; index, len:integer) удаляет из строки S подстроку длиной len, начиная с символа с номером index.
5. INSERT(subs:string; var S:string; index:integer) вставляет в строку S подстроку subs, начиная с позиции index.
6. POS (subs, S:string):byte отыскивает вхождение подстроки subs, в строке S и выдаёт номер позиции первого символа subs в S или 0, если в S нет подстроки subs.
7. STR(X[:w[:n]], var S:string) преобразует числовое значение X в строковое S в соответствии с заданным форматом.
8. VAL(S:string, var X, var errcod) преобразует числовую строку S в числовую переменную X, формируя errcod - код ошибки.
9. FILLCHAR(Var X; k:word; value) процедура заполнения k последователь-ных байт переменниой X значением value (выражением любого порядкового типа).
Пример: Ввести строку st1.Сформировать строку st2 перестановкой символов исходной строки в обратном порядке и заменой всех строчных латинских букв прописными.
Program lr_10;
Begin
for i:=1 to ord (st1[0]) do
write(‘искомая строка: ’ st2 );
END.
Задание 1 (программа 10_1)
1. Дана строка из 20 символов. Вывести из нее на печать только строчные буквы латинского алфавита.
2. Вывести на печать все строчные, а затем все прописные буквы русского и латинского алфавитов.
3. В заданной строке подсчитать частоту появления букв «a», «b».
4. Дан текст из 60 литер. Напечатать только строчные русские буквы, входящие в этот текст.
5. Дана последовательность символов, содержащая символ «я». Определить порядковый номер символа «я» в последовательности.
6. Дана последовательность символов. Определить в ней символ, который по алфавиту предшествует другим.
7. Напечатать в алфавитном порядке все различные строчные буквы, входящие в заданный текст из 100 литер.
8. Определить, является ли заданная последовательность символов в строке симметричной: читается одинаково слева направо и справа налево.
9. Напечатать текст, образованный символами с порядковыми номерами 56, 89, 84 и 69 и текст с изменением регистра.
10. Даны две строки с1 и с2, содержащие до 5 цифр каждая. Преобразовать их к данным целого типа, используя процедуру VAL, вычислить арифметическое выражение с3 = (с1-с2)/(с1+с2).
11. Вычислить суммы кодов всех букв, входящих в слова SUM и ALFA. Сравнить слова и определить, какое из них больше.
12. Напечатать заданный текст с удалением из него всех букв b, непосредственно перед которыми находится буква с.
13. Имеется символьная переменная d, присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном случае.
14. Если в заданный тексте входит каждая из букв слова key, тогда напечатать «yes» , иначе – «no».
15. Написать программу, которая предварительно запрашивает ваше имя, а затем приветствует вас по имени.
16. Ввести вещественное число, преобразовать его в строку. Подсчитать количество разрядов в целой и дробной частях. Найти представление числа в виде мантиссы (по модулю меньшее единицы) и порядка.
17. Ввести строку, состоящую из нулей, единиц и десятичной точки. Преобразовать ее в десятичное число.
Задание 2 (программа 10_2)
1. Дана строка, содержащая не более двадцати латинских букв. Все вхождение «max» в ней заменить на «min» и «макс» на «мин». Подсчитать число таких замен.
2. Дана строка, содержащая сорок латинских букв. Подсчитать все вхождение «abc» в строку и их удалить. Вывести на экран два варианта полученных строк, заполняя образовавшую «дыру» последующими буквами с добавлением в конце пробелов, и, оставляя на месте удаленных символов пробелы.
3. Определить сколько различных символов входит в заданный текст, содержащий не более 100 литер и оканчивающийся точкой.
4. Определить номера позиций гласных букв в заданном тексте.
5. Напечатать заданный текст из 60 символов, удалив из него повторные вхождения каждой литеры.
6. Дана строка, состоящая из слов, разделенных пробелами, в конце строки – точка. Определить, сколько в строке слов, содержащих четное число символов.
7. Дан набор слов на английском языке, разделенных пробелами, в конце точка. Выделить в последовательности нечетные слова прописными буквами.
8. Дан непустой текст из строчных букв, за которыми следует точка. Определить упорядочены ли эти буквы по алфавиты. Напечатать результат проверки и исходный текст прописными буквами.
9. Дана последовательность от двух до восьми слов, в каждом из которых от одной до десяти строчных букв; между соседними словами – не менее одного про-бела, за последним словом – точка. Напечатать слово с максимальной длиной.
10. Дано несколько слов, в каждом из которых от одной до семи строчных букв, между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать эти слова в алфавитном порядке.
11. Дана последовательность, содержащая от одного до восьми слов, в каждом из которых от одной до пяти строчных букв; между соседними словами – запятая, за последним словом – точка. Напечатать эту же последовательность, удалив из нее повторные вхождения слов.
12. В заданном тексте (слова разделены пробелами) поменять местами первое и последнее слово.
13. Даны числа K и текст из слов, разделенных пробелами, в конце – точка. Определить количество слов в тексте, состоящих из K букв.
14. Дана последовательность, содержащая от двух до десяти слов, в каждом из которых от одной до восьми строчных букв; между соседними словами – не менее одного пробела, за последним словом – точка. Напечатать те слова, в которых буквы слова упорядочены по алфавиту.
15. Дана последовательность, содержащая от двух до десяти слов, в каждом из которых от одной до пяти строчных букв; между соседними словами – запятая, за последним словом – точка. Напечатать эту же последовательность слов, но в обратном порядке.
16. В заданный текст входят только цифры и буквы. Определить, является ли текст десятичной, шестнадцатеричной или двоичной записью целого либо вещественного числа (указать при выводе какого).
17. В заданном тексте найти и, если есть, напечатать все слова-палиндромы (слова, которые одинаково читаются слева направо и справа налево).
18. Дан текст из слов, разделенных пробелами, в конце - точка. Найти слово наименьшей длины (содержащее наименьшей количество букв).
19. Разработать программу шифровки – дешифровки текста путем замены каждой буквы текста другой буквой, с кодом на N больше (меньше) исходной.
20. Дана непустая последовательность слов, в каждом на которых от одной до шести букв; между соседними словами – запятая, за последним – точка. Напечатать те слова, у которых одинаковые «соседи». (Определить процедуру, которая вводит очередное слово и присваивает его шестилитерной строке, а запятую или точку присваивает некоторой глобальной переменной).
Лабораторная работа 11
Файлы
Цель работы: создание, чтение и обработка файлов из программы.
При работе с файлами в разделе описаний должна быть объявлена файловая переменная. В основном блоке программы файловая переменная связывается с конкретным физическим файлом процедурой
Далее открывается файл для чтения процедурой RESET(f1);
для записи – процедурой REWRITE(f2);
где f1, f2 – файловые переменные. Далее считывается информация из файла или записывается в файл через соответствующую файловую переменную.
После окончания работы с файлом необходимо его закрыть процедурой
Пример. Вычислить суммы элементов в столбцах двумерного числового массива А[1..2,1..4], заданного в файле FILE1.dat. Полученные значения поместить в файл FILE2.dat.
Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.
Рабочие листы и материалы для учителей и воспитателей
Более 2 500 дидактических материалов для школьного и домашнего обучения
Столичный центр образовательных технологий г. Москва
Получите квалификацию учитель математики за 2 месяца
от 3 170 руб. 1900 руб.
Количество часов 300 ч. / 600 ч.
Успеть записаться со скидкой
Форма обучения дистанционная
- Онлайн
формат - Диплом
гособразца - Помощь в трудоустройстве
311 лекций для учителей,
воспитателей и психологов
Получите свидетельство
о просмотре прямо сейчас!
14 Модуль. Символы
Рассмотрим вопрос сравнения строк в компьютере. Например, строка 'hello' меньше строки 'world' , потому что буква h идёт в алфавите раньше, чем буква w .
Строки сравниваются в алфавитном (лексикографическом) порядке. Сначала сравниваются первые буквы, если они равны, то сравниваются вторые буквы и так далее.
Если при таком сравнении мы дошли до конца одной из строк, то получается что эта строка является префиксом другой строки. В таком случае более короткая строка считается меньшей.
Выпишем для примера несколько коротких строк в порядке их возрастания:
a , aa , ab , ac , b , bb , bc .
Но что делать, если нужно сравнить строчную букву a и прописную букву A ? Также может понадобиться сравнивать буквы с цифрами или другими символами. Все символы можно сравнивать между собой, потому что каждому символу приписан код (некоторый номер), и сравнение символов производится по этому коду. Код буквы a меньше, чем код буквы b , причём коды букв a , b , c , d . идут подряд по возрастанию.
Чтобы понять, как сравниваются между собой буквы различного регистра, а также другие символы, посмотрим на таблицу ASCII (American standard code for information interchange).
В этой таблице приведены коды всех основных символов, включая все буквы латинского алфавита, цифры и знаки препинания.
Символы с кодами от 0 до 31 являются специальными символами, и большинство из них в наше время не используются, поэтому эту часть таблицы мы не стали иллюстрировать.
Символ с кодом 32 — это пробел. После него идут знаки препинания и знаки арифметических операций.
Символы с кодами 48 — 59 — это цифры от 0 до 9 .
Прописные буквы латинского алфавита пронумерованы подряд кодами 65 — 90.
Строчные буквы латинского алфавита пронумерованы подряд кодами 97 — 122.
Для того чтобы можно было использовать символы других алфавитов, используется стандарт Unicode. В него включено более 100000 различных символов, среди которых можно встретить все распространённые национальные алфавиты мира. Этот стандарт позволяет сравнивать между собой не только буквы латинского (английского) алфавита, но и буквы различных алфавитов.
Для того чтобы узнать код символа, можно использовать функцию ord () . Например, строка кода
print ( ord ( 'A' ))
напечатает число 65 — код символа A .
Функция ord () в качестве аргумента принимает строку, состоящую ровно из одного символа. Если передать ей пустую строку или строку длины больше 1 , то получим ошибку исполнения.
Функция, которая по числу возвращает символ с данным кодом называется chr () . Например, код
print ( chr ( 65 ))
напечатает символ A , код которого равен 65 .
Давайте покажем, как по букве получить следующую за ней букву алфавита. Пусть нам даётся на вход не последняя буква алфавита. Считаем её и выведем на экран следующую за ней букву:
print ( chr ( ord ( c ) + 1 ))
ASCII-код символа
Считайте со стандартного ввода символ и выведите его код.
Программа получает на вход один символ с кодом от 33 до 126 .
Выходные данные
Нужно вывести одно число — код считанного символа
Символ с данным ASCII-кодом
Считайте со стандартного ввода целое число и выведите ASCII-символ с таким кодом. Решите эту задачу с использованием только одной переменной типа int .
Программа получает на вход число от 33 до 126 .
Выходные данные
Нужно вывести символ, который имеет введённый код.
Символы в заданном интервале
Выведите подряд, без пробелов, все символы, лежащие в таблице ASCII между двумя заданными символами.
Программа получает на вход два символа, каждый в отдельной строке.
Выходные данные
Программа должна вывести строку, начинающуюся первым из заданных символов и заканчивающуюся вторым.
Работа с символами.
На практике часто встречается задача о проверке пароля на надёжность. Пароль можно считать достаточно надёжным, если он не слишком короткий, и в нём встречаются хотя бы по одному разу цифра, строчная буква и заглавная буква. Давайте разберём, как такого рода проверки делать в языке Python.
Рассмотрим строку s . Пусть мы должны проверить её i -й символ, то есть s [ i ] . Поместим его в переменную с . Чтобы проверить, является ли символ цифрой, нужно проверить, что его код находится между кодами цифр 0 и 9 :
Можно сравнивать не коды символов, а сами символы. Тогда получим следующий код:
Проверка, является ли символ прописной буквой латинского алфавита, будет выглядеть похожим образом:
И проверка, является ли символ строчной буквой латинского алфавита выглядит так:
В языке Python есть встроенные методы для подобных проверок:
Эти методы работают не только со строками длины 1 , но и со строками произвольной длины. Метод будет возвращать True , если все символы строки удовлетворяют условию, которое этот метод проверяет. Эти методы работают не только с латинским алфавитом, но и со всеми другими алфавитами, которые включены в стандарт Unicode.
Предположим, что нам нужно перевести все буквы в заданном тексте в заглавный или в строчный регистр. Научимся это делать. Пусть нам подают на вход один символ, являющийся прописной буквой латинского алфавита. Требуется превратить этот символ в строчный и вывести на экран. Это можно сделать следующим образом:
Тут мы воспользовались тем свойством, что код прописной и строчной буквы латинского алфавита всегда отличается ровно на 32. Если нужно превратить букву из строчной в заглавную, то необходимо написать такой же код, но только число 32 нужно вычитать, а не прибавлять.
В языке Python есть стандартные методы upper и lower для решения задачи о переводе символа в другой регистр. Например, код, написанный выше, можно реализовать следующим образом:
Методы upper и lower работают со строками любой длины и со всеми алфавитами.
Сменить регистр символа
Напишите функцию CaseChange ( c ) , меняющую регистр символа, то есть переводящую заглавные буквы в строчные, а строчные — в заглавные, остальные символы меняться не должны. В решении нельзя использовать циклы. В решении нельзя использовать численные константы с неочевидным значением.
Слова с прописной буквы
Дана строка. Измените регистр символов в этой строке так, чтобы первая буква каждого слова была заглавной, а остальные буквы — строчными.
Решение оформите в виде функции Capitalize ( S ) , возвращающей новую строку.
Самая частая буква
Дана строка, возможно, содержащая пробелы. Определите, какая буква латинского алфавита (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются.
Дана непустая строка.
Выходные данные
Программа должна вывести в первой строке все буквы, которые встречаются чаще всего в исходной строке. Выводить буквы необходимо в заглавном написании, в алфавитном порядке, без пробелов. Во второй строке выведите единственное число — сколько раз в данной строке встречаются эти буквы.
Палиндром
Дано слово, состоящее только из заглавных и строчных латинских букв. Проверьте, верно ли, что это слово читается одинаково как справа налево, так и слева направо (то есть является палиндромом), если считать заглавные и строчные буквы неразличающимися. Выведите слово YES, если слово является палиндромом, и слово NO, если не является.
Решение необходимо сдать в виде функции IsPalindrome ( S ) , возвращающей значение типа bool. При решении этой задачи нельзя пользоваться вспомогательными массивами или строками.
Шифр Цезаря
В шифре Цезаря каждый символ, являющийся буквой латинского алфавита, заменяется на другой символ, k -тый по счёту в алфавите после данного. Если этот символ выходит за границы, то берётся соответствующий из начала строки. Например, для k = 3 символ A заменяется на D , символ B — на E , символ C — на F , . , символ Z – на C . Аналогично, строчные буквы заменяются на строчные буквы. Все остальные символы не меняются.
Дана строка, зашифруйте её при помощи шифра Цезаря. Решение оформите в виде функции CaesarCipher ( S , k ) , возвращающей новую строку. S — исходная строка, k — величина сдвига. Функцию нужно вызывать со значением k = 3 .
Указание
Напишите функцию CaesarCipherChar ( c , k ) , шифрующую один символ.
Ход короля и шахматная нотация
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на одну клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом.
Как известно, в шахматной нотации горизонтальные строки обозначаются цифрами от 1 до 8 , считая от расположения белых фигур, стоящих внизу доски, а вертикальные столбцы — буквами латинского алфавита: a,b,c,d,e,f,g,h .
Читайте также: