Одной из дисциплин, изучаемой студентами 1 курса бакалавриата различных направлений (в частности, «Электроэнергетика и электротехника», «Инноватика», «Информационная безопасность») является «Информатика». Изучение основ программирования является неотъемлемой составляющей данной дисциплины.
В ходе выполнения лабораторной работы на тему «Работа со строками» студенты главным образом должны научиться разрабатывать программы в системе Турбо-Паскаль с использованием переменных строкового типа, различных операций, процедур и функций для работы со строками.
Для проведения лабораторной работы было подготовлено методическое пособие, основанное прежде всего на учебных пособиях [1, 2]. Также при подготовке этого пособия был учтен опыт создания методических разработок на кафедре ИТАС ПНИПУ [3-5].
В первую очередь, студенты читают раздел данного пособия, называющийся «Краткие теоретические сведения», в котором изложены следующие аспекты, связанные с программированием на языке Турбо-Паскаль: 1) понятие строки применительно к языку Турбо-Паскаль; 2) особенности строковых констант; 3) особенности описания строковых переменных; 4) операции со строками; 5) процедуры и функции для работы со строками.
Приведем пример описания одной из процедур для работы со строками в разделе «Краткие теоретические сведения»:
Процедура val(s,x,errcode) преобразует строку s в значение числовой переменной x, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение x не определено. Примеры использования данной процедуры:
1) st:='1089';
val(st,n,err);
После выполнения этих операторов в переменной n целого типа будет храниться значение 1089, соответствующее символьному представлению числа, содержащемуся в строке st. Поскольку в данном примере преобразование прошло успешно, то в переменной err будет храниться значение 0.
2) st:='347ab';
val(st,n,err);
После выполнения этих операторов значение переменной n целого типа будет не определено, поскольку из-за наличия в строке st букв произошла ошибка. Поскольку в данном примере в ходе преобразования произошла ошибка, то в переменной err будет храниться значение 4, представляющее собой номер позиции первого ошибочного символа, т.е. символа 'a'.
Изучение раздела методического пособия «Краткие теоретические сведения» во многом направлено на систематизацию студентом знаний, полученных на лекциях.
Далее студенты выполняют индивидуально по вариантам задания на компьютере, осваивая тем самым особенности написания в системе Турбо-Паскаль простейших программ с использованием операций, процедур и функций для работы со строками.
Рассмотрим один из вариантов, включающий в себя 3 задания.
Задание №1. Пользователь вводит с клавиатуры строку. Подсчитать в ней количество вхождений латинских букв 'b', 'v' и 'z' (суммарное количество, а не отдельно для каждой из трех букв) и вывести результат на экран.
Задание №2.Пользователь вводит с клавиатуры строку. В данной строке удалить все вхождения латинской буквы 'H' и подсчитать количество удаленных символов.
Задание №3. Дана матрица размером 4×3, элементами которой являются строки. Необходимо в системе Турбо-Паскаль написать программу, которая выполняет следующие функции:
1) Пользователь вводит значения элементов матрицы.
2) На экран выводятся элементы исходной матрицы.
3) Происходит следующее преобразование матрицы: из тех строк, длина которых больше или равна 5, но при этом меньше 10, удалить все вхождения символа '8'.
4) На экран выводятся элементы преобразованной матрицы.
После выполнения заданий на компьютере студент должен оформить отчет, содержащий постановку каждого задания, тексты программ и результаты выполнения программ. Отчет в распечатанном виде студент должен защитить, ответив на вопросы преподавателя (аналогичные вопросам для самоконтроля, приведенным в методическом пособии).
Примеры вопросов для защиты отчета:
1) В некоторой программе на языке Турбо-Паскаль описаны строки:
var s1: string;
s2: string[2];
Была выполнена последовательность операторов:
s1:='abcd';
s2:=s1;
Какое значение примет переменная s2 после выполнения данной последовательности операторов?
2) Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:
s:='bc';
s:=s+'ijh'+s;
Переменная s имеет тип string.
Какое значение примет переменная s после выполнения данной последовательности операторов?
3) Чему равны следующие логические выражения (в строках в качестве символов использованы только латинские буквы и цифры)?
а) 'abc'='abd'
б) 'xyz'<='xyz'
в) '123'<'12'
г) 'pqw'<>'pqw'
д) 'bcf'>'bcd'
4) Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:
s:='mnt123';
s[1]:='w';
s[4]:='x';
Переменная s имеет тип string.
Какое значение примет переменная s после выполнения данной последовательности операторов?
5) Дан оператор программы, записанной на языке Турбо-Паскаль:
s:=concat('r1','mn','5b');
Переменная s имеет тип string.
Какое значение примет переменная s после выполнения данного оператора?
6) Дан оператор программы, записанной на языке Турбо-Паскаль:
s:=copy('zyx567',4,3);
Переменная s имеет тип string.
Какое значение примет переменная s после выполнения данного оператора?
7) Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:
s:='abcd678';
delete(s,5,2);
Переменная s имеет тип string.
Какое значение примет переменная s после выполнения данной последовательности операторов?
8) Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:
s:='54321';
insert('wt',s,3);
Переменная s имеет тип string.
Какое значение примет переменная s после выполнения данной последовательности операторов?
9) Дан оператор программы, записанной на языке Турбо-Паскаль:
x:=length('10c257');
Переменная x имеет тип integer.
Какое значение примет переменная x после выполнения данного оператора?
10) Дан оператор программы, записанной на языке Турбо-Паскаль:
x:=pos('12','561289');
Переменная x имеет тип integer.
Какое значение примет переменная x после выполнения данного оператора?
11) Дан оператор программы, записанной на языке Турбо-Паскаль:
x:=pos('789','123456');
Переменная x имеет тип integer.
Какое значение примет переменная x после выполнения данного оператора?
12) Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:
x:=895;
str(x,s);
Переменная x имеет тип integer, а переменная s - тип string.
Какое значение примет переменная s после выполнения данной последовательности операторов?
13) Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:
s:='5672';
val(s,x,err);
Переменные x и err имеют тип integer, а переменная s - тип string.
Какие значения примут переменные x и err после выполнения данной последовательности операторов?
14) Дана последовательность операторов программы, записанной на языке Турбо-Паскаль:
s:='338x9';
val(s,x,err);
Переменные x и err имеют тип integer, а переменная s - тип string.
Какие значения примут переменные x и err после выполнения данной последовательности операторов?
По мере накопления опыта преподавания дисциплины «Информатика» организация данной лабораторной работы и соответствующее данной работе методическое пособие будут совершенствоваться.
Литература:
1. Семакин И.Г., Шестаков А.П. Лекции по программированию: Учебное пособие. Изд. 2-е, доп. – Пермь: Изд-во Перм. ун-та, 1998. – 279 с.
2. Программирование на языке высокого уровня Паскаль. Лекция 3: Типы данных, определяемые программистом. [Электронный ресурс] – Режим доступа: http://www.intuit.ru/studies/courses/628/484/lecture/6261. (Дата обращения: 24.09.2013).
3. Файзрахманов Р.А.. Структурно-функциональный подход к проектированию информационных технологий и автоматизированных систем с использованием CASE-средств : учебное пособие / Р.А. Файзрахманов, К.А. Селезнев ; Пермский государственный технический университет .— Пермь : Изд-во ПГТУ, 2007 .— 266 с.
4. Файзрахманов Р.А. Автоматизация научных исследований : учебное пособие / Р.А. Файзрахманов, И.Н. Липатов ; Пермский государственный технический университет. — Пермь : Изд-во ПГТУ, 2011. — 161 с.
5. Полевщиков И.С. Разработка методического пособия на тему «Тестирование базового пути» (для студентов бакалавриата направления «Программная инженерия») // Педагогика и современность. – 2013. – №4 - М.: Издательство «Перо» – С. 83-85.