|
Специальность
ГБОУ СПО Арзамасский коммерческо-технический техникум
ПОСОБИЕ ДЛЯ СТУДЕНТОВ
ДИСЦИПЛИНА:«Основы алгоритмизации и программирования»
СПЕЦИАЛЬНОСТЬ: 230103 «Автоматизированные системы
обработки информации и управления»
г. Арзамас, 2011 г. Рассмотрено на заседании
МО «___ » ______ 2011 г.
Протокол № __ от «___» ______ 2011 г.
Председатель МО ______________ КуликоваН.Ю.
Автор: КуликоваН.Ю.– к.п.н., преподаватель ГБОУ СПО «Арзамасский коммерческо-технический техникум»
Пособие включает комплект лабораторных работ по дисциплине «Основы алгоритмизации и программирования». Материал, включенный в пособие, составлен в соответствии с календарно-тематическим планированием специальности 230103 «Автоматизированные системыобработки информации и управления», для групп второгокурса.
Пособие рассчитано на студентов. Содержание
1
| Введение ……………………………………………………………………………
| 3
| 2
| Лабораторная работа 1. Составление таблиц истинности ………………………
| 5
| 3
| Лабораторная работа 2. Составление программ разветвляющейся усложненной структуры …………………………………………………………………………..
| 7
| 4
| Лабораторная работа 3. Составление программ циклической структуры ………
| 9
| 5
| Лабораторная работа 4. Составление программ усложненной структуры ………
| 11
| 6
| Лабораторная работа 5. Обработка одномерных массивов ………………...……
| 13
| 7
| Лабораторная работа 6. Обработка двумерных массивов ………………………
| 16
| 8
| Лабораторная работа 7. Использование стандартных функций для работы с массивами ….………………………………………………………………………
| 18
| 9
| Лабораторная работа 8. Определение минимального, максимального элемента в массиве ……………………………………………………………………………
| 19
| 10
| Лабораторная работа 9. Работа со строковыми переменными …………………
| 20
| 11
| Лабораторная работа 10. Использование стандартных функций и процедур для работы со строками ………………………….…………………………………......
| 23
| 12
| Лабораторная работа 11. Организация процедур…………………………..……...
| 25
| 13
| Лабораторная работа 12.Использование процедур……………………………….
| 29
| 14
| Лабораторная работа 13. Организация и использование функций……………
| 30
| 15
| Литература ….…………………………..…………………………………...……….
| 33
|
Введение Пособие предназначено для студентов специальности 230103 «Автоматизированные системы обработки информации и управления». Включает лабораторные работы курса «Основы алгоритмизации и программирования». Пособие составлено в соответствии с рабочей программой по данной дисциплине. Каждая лабораторная работа включает тему, цель, оборудование, теоретические сведения, методические указания, задания для самостоятельного выполнения.
Выполнение лабораторных работ должно проходить в компьютерном классе. Для выполнения лабораторных работ необходимо программное обеспечение: TurboPascal, MSExcel.
Так как программирование всегда дается достаточно сложно обучающимся, в каждой работе предложены в качестве образца готовые программы. Студент может составить предложенную программу, изучить ее работу, и уже потом приступать к самостоятельному программированию.
Предложена дополнительная литература, интернет - источники, пользуясь которыми студент может самостоятельно изучать более сложные конструкции языка программирования Турбо Паскаль.
Лабораторная работа 1
Тема: Составление таблиц истинности
Цель: отработать навыки построения таблиц истинности; научиться автоматизировать построения таблиц истинности с использованием программы MSExcel
Оборудование: ПК IBMPC; OSWindows; ПО MSExcel
Методические указания
Логическая операция КОНЪЮНКЦИЯ (логическое умножение) в естественном языке соответствует союзу и, в алгебре высказываний обозначается &.
Истинность высказывания С=А & В, образованного в результате конъюнкции, задается таблицей истинности логического умножения:
А
| В
| А & В
| 0
| 0
| 0
| 0
| 1
| 0
| 1
| 0
| 0
| 1
| 1
| 1
| Составное высказывание, образованное в результате конъюнкции, истинно тогда и только тогда, когда истинны входящие в него простые высказывания.
Логическая операция ДИЗЪЮНКЦИЯ (логическое сложение) в естественном языке соответствует союзу или, в алгебре высказываний обозначается .
Истинность высказывания С=А В, образованного в результате дизъюнкции, задается таблицей истинности логического сложения:
А
| В
| С=А В
| 0
| 0
| 0
| 0
| 1
| 1
| 1
| 0
| 1
| 1
| 1
| 1
| Составное высказывание, образованное в результате дизъюнкции, истинно тогда, когда истинно хотя бы одно из входящих в него простых высказываний.
Логическая операция ИНВЕРСИЯ (отрицание) в естественном языке соответствует частице не, в алгебре высказываний обозначается .
Истинность высказывания С= А, образованного в результате инверсии, задается таблицей истинности логического отрицания: Инверсия делает истинное высказывание ложным и наоборот.
Высказывания, у которых таблицы истинности совпадают, называются равносильными. Например, А &В= (А В), докажем
А
| В
| А
| В
| А &В
|
| А
| В
| А В
| (А В)
| 0
| 0
| 1
| 1
| 1
|
| 0
| 0
| 0
| 1
| 0
| 1
| 1
| 0
| 0
|
| 0
| 1
| 1
| 0
| 1
| 0
| 0
| 1
| 0
|
| 1
| 0
| 1
| 0
| 1
| 1
| 0
| 0
| 0
|
| 1
| 1
| 1
| 0
|
Таблицы истинности совпадают, следовательно, логические выражения равносильны: А &В= (А В)
Пример. Для формулы A&(BB&C) построить таблицу истинности. А
| В
| С
| В
| С
| В &С
| B(B&C)
| A&(BB&C)
| 0
| 0
| 0
| 1
| 1
| 1
| 1
| 0
| 0
| 0
| 1
| 1
| 0
| 0
| 0
| 0
| 0
| 1
| 0
| 0
| 1
| 0
| 1
| 0
| 0
| 1
| 1
| 0
| 0
| 0
| 1
| 0
| 1
| 0
| 0
| 1
| 1
| 1
| 1
| 1
| 1
| 0
| 1
| 1
| 0
| 0
| 0
| 0
| 1
| 1
| 0
| 0
| 1
| 0
| 1
| 1
| 1
| 1
| 1
| 0
| 0
| 0
| 1
| 1
| Логические выражения и таблицы истинности
Таблицу, показывающую, какие значения принимает составное высказывание при всех сочетаниях (наборах) значений входящих в него простых высказываний, называют таблицей истинности составного высказывания. Составные высказывания в алгебре логики записываются с помощью логических выражений. Для любого логического выражения достаточно просто построить таблицу истинности.
ЗАДАНИЕ 1.Построить таблицу истинности сложного высказывания: А Ú (А & В) Ú (В & С)
ЗАДАНИЕ 2.Докажите закон ассоциативности. (А & В) & С= А & (В & С)
Докажите закон исключения. (А & В) Ú (ØА & В)=В, (А Ú В) & (Ø А Ú В)=В
Для того чтобы автоматизировать процесс составления таблиц истинности составим её в программе MSExcel.
Загрузите MSExcel, для этого выполните команду Пуск – Программы – MicrosoftOffice - MSExcel.
Докажем с помощью программы МSExcelЗакон де Морган А&В= (А В).
Заполним ячейки А1, А2, А3, А4, А5, В1, В2, В3, В4, В5 по вышеприведенному образцу. В ячейку С2 введем функцию =не (А2), она соответствует выражению А. В ячейку D2 ведем функцию =не (В2), она соответствует выражению В. В ячейку Е2 введем функцию =и(С2;D2), она соответствует выражению А& В. В ячейку F2 введем функцию =не (или (А2;В2)), она соответствует выражению (АВ). Выделим ячейки с А2 по F2 в блок, наведем указатель мыши на маркер заполнения и протянем вниз на три строки. Если результат заполнения столбцов Е и F будут одинаковые, закон де Моргана доказан. В результате должна получиться таблица:
| А
| В
| С
| D
| E
| F
| 1
| A
| B
| А
| В
| А &В
| (А В )
| 2
| ЛОЖЬ
| ЛОЖЬ
| ИСТИНА
| ИСТИНА
| ИСТИНА
| ИСТИНА
| 3
| ЛОЖЬ
| ИСТИНА
| ИСТИНА
| ЛОЖЬ
| ЛОЖЬ
| ЛОЖЬ
| 4
| ИСТИНА
| ЛОЖЬ
| ЛОЖЬ
| ИСТИНА
| ЛОЖЬ
| ЛОЖЬ
| 5
| ИСТИНА
| ИСТИНА
| ЛОЖЬ
| ЛОЖЬ
| ЛОЖЬ
| ЛОЖЬ
| Она соответствует нижеприведенным таблицам истинности:
А
| В
| А
| В
| А &В
|
| А
| В
| АВ
| (А В)
| 0
| 0
| 1
| 1
| 1
| 0
| 0
| 0
| 1
| 0
| 1
| 1
| 0
| 0
| 0
| 1
| 1
| 0
| 1
| 0
| 0
| 1
| 0
| 1
| 0
| 1
| 0
| 1
| 1
| 0
| 0
| 0
| 1
| 1
| 1
| 0
| ЗАДАНИЕ 3.Автоматизируйте построение таблиц истинности для следующих формул в программе MSExcel.
а) А(ВВ&C) б) A&(B&BC) в) A(BB)&A(B&C) Контрольные вопросы
Перечислите основные логические операции.
Что изучает наука логика?
Лабораторная работа 2
Тема:Составление программ разветвляющейся усложненной структуры
Цель: научиться составлять программы с использованием оператора CASE..OF, IF.. усложненной структуры
Оборудование: ПК, ПО TurboPascal ЗАДАНИЕ 1. Выполнить программы на языке программирования TurboPascal по образцу.
Программа 1. Использование структуры case ... ofдля преобразования введенного целого числа из диапазона (0..4) в его словесное представление
Program Digit2;
varNum: integer;
begin
write('Введитечисло:');
readln(Num);
case Num of
0: writeln('Нуль');
1: writeln('Один');
2: writeln('Два ');
3: writeln('Три ');
4: writeln('Четыре')
elsewriteln('Введено другое число')
end;
readln
end.
Программа 2. Определение номера квартала по введенному номеру месяца
Program Digit3;
var
Num:integer;
begin
write('Введитеномермесяца:');
readln(Num);
case Num of
1,2,3 :write!n('Первыйквартал');
4,5,6 :writeln('Второй квартал');
7..9: writeln('Третий квартал');
10..12: writeln('Четвертый квартал')
elsewriteln('Некорректныйввод')
end;
readln
end.
Программа 3.Введите трехзначное целое числоN. Определить, равняется ли сумма цифр числаN, заданному числу M.
Program Digit5;
const M=5;
var
N, M: integer;
begin
write('Введите трехзначное число:');
readln(N);
а:= N div 100;
b:= N – a*100;
c:=b div 10;
d:=c mod 10;
S:=a+c+d;
If S=M Then WriteLn(‘Summa cifrchisla’, N, ‘=’,M) Else WriteLn(‘Summa cifrchisla’, N, ‘ne ravno’, M)
end. ЗАДАНИЕ 2. Выполнить программы на языке программирования TurboPascal самостоятельно.
По заданному номеру дня недели (целому числу от 1 до 7) получить число уроков в этот день.
Составить алгоритм и программу для вычисления функции:
Введите два любых числа. Если они четные, посчитать их произведение, если они нечетные – сумму, в противном случае посчитать их частное.
Контрольные вопросы
Определите значение выражения: if (x>0) and (x<1) theny:=x*xelsey:=x-2 при х=0,2; 3; 0
Определитезначениевыражения: if (a<0) or (a>1) then y:=a*a else y:=a-2 при a=0,2; 3; 0
Лабораторная работа 3
Тема: Составление программ циклической структуры
Цель: научиться составлять программы с использованием операторов For…, While …
Оборудование: ПК, ПО TurboPascal ЗАДАНИЕ 1. Составить предложенные программы на языке программирования TurboPascal. Ответить на контрольные вопросы.
Программа 1. Вывод на экран кубов чисел от 11 до 5
Program Test2;
var
N: integer;
begin
for N:=11 downto 5 do
write(N*N*N:5);
writeln;
readln
end.
Контрольные вопросы
В каких случаях используется конструкция FOR … DOWNTO .. DO, авкаких - FOR … TO .. DO
Для каких целей используется оператор readln перед последним оператором END?
Объясните, для чего в записи WRITE(N*N*N:5); используется:5?
Программа 2. Вычисление суммы чисел от 6 до 10
Program Test4:
var
N: integer;
S: integer;
begin
S:=0;
for N:=6 to 10 do
S:=S + N;
writeln('Суммачисел=', S:6);
readln
end.
Контрольные вопросы
Для каких целей в программе заведена переменная N, S?
Объясните, для чего в записи WRITELN('СУММА ЧИСЕЛ=', S:6); используется S:6?
Программа 3. Из чисел от 10 до 99 вывести те, сумма цифр которых равна S(0 {Обозначим: k - это просматриваемое число; p1 - это первая цифра числа k, р2 - это вторая цифра числа k; s - это сумма цифр данного числа k. Число k будем выписывать только в том случае, когда сумма p1 и р2 будет равна s.} program prim2;
usescrt;
var k,n,p1,p2,s:integer;
begin
clrscr;
writeln(' целоечисло n=');
readln(n);
for k:=10 to 99 do
begin
p1:=k div 10;
р2:=к mod 10;
s:=p1+p2;
if s=n then writeln('k= ',k);
end;
end.
Контрольные вопросы
Что обозначают операции div и mod?
Для каких целей используется оператор clrscr?
ЗАДАНИЕ 2. Выполнить программы на языке программирования TurboPascal самостоятельно.
Выведите на экран монитора последовательность
Вычислите р = 15! (15 факториал).
Составить программу вычисления значения выражения s=ln(12)+ln(11)+ln(10)+... +ln(1).
Лабораторная работа 4
Тема: Составление программ усложненной структуры
Цель: научиться составлять программы с использованием операторов Window, TextBackGround
Оборудование: ПК, ПО TurboPascal ЗАДАНИЕ 1. Составить предложенные программы на языке программирования TurboPascal. Ответить на контрольные вопросы.
Программа 1. Данная программа по очереди откроет четыре окна, и каждое из этих окон «зальется» разным фоновым цветом:
Uses CRT;
Begin
Window (1, 1, 40, 12)
TextBackGround(White); ClrScr;
Window (41, 1, 80, 12);
TextBackGround (Red); ClrScr;
Window (1, 13, 40, 25);
TextBackGround (LightRed); ClrScr;
Window (41, 13, 80, 25);
TextBackGround (Green); ClrScr;
End.
Составить программу, протестировать, продемонстрировать преподавателю.
Измените цвет полученных окон.
Внесите изменения в программу: перед командой End вставьте следующий блок команд
Repeat Until KeyPressed;
Window(1,1,80,25);
TextBackGround(black); ClrScr;
Сделайте вывод, что изменилось в работе новой программы.
Программа 2. По следующей программе на белом фоне в середине экрана будут выведены номера первых пятнадцати цветов, и каждый номер будет того цвета, который он обозначает:
Uses CRT;
VarI : Byte;
Begin
TextBackGround (White);
ClrScr;
GoToXY (1, 12);
ForI := 0 To 14 Do
Begin
TextColor (I);
Write (I : 5)
End
End.
Запишите данные в тетрадь.
Контрольные вопросы
Для чего подключаем в программе модуль CRT?
В чем состоит отличие операторов TextBackGroundиTextColor?
Для чего предназначен оператор GoToXY?
ЗАДАНИЕ 2. Составить программы и определить результат. Данные занести в тетрадь. Ответить на вопрос.
Программа 1. Определить, что будет напечатано следующей программой, если в качестве исходных данных заданы числа 1.0 и -2.0:
Program Roots;
Var B, C, D : Real;
Begin
Read (B, C);
D :=Sqrt (Sqr9B) – 4 * C);
WriteLn (‘x1 =’ , (-B+D)/2,
x2 =’ , (-B-D)/2)
End.
Программа 2. Определить, что будет напечатано следующей программой при последовательном введении значений 3.4 и 7.9:
Program Less;
VarX : Real; T : Boolean;
Begin
Read (X);
T :=X
Read (X);
T := T And (X
WriteLn (T)
End.
Программа 2. Определить, что будет напечатано следующей программой при последовательном введении значений 36, -6 и 2345:
Program ABC;
VarA, B : Integer;
Begin
Read (A, B, A);
WriteLn (A, B : 2, A:5)
End.
Контрольные вопросы
Что обозначают следующие функции Round и Trunc ?
ЗАДАНИЕ 3. Составь программы, протестировать. Результат записать в тетрадь и продемонстрировать преподавателю.
Программа 1. Составить программу вычисления суммы двух целых чисел, которая будет вести диалог с пользователем в следующем виде (вместо многоточий – вводимые и выводимые числа):
Введите два слагаемых
а = .........................
b= ........................
Результат вычислений:
a+b = ....................
Программа 2.В ходе лечебного голодания масса пациента за 30 дней снизилась с 96 до 70 кг. Было установлено, что ежедневные потери массы пропорциональны массе тела. Требуется вычислить, чему была равна масса пациента через K дней после начала голодания для k=1,2,..., 29.
VarI : Byte;
P, Q : Real;
Begin
P := 96;
Q :=Exp (1/30 * Ln (70/96));
ForI := 1 To 29 Do
Begin
P := Q*P;
WriteLn (I, ‘-q день –‘, P : 5 : 3, ‘ кг’)
End
End. Лабораторная работа 5
Тема: Обработка одномерных массивов
Цель:приобрести практические навыки работы с одномерными массивами
Оборудование: ПК, ПО TurboPascal Методические указания.
Массивом называется последовательность конечного числа величин одного типа, обозначенных одним именем, но с различными индексами. Элементы массива являются индексированными переменными, которые упорядочены по значениям индексов. Переменная с индексом обозначается именем массива со списком индексов, заключенных в квадратные скобки. Например, задан массив
1.4 15.8 - 8.54 0.125 - 3.0
Обозначим массив именемС, тогда
С: = 1.4; С[2]: = 15.8; С[3]: = - 8.54; С[4]: = 0.125; С[5]: = - 3.0.
Если массив состоит из переменных с одним индексом, то он называется одномерным. В противном случае массив называется многомерным. Если в программе используется массив, то он должен быть описан либо в разделе переменных VAR, либо в разделе типов TYPE.
Описание одномерного массива в разделе переменных VAR имеет вид VARимямассива: ARRAYOF P2; Здесь ARRAY и OF – служебные слова;Р1 – тип индекса, в качестве которого может быть простой тип, кроме REAL и INTEGER; P2 – тип элемента массива, например: VARС: ARRAYOF REAL; где С – имя массива, элементы которого имеют тип REAL, индекс изменяется от 1 до 8.
Описание массивов в разделе описания типов TYPE обычно осуществляется в два этапа. Сначала в разделе типов TYPE указывается тип массива, а затем в разделе описания переменных VAR указываются массивы, относящиеся к данному типу:
TYPE имятипа= ARRAY [P1] OF P2
VAR имя массива: имя типа;
ЗАДАНИЕ 1. Набрать программу, получить результат, данные занести в тетрадь.
Даны два массива чисел А и В (по 15 чисел в каждом ряду). Сформировать новый массив С, элементы которого определяются по правилу сi= ai + bi
Program Massivi;
Uses CRT;
Begin
type Mas = Array[1..10] of integer;
Var
a, b, c: Mas;
i: byte;
Begin
ClrScr;
{Vvodimelementimassivov a i b}
For i:=1 to 10 do
Begin
Write('A[', i, ']='); Read(a[i]);
Write(' B[', i, ']='); Read(b[i]);
Read
End;
{Formiruemmassiv C}
For i:=1 to 10 do
Begin
C[i]:=A[i]+B[i];
Write(' C[', i, ']=',C[i])
End
End. Контрольные вопросы
Объясните, что обозначает запись typeMas = Array[1..10] ofinteger?
ЗАДАНИЕ 2. Составить программу и определить результат. Данные занести в тетрадь. Сформулировать условие задачи, решением которой будет являться составленная программа.
Программа 1.
Program Massivi;
Uses CRT;
Begin
type Mas = Array[1..5] of integer;
Var
x, y : Mas;
i: byte;
Begin
ClrScr;
{Vvodimelementimassiva x}
For i:=1 to 5 do
Begin
Write('X[', i, ']='); Read(X[i]);
End;
{Formiruemmassiv C}
For i:=1 to 5 do
Begin
Y[i]:=SQR(A[i]);
Write(' C[', i, ']=',C[i])
End
End.
Программа 2.
Program Massivi;
Uses CRT;
Begin
type Mas = Array[1..5] of Real;
Var
n, m : Mas;
i: byte;
Begin
ClrScr;
{Vvodimelementimassiva n}
For i:=1 to 5 do
Begin
Write('N[', i, ']='); Read(N[i]);
End;
{Formiruemmassiv C}
For i:=1 to 5 do
Begin
M[i]:=Trunc(N[i]);
Write(' M[', i, ']=',M[i])
End
End.
Введите значения
N[1]=3.5
N[2]=7.58
N[3]=3.5567
N[4]=93.52
N[5]=43.22
Полученный результат запишите. Сформулируйте условие задачи, для которой будет являться данная программа решением.
Исправьте в программе функцию Trunc на Round. Полученный результат запишите. Что изменилось в результатах работы программы.
ЗАДАНИЕ 3. Составьте программу. Результат записать в тетрадь и продемонстрировать преподавателю.
Задача 1. Даны два массива чисел А и В (по 8 чисел в каждом ряду). Сформировать новый массив С, элементы которого определяются по правилу di= ai2 + 2bi
Задача 2. Дан массив А (8 чисел). Сформировать новый массив А, элементы которого определяются по правилу: если номер четный, то di= ai2, иначе di= 2аi Лабораторная работа 6
Тема: Обработка двумерных массивов
Цель:Сформировать понятие двумерного массива числового типа; научиться осуществлять обращение к элементам двумерного массива, ввода и вывода массива, составления алгоритмов обработки массивов.
Оборудование: ПК, ПО TurboPascal
Задание 1.Сформировать двумерный массив 34, заполнить его элементами с клавиатуры. Распечатать сумму элементов А23 и А43.
usescrt;
const n=3; m=4;
var a:array[1..n,1..m] of integer;
i,j:integer;
begin
clrscr;
For i:=1 to n do
Begin
For j:=1 to n do
Begin
Write (‘Vvedite A[‘ , I , ‘,’ , j , ‘]=’);
ReadLn(A[i,j]);
End;
End;
For i:=1 to n do
Begin
For j:=1 to n do
Write (‘ ‘, A[i,j]);
WriteLn;
End;
Write ( A[2,3]+ A[4,3]);
End.
|
|
|