Основы ПЭВМ

Государственный Комитет Российской Федерации по высшему образованию Московская государственная текстильная академия имени А.Н.Косыгина

кафедра информатики и вычислительной техники

Практическая работа

по курсу

основы ПЭВМ

Группа № 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

PRINT TAB(10); "Точность"; TAB(35); "Решение (корень уравнения)"

PRINT

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

PRINT TAB(8); "Область, край "; TAB(40); "Количество жителей "

PRINT

FOR I = 1 TO N

PRINT TAB(5); A$(I); TAB(45); Т(I)

NEXT I

PRINT

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; решение нелинейных уравнений различными методами с различным начальным приближением и различными степенями точности; обработка таблиц и данных для получения статистических оценок.

Практическая часть курса позволила в основном овладеть указанными навыками.