Добавлен: 25.10.2018
Просмотров: 1342
Скачиваний: 7
Вариант 10
Задана матрица 7ЩМ). Найти строку с наименьшей и наибольшей суммой элементов. Вывести на экран найденные строки и суммы их элементов N≤12, М ≤ 15.
Задание № 6
Краткие сведения из теории
Строковые данные в Турбо Паскале.
Символ занимает в памяти компьютера 1 б. Значение заключается в “”, описывается словом CHARAKTER.
Строки – последовательность символов и представляет структурированный тип данных. Строка не более 255 символов.
Объявление строк
<имя переменной> : STRING[n];
N – длина строки
STRING [n] = ARRAY [0…n] OF CHAR;
Операции над строками.
Для строк определены операции сравнения (>=, < >, <=) и компонентами данных (+).
VAR S1,S2,S3,S:STRING [80];
BEGIN
S1:= ‘TURBO’;
S2:= ‘PASCAL’;
S3:= ‘7.0’;
S:=S1+ ‘ ’+S2+ ‘ ’+S3;
END.
Обращение к элементу строки осуществляется по его номеру, например s[6].
Процедуры, функции обработки строк.
POS (S,ST) – она определяет с какой позиции строка S входит в строку ST. Результатом работы будет N символа в строке ST.
INSERT (S,SUBS, N) – вставляет в строку S под строку SUBS, начиная с позиции n.
LANGTH (S) – возвращает текущую длину строку S.
VAL (S,x,ERR) – превращает строковое значение строки S в числовую переменную x(REAL).
ERR - номер ошибки в позиции.
Пример; Слово задано как сторона символов. Получить новое слово из символов исходного, записанного в обратном порядке.
PROGRAM PR;
VAR A,B:STRING [20];
I,N:INTEGER;
C:CHAR;
BEGIN
READLN (A);
N:=LENGTH (A);
B:= ‘ ’
FOR I:=1 TO N DO;
B:=B+COPY (A,N-I+1, 1);
WRITELN (B);
END.
Пример : Дана строка символов, группа символов между пробелами считалось словом. Определить самое длинное слово в строке и количество слов такой же длины.
VAR STR:STRING[30];
KOL,K,MAX,I,N:INTEGER;
BEGIN
READLN (STR); {ввод строки символов}
N:=LENGTH (STR); {определение длины строки}
MAX:=0; {максимальная длина слова}
KOL:=1; {количество слов максимальной длины}
I:=1; {определение параметра цикла}
WHILE I<=N DO; {цикл для просмотра всей строки}
BEGIN
K:=0; {длина слова. Присвоение начального значения}
REPEAT {цикл для определения длины слова}
K:=K+1; {вычисление длины слова}
I:=I+1; {переход к следующему символу}
{выйти из цикла, если текущий символ – пробел или длина строки исчерпана}
UNTIL (STR [I]= ‘ ’) OR (I > N);
{если длина слова превышает предполагаемый максимум, то записать ее значение}
IF K > MAX THEN MAX:=K;
{если длина слова совпадает по значению с максимальной, то увеличить значение счетчика, вычисляемого количество слов максимальной длины}
ELSE IF K=MAX THEN KOL:=KOL+1;
I:=I+1 {перейти к символу, следующему за пробелом}
END;
WRITELN (MAX, ‘ ’, KOL);
END.
Задания для контрольной работы.
Задание №6
Составить программу обработки символьных строк.
Вариант 1
Дана символьная строка. Русские буквы а, е, о, э в ней нужно удвоить, а между словами оставить только по одному пробелу.
Вариант 2
Дана символьная строка. Если какой-то символ встречается в ней более одного раза, первое вхождение этого символа оставить без изменения, второе — заменить цифрой «2», третье — «3» и т.д.
Вариант 3
Дана символьная строка, содержащая русские слова, записанные строчными буквами, разделенные пробелами. Заменить первые буквы слов на прописные, а между ними оставить по одному пробелу.
Вариант 4
Дана последовательность символов (строка). Если какой-то символ в, ней встречается более одного раза, оставить только первое вхождение.
Вариант 5
Дана символьная строка, содержащая русские буквы, цифры и пробелы. Написать строку задом наперед, удалив из нее все цифры и пробелы.
Вариант 6
Дана символьная строка. Определить, содержит ли строка числа, если да, то вывести на экран только четные.
Вариант 7
Дана символьная строка, состоящая из строчных букв русского и латинского алфавита без пробелов. Гласные латинские буквы в ней нужно заменить на соответствующие прописные буквы, а каждые пять символов разделить пробелами.
Вариант 8
Дана символьная строка. Вывести на экран только те символы, которые встречаются в ней более трех раз, для каждого из этих символов Указать точное количество повторений.
Вариант 9
Дана символьная строка. Удалить из нее все символы, не являющиеся заглавными буквами русского или латинского алфавита.
Вариант 10
Дана символьная строка, содержащая два предложения, каждое из которых заканчивается точкой. Поменять их местами, сохранив порядок слов в предложениях.
Порядок защиты работы. Оценка
Студент должен представить выполненную работу, оформленную в тетради для КР. Каждое задание должно содержать код программы и скрин-шоты результатов ее выполнения.
Критерии оценки работы:
- соответствие содержания работы заданию;
- правильность выполненного задания;
- полнота выполнения задания.
КОНТРОЛЬНАЯ РАБОТА № 2
Раздел 3 Программирование в объектно-ориентированной среде Visual Basic.
Вид КР: Выполнение индивидуальных заданий к практическим работам с использованием дополнительной литературы по соответствующей теме.
Цель: совершенствование практических навыков в области создания программ в среде программирования Visual Basic.
Дидактические единицы, выносимые на самостоятельное изучение студентов.
использование оператора вывода по формату, создание программ разветвляющейся структуры, использование цикла с предварительным условием, использование цикла с параметром, использование вложенных циклов, использование массивов, использование записей, использование процедур, использование строковых данных.
Краткие сведения из теории
Объявление переменных.
1. Dim имя As тип, имя As тип
Например:
Dim X As Integer, I As Byte, Fam As String*40
-
Static имя As тип
При использовании Static переменная будет сохранять последнее присвоенное ей значение, дате после завершения процедуры. Статические переменные удобны для хранения текущего значения накапливаемой суммы. Если использовать Dim, то при каждом запуске процедуры переменная будет обнулятся вместе с другими числовыми переменными.
-
Универсальные переменные.
Могут принимать любые значения – целые, строковые, байтовые и преобразовывать их в любой тип. Если переменная используется без явного объявления оператором Dim, то Visual Basic считает, что она относится к универсальному типу. Это удобно, но универсальная переменная работает медленно, так как тратится время на их интерпретацию и напрасно расходуется память (под универсальную переменную выделяется область достаточная для хранения строки, даже если требуется всего один байт.
22.02.2005
Глобальные переменные – чтобы переменную сделать доступной все процедурам во всём приложении, нужно объявить её, используя вместо Dim, оператор Public.
Dim объявляет переменную в процедуре и обращаться к такой переменной можно лишь из той же процедуры, такие переменные называются локальными. Переменные доступные на уровне всего приложения, называются глобальными или открытыми, они описываются в секции General.
Массивы.
Объявляются также как и переменные с помощью Dim или Public, но после имени в скобках записывается диапазон индексов, по умолчанию нижний индекс = 0.
Dim имя (нижний индекс to верхний индекс) As тип
Например:
Dim Sales (5) As Currency,
FIO (1 to 105) As String*40,
MAS (4,1 to 3) As Byte
Обращение к элементу массива:
Имя (индекс 1, индекс 2…)
Например:
Sales (i); FIO (105); MAS (i,j); MAS (0,2); Sales (I+1)
Пример: При щелчке на кнопке «добавить в список» в список LstF добавляется выделенная из поля txt1 фамилия, а в список LstI – имя , причём записанные заглавными буквами.
Исходные данные: Fi – фамилия и имя, Fam – фамилия, Im – имя.
Результат: Сформированные списки.
Private Sub txt1_Change() 'Изменение текстового поля
fi = txt1.Text
End Sub
В разделе General переменную FI объявить как глобальную:
Public FI As String*25
Private Sub cmdD_Click()
Dim Fam, Im As String * 15, Pos As Byte
Pos = InStr(fi, " ")
Fam = Left(fi, Pos - 1)
Im = Right(fi, Len(fi) - Pos)
lstF.AddItem UCase(Fam)
lstI.AddItem UCase(Im)
End Sub
Пример:
При изменении текстовых полей А и В, txt3 очищается при нажатии на «ОК» в txt3 выводится результат А^B.
Решение:
Так как тип данных, хранящихся в свойстве text, для текстовых полей всегда String, то чтобы совершать математические операции с содержимым текстовых полей необходимо их преобразовать в число.
Private Sub txta_Change()
txt3.Text = " "
End Sub
Private Sub txtb_Change()
txt3.Text = " "
End Sub
Private Sub cmdOk_Click()
Dim rez As Integer
rez = Val(txta.Text) ^ Val(txtb.Text)
txt3.Text = Str(rez)
End Sub
Вызов процедуры (обращение к процедуре).
Имя процедуры аргумент1, аргумент2,…
Пример: Создать процедуру заменяющую стандартный указатель – стрелку на песочные часы, её следует вызывать, когда ваша программа выполняет длительные задачи, чтобы пользователь знал, что ПК не завис. Создаваемые процедуры нужно поместить в свой модуль.
Решение задачи:
-
Создание своего модуля: щелкнуть правой кнопкой мыши в окне проекта и выполнить «добавить» - «модуль». Если модуль уже существует, то его следует открыть с помощью закладки существующие, а если нет, то создать с помощью закладки «новые».
-
Откроется окно программы, в которое нужно ввести код:
Public Sub ShowHour ( )
Screen.MousePointer = 11 ‘Песочные часы
End Sub
3. Сюда же надо дописать процедуру, чтобы вернуть указателю вид стрелки:
Public Sub ShowMouse ()
Screen.MousePointer = 0
End Sub
4. Обращение к данным процедурам можно сделать, например, при индексировании БД.
…
ShowHour
IndexLargeDateBase ‘Индексирование БД
ShowMouse
…
Пример:
Решение:
В разделе General переменные А, В и С нужно объявить как глобальные. Для этого надо дважды щёлкнуть по форме, откроется окно программы:
Public A as Byte, В as Byte, C as String*1
(в переменной «С» будет храниться знак <, > или =)
Для обработки события изменения текстового поля «А» нужно ввести процедуру:
Private Sub txtA_Change()
A = Val(txtA.Text)
txtR.Text = " "
End Sub
Подобную процедуру нужно создать для текстового поля «В»:
Private Sub txtB_Change()
b = Val(txtB.Text)
txtR.Text = " "
End Sub
Далее в свой модуль добавить процедуру:
Public Sub sravn(x As Byte, y As Byte, z As String*1)
If x > y Then
z = ">"
End If
If x = y Then
z = "="
End If
If x < y Then
z = "<"
End If
End Sub
Далее:
Private Sub cmdS_Click()
sravn A, b, c
txtR.Text = "A" & c & "b"
End Sub
Пример: Запустить Form1 ввести значение текстовых полей, сформированная запись записывается в файл basa.dat, при щелчке на кнопке «поиск» загружается Form2, в которой осуществляется поиск номера человека по его фамилии.
Решение:
В свой модуль сделать записи:
Public Type tz
fn As Integer
fio As String * 20
End Type
Public zap As tz, n As Integer
Код формы 1:
Private Sub Form_Load()
n = 1
Open "BAZA.dat" For Random As 1 Len = Len(zap)
End Sub
Private Sub Cmd1_Click()
If LOF(1) <> 0 Then
Dim kolz As Long
zap.fn = Val(Txt1.Text)
zap.fio = Txt2.Text
kolz = LOF(1)
Put #1, kolz + 1, zap
Txt1.Text = " "
Txt2.Text = " "
kolz = kolz + 1
End If
If LOF(1) = 0 Then
zap.fn = Val(Txt1.Text)
zap.fio = Txt2.Text
Put #1, n, zap 'Запись в файл
Txt1.Text = " "
Txt2.Text = " "
n = n + 1
End If
End Sub
LOF(x) – выдаёт размер в байтах файла, файловое число, которого записана в скобках функции 1 (LOF(1))
Private Sub Cmd2_Click()
Form2.Show
End Sub
Код формы 2:
В раздел General объявляем переменные:
Public K As Integer, Po As String
K – это номер файла, из которого искать.
Ро – поисковый образ.
Private Sub Cmd1_Click()
Txt1.Locked = True
Dim i As Integer
po = Txt1.Text
For i = k To 15
Get #1, i, zap
If InStr(zap.fio, po) > 0 Then
Lbl2.Caption = "Найден №:" & zap.fn
k = i
End If
Next
End Sub
InStr – выдаёт номер символа в строке, с которой начинается поисковый образ.
Новый поиск:
Private Sub Cmd2_Click()
Txt1.Locked = False
Lbl2.Caption = " "
k = 1
Txt1.Text = " "
End Sub
Задания для контрольной работы.
Задание №1
Вариант 1.
Создать форму как показано на рисунке. Фоном формы сделать рисунок. Переключатели и кнопку «Изменить» поместить в рамку. По умолчанию установить переключатели «Заголовок текста». При запуске формы поле «Введи новое значение» и кнопка «Готово» должны быть невидимы. При нажатии на кнопку «изменить» рамка с содержимым становиться невидимой, в поле «Введи новое значение» и кнопка «Готово» - должны быть видимыми. При нажатии на кнопку «Готово» происходит соответствующее событие и форма принимает первоначальный вид.
Вариант 2
Создать форму, как показано на рисунке. Рисунок треугольника создать в Paint и поместить на форму. Вывести сообщение в поле TxtRez «Треугольник построить можно» или «Треугольник построить нельзя». (Если сумма любых двух сторон треугольника больше третей, то треугольник с таким сторонами существует). До нажатия на кнопку «Ок» рисунок треугольника и поле TxtRez должны быть не видимыми.
Вариант 3
Создайте новый проект. Создать в нем форму «Размещение объекта по заданным координатам», на которой разместить:
Кнопки «Изменить для рис.1» и «Изменить для рис.2»
Рисунок1 и рисунок 2
Текстовые поля для ввода расстояния от края формы до объекта сверху и расстояния от края формы до объекта слева.
Порядок работы приложения: 1) ввести значения текстовых полей; 2) при щелчке по кнопке «Изменить для ...» соответствующий рисунок должен переместиться в соответствии с заданными параметрами. Предусмотреть проверку - рисунок должен перемещаться только на свободном от других объектов пространстве формы.
Изменение размещения объекта на форме оформить процедурой IZMXY с параметрами: объект, расстояние от верхнего края, расстояние от левого края.
Вариант 4
Создайте форму по образцу (см. рисунок) с названием: - Рост спортсменов. В форму добавить пункты меню: Очистить и Вычислить.
Для меню вычислить создать подменю: «Самый высокий» и «Средний рост команды». При изменении любого текстового поля с данными, поле с результатом должно очищаться. Поле результата сделать недоступным для ввода.При нажатии на кнопку Выход - закрывать форму.
Вариант 5
Создайте форму по образцу (см. рисунок) с названием: Вес спортсменов . В форму добавить пункты меню: Очистить и Вычислить.
Для меню вычислить создать подменю: «Общий вес» и «Спортсмен с минимальным весом» . При изменении любого текстового поля с данными, поле с результатом должно очищаться. Поле результата сделать недоступным для ввода. При нажатии на кнопку Выход - закрывать форму.
Вариант 6
Создайте форму по образцу (см. рисунок) с названием: - Успеваемость
В форму добавить пункты меню: Очистить и Вычислить.
Для меню вычислить создать подменю:
«Количество пятерок» и «Средний балл».
При изменении любого текстового поля с данными, поле с результатом должно очищаться.
Поле результата сделать недоступным для ввода.
При нажатии на кнопку Выход - закрывать форму.
Вариант 7
Создайте форму, как показано на рисунке. Надпись «Число загадано!» при запуске программы не видна. При нажатии на кнопку «Загадать число» компьютер запоминает в переменную случайное число и надпись «Число загадано!» становиться видна. При нажатии на кнопку «Угадать» выводиться окно ввода «Введите число» и в зависимости от результатов сравнения в окне сообщений вывести «Вы угадали» или «Вы не угадали!»
Вариант 8
Создайте форму как показано на рисунке. При нажатии на кнопку «Нажми меня» должно появляться диалоговое окно ввода с вопросом «Что изображено на картинке?». Если введено слово «Сердце», вывести в диалоговом окне вывода сообщение «Верный ответ!», а иначе вывести «Неверно!».
Вариант 9
Создайте форму по образцу. Введите значения. А и В. При нажатии на кнопку «вычислить» должны выводится значения xl и х2.
Вариант 10