Основы ПЭВМ
Государственный Комитет Российской Федерации по высшему образованию Московская государственная текстильная академия имени А.Н.Косыгина
кафедра информатики и вычислительной техники
Практическая работа
по курсу
основы ПЭВМ
Группа № 46-94
Студент Бондаренко Ю.М.
Руководитель Цымбалюк М.Я.
Проверила Маланина Е.М
Москва 1995
Содержание:
1. Использование символьных функций
1.1 Постановка задачи
1.2. Условные обозначения
1.3. Блок-схема алгоритма решения задачи
1.4. Программа
1.5. Контрольный пример
2. Решение нелинейных уравнений
2.1 Постановка задачи
2.2. Условные обозначения
2.3. Блок-схема алгоритма решения задачи
2.4. Программа
2.5. Результаты решения уравнения
3. Обработка данных для получения статистических оценок
3.1 Постановка задачи
3.2. Условные обозначения
3.3. Блок-схема алгоритма решения задачи
3.4. Программа
3.5. Контрольный пример
4. Работа с каталогами и файлами в MS - DOS
4.1. Постановка задачи
4.2. Задание
5. Работа с каталогами и файлами
в системе NORTON COMMANDER
5.1. Постановка задачи
5.2. Задание
6. Вывод
1. Использование символьных функций.
1.1. Постановка задачи.
Написать программу с использованием символьных функций для обработки текста. Считать, что в заданном тексте слова разделены одним пробелом. Подсчитать кол-во вопросительных предложений в заданном тексте и кол-во слов в каждом из таких предложений.
1.2. Условные обозначения.
A$ - имя символьной переменной для записи заданного текста.
N - переменная для записи количества символов в тексте A$.
В$(N) - массив для записи символов, из которых состоит текст A$.
C(N) - массив для записи номера позиции, на котором в тексте находится символ “.”
S(N) - номера позиции, на которой в тексте A$ находится символ "?".
D(N) - массив значений, количества символов в каждом из предложений, из которых состоит текст.
R$(N,N) - массив для записи символов, из которых состоит каждое предложение.
K - переменная для записи количества “?” в тексте A$.
T - переменная для записи количества “.” в тексте A$.
F(N) - массив для записи количества пробелов каждого отдельного предложения.
C$(N) - массив для записи каждого предложения в отдельную ячейку.
B - переменная для подсчета количества пробелов в каждом предложении отдельно.
1.3. Блок-схема алгоритма решения задачи.
начало |
||
A$ |
||
N = LEN(A$) |
||
описание массивов B$(N), C(N), S(N), D(N), R$(N, N), E(N), C$(N) |
||
I=1, N |
||
B$(I)=MID$(A$, I, 1) |
||
K = 0,T = 0 |
||
I = 1, N |
||
B$(I) = "?" |
||
K = K + 1 S(K) = I |
||
B$(I) = "." |
||
T = T + 1 C(T) = I |
||
C(1) > S(1) |
||
C$(1) = MID$(A$, 1, S(1)) |
||
C$(1) = MID$(A$, C(1), S(1) - C(1)) |
||
I = 2, K |
||
C(I) > S(I) |
||
C$(I) = MID$(A$, S(I - 1), S(I) - S(I - 1)) |
||
C$(I) = MID$(A$, C(I), S(I) - C(I)) |
||
I = 1, K |
||
D(I) = LEN(C$(I)) |
||
I = 1, K |
||
J = 1, D(I) |
||
R$(I, J) = MID$(C$(I), J, 1) |
||
I = 1, K |
||
B = 0 |
||
J = 1, D(I) |
||
R$(I, J) = " " |
||
B = B + 1 |
||
C(1) > S(1) |
||
E(1) + 1 |
||
E(1) |
||
I = 2, K |
||
E(I) |
||
конец |
1.4. Программа.
CLS
INPUT "Введите текст"; A$
N = LEN(A$)
DIM B$(N), C(N), S(N), D(N), R$(N, N), E(N), C$(N)
FOR I = 1 TO N
B$(I) = MID$(A$, I, 1)
NEXT I
FOR I = 1 TO N
IF B$(I) = "?" THEN
K = K + 1
S(K) = I
END IF
IF B$(I) = "." THEN
T = T + 1
C(T) = I
END IF
NEXT I
IF C(1) > S(1) THEN
C$(1) = MID$(A$, 1, S(1))
ELSE
C$(1) = MID$(A$, C(1), S(1) - C(1))
END IF
FOR I = 2 TO K
IF C(I) > S(I) THEN
C$(I) = MID$(A$, S(I - 1), S(I) - S(I - 1))
ELSE
C$(I) = MID$(A$, C(I), S(I) - C(I))
END IF
NEXT I
FOR I = 1 TO K
D(I) = LEN(C$(I))
NEXT I
FOR I = 1 TO K
FOR J = 1 TO D(I)
R$(I, J) = MID$(C$(I), J, 1)
NEXT J
NEXT I
FOR I = 1 TO K
B = 0
FOR J = 1 TO D(I)
IF R$(I, J) = " " THEN
B = B + 1
END IF
NEXT J
E(I) = B
NEXT I
PRINT "Количество вопросительных предложений равно"; K
IF C(1) > S(1) THEN
PRINT "Количество cлов в 1-м вопросительном предложении равно"; E(1) + 1
ELSE
PRINT "Количество слов в 1-м вопросительном предложении равно"; E(1)
END IF
FOR I = 2 TO K
PRINT "Количество cлов в "; I; "-м вопросительном предложении равно"; E(I)
NEXT I
END
1.5. Контрольный пример.
Вы видите высокого человека у окна? Это известный актер. Вы хотите познакомиться с ним? Я вам помогу в этом.
Количество вопросительных предложений равно 2.
Количество слов в 1-м вопросительном предложении равно 6.
Количество слов в 2-м вопросительном предложении равно 5.
2. Решение нелинейных уравнений.
2.1. Постановка задачи.
Составить программу для нахождения корня уравнения на отрезке [0; 0,8] методом половинного деления с точностью 0.1, 0.01, 0.001, 0.0001.
tg x - 1/3 tg 3 x + 1/5 tg 5 x - 1/3 = 0
Результаты представить в таблице следующего вида:
Метод |
|
Уравнение |
|
Отрезок |
|
Точность |
Решение (корень уравнения) |
. . . |
2.2. Условные обозначения.
N - размерность массива значений точности решения.
E(N) - массив значений точности решения.
X(N) - массив значений корней уравнения с i-ой точностью.
А - имя переменной для записи левой границы отрезка.
В - имя переменной для записи правой границы отрезка.
2.3. Блок-схема алгоритма решения задачи.
начало |
||
A, B, N |
||
описание массивов X(N), E(N) |
||
I=1, N |
||
E(I) |
||
I=1, N |
||
A1 = A B1 = B |
||
Y = TAN(A1) - 1 / 3 * TAN(A1) ^ 3 + 1 / 5 * TAN(A1) ^ 5 - 1/ 3 |
||
X(I) = (A1 + B1) / 2 |
||
Z = TAN(X(I)) - 1/ 3*TAN(X(I)) ^3 + 1/ 5 * TAN(X(I)) ^ 5 - 1/ 3 |
||
Y * Z > 0 |
||
A1 = X(I) |
||
B1 = X(I) |
||
ABS(A1 - B1) > E(I) |
||
I=1, N |
||
X(I) < A OR X(I) > B |
||
E(I); "Решения на этом интервале нет" |
||
E(I); X(I) |
||
конец |
2.4. Программа.
CLS
INPUT "Введите левую границу отрезка"; A
INPUT "Введите правую границу отрезка"; B
INPUT "Введите число значений точности"; N
DIM E(N), X(N)
FOR I = 1 TO N
PRINT "Введите"; I; "значение точности"
INPUT E(I)
NEXT I
FOR I = 1 TO N
A1 = A
B1 = B
M1: Y = TAN(A1) - 1 / 3 * TAN(A1) ^ 3 + 1 / 5 * TAN(A1) ^ 5 - 1 / 3
X(I) = (A1 + B1) / 2
Z = TAN(X(I)) - 1 / 3 * TAN(X(I)) ^ 3 + 1 / 5 * TAN(X(I)) ^ 5 - 1 / 3
IF Y * Z > 0 THEN
A1 = X(I)
ELSE B1 = X(I)
END IF
IF ABS(A1 - B1) > E(I) THEN GOTO M1
NEXT I
CLS
PRINT TAB(15); "Метод"; TAB(30); "половинного деления"
PRINT TAB(15); "Уравнение"; TAB(30); "tg x - 1/3 tg ( x )^3 + 1/5 tg ( x )^5 - 1/3 = 0"
PRINT TAB(15); "Отрезок"; TAB(30); "["; A; ";"; B; "]"
PRINT TAB(10); "Точность"; TAB(35); "Решение (корень уравнения)"
FOR I = 1 TO N
IF X(I) < A OR X(I) > B THEN
PRINT TAB(12); E(I); TAB(40); "Решения на этом интервале нет"
ELSE
PRINT TAB(12); E(I); TAB(40); X(I)
END IF
NEXT I
END
2.5. Результаты решения уравнения.
Метод |
методом половинного деления |
Уравнение |
tg x - 1/3 tg 3 x + 1/5 tg 5 x - 1/3 = 0 |
Отрезок |
[0 ; 0,8] |
Точность |
Решение (корень уравнения) |
0.1 |
3.437500 |
0.01 |
3.476563 |
0.001 |
3.475586 |
0.0001 |
3.474792 |
3. Обработка данных для получения статистических оценок.
3.1. Постановка задачи.
Написать программу ввода и обработки данных. Разработать контрольный пример, содержащий не менее 5 значений. Исходные данные и результаты расчета представить в виде таблицы
Обработка данных переписи населения |
|||||
Область, край |
Кол-во жителей |
||||
. . . |
|||||
математическое ожидание |
|||||
дисперсия |
|||||
квадратическое отклонение |
|||||
коэффициент вариации |
|||||
3.2. Условные обозначения.
N -кол-во .
A$(N) - массив областей, краев.
Т(N) - массив значений кол-ва жителей i-ой области.
M - имя переменной для записи математического ожидания кол-ва жителей.
D - имя переменной для записи дисперсии кол-ва жителей.
S - имя переменной для записи квадратического отклонения кол-ва жителей.
K - имя переменной для записи коэффициента вариации.
3.3. Блок-схема алгоритма решения задачи.
начало |
|||||||
N |
|||||||
описание массивов A$(N), Т(N) |
|
||||||
I=1, N |
|||||||
A$(I), Т(I) |
|||||||
M=0 |
|||||||
I=1, N |
|||||||
M=M+Т(I) |
|||||||
M=M/N |
|||||||
D = 0 |
|||||||
I=1, N |
|||||||
D = D +(Т(I) -M) ^ 2 |
|
||||||
D=D/(N-1) |
|||||||
S=SQR(D) |
|||||||
K=S/M |
|||||||
M,D,S,K |
|||||||
конец |
|||||||
3.4. Программа.
СLS
INPUT "Введите количество областей, краев"; N
DIM A$(N), Т(N)
FOR I = 1 TO N
PRINT "Введите область, край"; I; "-х жителей”
INPUT A$(I)
PRINT "Введите количество жителей для ";I;"-го края "
INPUT Т(I)
NEXT I
M = 0
FOR I = 1 TO N
M = M + Т(I)
NEXT I
M = M / N
D = 0
FOR I = 1 TO N
D = D + (Т(I) - M) ^ 2
NEXT I
D = D / (N - 1)
S = SQR(D)
K = S / M
CLS
PRINT TAB(15); "Обработка данных переписи населения "
PRINT TAB(8); "Область, край "; TAB(40); "Количество жителей "
FOR I = 1 TO N
PRINT TAB(5); A$(I); TAB(45); Т(I)
NEXT I
PRINT TAB(5); "Мат. ожидание"; TAB(45); M
PRINT TAB(5); "Дисперсия"; TAB(45); D
PRINT TAB(5); "Кв. отклонение"; TAB(45); S
PRINT TAB(5); "Коэф. вариации"; TAB(45); K
END
3.5. Контрольный пример.
Обработка данных переписи населения |
||
Область, край |
Кол-во жителей |
|
Владимирская |
2300 |
|
Магаданская |
1000 |
|
Тюменская |
900 |
|
Московская |
11000 |
|
Ивановская |
3400 |
|
математическое ожидание |
3720 |
|
дисперсия |
1.7617E+07 |
|
квадратическое отклонение |
4197.261 |
|
коэффициент вариации |
1.128296 |
|
4. Работа с каталогами и файлами в MS-DOS.
4.1. Постановка задачи.
é ZOO
¾¾ ê HOME é CLASS1
ê SСOOL ¾¾¾ ê CLASS2
ë UNIVER ë CLASS3
4.2. Задание .
1) создание указанного дерева каталогов.
A: > md ZOO
A: > md HOME
A: > md SСOOL
A: > md UNIVER
A: > cd SСOOL
A: SCOOL > md CLASS1
A: SCOOL > md CLASS2
A: SCOOL > md CLASS3
2) перейти в каталог самого нижнего уровня, просмотреть его содержимое.
A: > cd SCOOL CLASS1
A: SCOOL CLASS1> dir
Результат:
Volume in drive A is DIANA
Volume Serial Number is 1406-2E61
Directory of A:SCOOLCLASS1
. <DIR> 12/05/95 23:16
.. <DIR> 12/05/95 23:16
2 file(s) 0 bytes
4 202 496 bytes free
A:SCOOLCLASS1>
3)создать два текстовых файла.
A: SCOOLCLASS1> copy con t1.txt
A: SCOOLCLASS1> copy con t2.txt
Результат:
A:SCOOLCLASS1>copy con t1.txt
мы идем
^Z
1 file(s) copied
A:SCOOLCLASS1>copy con t2.txt
они пришли
^Z
1 file(s) copied
A:SCOOLCLASS1>
4) вывести содержимое файлов на экран.
A:SCOOLCLASS1>TYPE T1.TXT
A:SCOOLCLASS1>TYPE T2.TXT
Результат:
A:SCOOLCLASS1>TYPE T1.TXT
мы идем
A:SCOOLCLASS1>TYPE T2.TXT
они пришли
5)объединить два текстовых файла в один.
A:SCOOLCLASS1>COPY T1.TXT + T2.TXT T3.TXT
Результат:
A:SCOOLCLASS1>COPY T1.TXT + T2.TXT T3.TXT
T1.TXT
T2.TXT
1 file(s) copied
A:SCOOLCLASS1>
6) вывести содержимое на экран.
A:SCOOLCLASS1>TYPE T3.TXT
Результат:
A:SCOOLCLASS1>TYPE T3.TXT
мы идем
они пришли
A:SCOOLCLASS1>
7)переименовать объединенный файл.
A:SCOOLCLASS1>REN T3.TXT T4.TXT
Результат:
A:SCOOLCLASS1>REN T3.TXT T4.TXT
A:SCOOLCLASS1>
8) просмотреть оглавление каталога.
A:SCOOLCLASS1>DIR
Результат:
A:SCOOLCLASS1>DIR
Volume in drive A is DIANA
Volume Serial Number is 1406-2E61
Directory of A:SCOOLCLASS1
. <DIR> 12/05/95 23:16
.. <DIR> 12/05/95 23:16
T1 TXT 9 12/05/95 23:54
T2 TXT 12 12/05/95 23:55
T4 TXT 22 13/05/95 0:19
5 file(s) 43 bytes
4 202 496 bytes free
A:SCOOLCLASS1>
9) удалить файл.
A:SCOOLCLASS1>DEL *.*
Результат:
A:SCOOLCLASS1>DEL *.*
All files in directory will be deleted!
Are you sure (Y/N)?Y
A:SCOOLCLASS1>
10) последовательно удалить каталоги.
A:SCOOLCLASS1>CD. .
A:SCOOL>RD CLASS1
A:SCOOL> RD CLASS2
A:SCOOL> RD CLASS3
A: SCOOL > cd . .
A: >RD ZOO
A: >RD HOME
A: >RD SCOOL
A: >RD UNIVER
5. Работа с каталогами и файлами в системе NORTON COMMANDER.
5.1. Постановка задачи.
é ZOO
¾¾ ê HOME é CLASS1
ê SСOOL ¾¾¾ ê CLASS2
ë UNIVER ë CLASS3
5.2. Задание.
1) создать указанное дерево каталогов.
a) нажимаем F7, набираем ZOO, нажимаем Enter.
б) нажимаем F7, набираем HOME, нажимаем Enter.
в) нажимаем F7, набираем SСOOL, нажимаем Enter.
г) нажимаем F7, набираем UNIVER, нажимаем Enter.
д) подводим курсор к SСOOL, нажимаем Enter, нажимаем F7, набираем CLASS1 и нажимаем Enter.
е) нажимаем F7, набираем CLASS2, нажимаем Enter.
ж) нажимаем F7, набираем CLASS3, нажимаем Enter.
2) перейти в каталог самого нижнего уровня, посмотреть его оглавление.
Подводим курсор к CLASS1, нажимаем Enter, набираем в командной строке dir и нажимаем Enter.
3) создать два текстовых файла.
а) набираем в командной строке copy con t1.txt, нажимаем Enter, вводим Ira, нажимаем F6 и Enter.
Результат: 1 file(s) copied
б) набираем в командной строке copy con t2.txt, нажимаем Enter, вводим Natasha, нажимаем F6 и Enter.
Результат: 1 file(s) copied
4) вывести на экран содержимое файлов.
а) подводим курсор к t1.txt и нажимаем F3.
Результат: Ira
б) нажимаем Esc, подводим курсор к t2.txt и нажимаем F3.
Результат: Natasha
5) объединить два файла в один.
Нажимаем Esc, набираем в командной строке сopy t1.txt + t2.txt t3.txt и нажимаем Enter.
Результат: t1.txt
t2.txt
1 file(s) copied
6) вывести на экран содержимое этого файла.
Подводим курсор к t3.txt и нажимаем F3.
Результат: Ira Natasha
7) переименовать объединенный файл.
Нажимаем Esc, F6 и набираем t4.txt, нажимаем Enter.
8) посмотреть его содержимое.
Подводим курсор к t4.txt и нажимаем F3.
Результат: Ira Natasha
9) удалить созданные файлы.
а) нажимаем Esc, отмечаем клавишей INS t1.txt, t2.txt и t4.txt и нажимаем F8.
10) удалить каталоги.
а) отмечаем клавишей INS ZOO, HOME, SСOOL, UNIVER, нажимаем Enter, удаляем дерево каталогов.
6. Вывод.
Благодаря лекционной части курса были получены навыки, которые затем были применены при работе над практикой, такие, как: работа с каталогами и файлами в системах MS-DOS и Norton Commander; составление блок-схем алгоритмов решения различных задач; написание программ на языке QBASIC с использованием массивов, циклов, операторов условного и безусловного перехода.
Задания практики позволили реализовать и усовершенствовать полученные теоретические знания, применить их к решению конкретных задач: использование символьных функций для обработки текста; работа с системами MS-DOS и Norton Commander; решение нелинейных уравнений различными методами с различным начальным приближением и различными степенями точности; обработка таблиц и данных для получения статистических оценок.
Практическая часть курса позволила в основном овладеть указанными навыками.