Файл: Контрольная программирование.docx

ВУЗ: Не указан

Категория: Задание

Дисциплина: Программирование

Добавлен: 25.10.2018

Просмотров: 1220

Скачиваний: 7

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Вариант 10

Задана матрица 7ЩМ). Найти строку с наименьшей и наибольшей суммой элементов. Вывести на эк­ран найденные строки и суммы их элементов N12, М ≤ 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


  1. Static имя As тип

При использовании Static переменная будет сохранять последнее присвоенное ей значение, дате после завершения процедуры. Статические переменные удобны для хранения текущего значения накапливаемой суммы. Если использовать Dim, то при каждом запуске процедуры переменная будет обнулятся вместе с другими числовыми переменными.



  1. Универсальные переменные.

Могут принимать любые значения – целые, строковые, байтовые и преобразовывать их в любой тип. Если переменная используется без явного объявления оператором 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,…


Пример: Создать процедуру заменяющую стандартный указатель – стрелку на песочные часы, её следует вызывать, когда ваша программа выполняет длительные задачи, чтобы пользователь знал, что ПК не завис. Создаваемые процедуры нужно поместить в свой модуль.

Решение задачи:

  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