Методические рекомендации для выполнения лабораторных работ
методическая разработка по информатике и икт по теме
В данном пособии представлены методические рекомендации для выполнения лабораторных работ по дисциплине Основы алгоритмизации и программирование. Каждая работа включает теоретичексий материал, задания с подробным описанием для выполнения, задания для самостоятельного выполнения, контрольны вопросы.
Скачать:
Вложение | Размер |
---|---|
posobie_po_lab1-13.docx | 707.31 КБ |
Предварительный просмотр:
ГБОУ СПО Арзамасский коммерческо-технический техникум
ПОСОБИЕ ДЛЯ СТУДЕНТОВ
ДИСЦИПЛИНА:«Основы алгоритмизации и программирования»
СПЕЦИАЛЬНОСТЬ: 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 | 1 |
1 | 0 |
Инверсия делает истинное высказывание ложным и наоборот.
Высказывания, у которых таблицы истинности совпадают, называются равносильными. Например, А &В= (А В), докажем
А | В | А | В | А &В | А | В | А В | (А В) | |
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.
Задание 2.Составьте программу, которая запрашивает размеры двумерного массива, значения его элементов и выводит на очищенный экран получившийся массив.
Задание 3.Дополните предыдущую программу так, чтобы вычислялось и выводилось на экран значение:
- суммы всех элементов массива.
- количества 0 в массиве.
- произведения ненулевых элементов последней строки.
- произведенияположительных элементов последнего столбца.
Контрольные вопросы
- Что понимается под массивом?
- Как обозначаются в программе элементы массива?
- Как объявляются массивы в разделе переменных?
Лабораторная работа 7
Тема: Использование стандартных функций для работы с массивами
Цель: Приобрести практические навыки работы составления алгоритмов обработки массивов.
Оборудование: ПК, ПО TurboPascal
Задание 1. Составить программу для получения массива С, элементы которого получатся по формуле cij= aij – bij.
n = 3; A = В =
Задание 2.Составить программу вычисления суммы С матриц А и В по формуле cij = aij + bij, при чем элементы матрицы В равны: bij =
Исходные данные:
n = 4; А = .
Контрольные вопросы
- Как объявляются массивы с использованием раздела типов?
- Для чего используются упакованные массивы?
- Как организуется в программе ввод массива?
- Какие операции разрешены над элементами массива?
Лабораторная работа 8
Тема:Определение минимального, максимального элемента в массиве
Цель: Научиться определять минимальный и максимальный элемент в двумерном массиве
Оборудование: ПК, ПО TurboPascal
Задание 1.Сформировать двумерный массив и заполнить его произвольным образом.
usescrt;
const n=3;
var a:array[1..n,1..n] of integer;
i,j:integer;
begin
clrscr;
Randomize;
For i:=1 to n do
Begin
For j:=1 to n do
Begin
a[i,j]:=random(10);
write(a[i,j],' ');
End;
Writeln;
End
End.
Задание 2.Сформировать произвольным образом массив D размером 3×4 и массив E, элементы которого вычисляются по формуле Eij=5*Dij. Новый массив распечатать на экране.
Задание 3. Сформировать массивА, размером n×m. Определить максимальный элемент массива.
Program Stroki;
const n=3; m=4;
var a:array [1..n,1..m] of integer;
i, j, max: integer;
Begin
clrscr;
Randomize;
For i:=1 to n do
Begin
For j:=1 to n do
Begin
a[i,j]:=random(10);
write(a[i,j],' ');
End;
Writeln;
End;
max:=a[1,1];
for i:=1 to n do
for j:=1 to n do
write(‘Max=’, max);
readln;
end.
Задание 4. Сформировать массив C, размером 5×5. Определить минимальный элемент массива.
Задание 5. Сформировать одномерный массив А, состоящий из 15 элементов. Определить максимальный элемент и его индекс.
Контрольные вопросы
- В чем отличие одномерного массива от двумерного?
- Как в программе организовать заполнение массива произвольными числами?
Лабораторная работа 9
Тема: Работа со строковыми переменными
Цель:Научиться составлять алгоритмы обработки строковых переменных
Оборудование: ПК, ПО TurboPascal
Методические указания.
Приведенная далее программа выводит на экран длину введенной пользователем строковой величины.
Program Str1;
Var
S : String;
Begin
Writeln('Введите последовательность символов');
Readln(S);
Writeln('Вы ввели строку из ',Length(S), ' символов')
End.
Рассмотрим другой пример. Решим задачу: "Введенную строку вывести на экран по одному символу в строке экрана".
Program Str2;
Var
S : String;
I : Byte;
Begin
Writeln('Введитестроку');
Readln(S);
For I:=1 toLength(S) do {организуем цикл, начиная с первого символа}
Writeln(S[I]) {строки, до последнего (номер последнего}
{совпадает с количеством символов строки S) }
End.
Какие же еще действия можно выполнять с переменными строкового типа?
Две строковые величины можно состыковывать. Эта операция называется конкатенацией и обозначается знаком "+".
Например, результатом выполнения следующих команд:
R:= 'kadabra';
H:= 'abra';
S:=H+R;
в переменной S будет значение 'abrakadabra'.
Рассмотрим пример. "Во введенной строке заменить все вхождения подстроки 'ABC' на подстроки 'KLMNO'".
Program Str6;
Var
S : String;
A : Byte;
Begin
Writeln('Введитестроку');
Readln(S);
While Pos('ABC',S)<>0 Do
Begin
A:= Pos('ABC',S);
Delete(S,A,3);
Insert('KLMNO',S,A)
End;
Writeln(S)
End.
Составьте программу, для реализации следующих фрагментов, изучите как работают предложенные функции.
- s := 'Система TurboPascal';
s2 := copy(s, 1, 7); {s2 будет равно 'Система'}
s3 := copy(s, 9, 5); {s3 будетравно 'Turbo'}
s4 := copy(s, 15, 6); {s4 будетравно 'Pascal'}
- s := 'Система TurboPascal';
delete(s,8,6); {s будет равно 'Система Pascal'}
- s := 'Система Pascal';
insert('Turbo ',s,9); {s будетравно 'Система Turbo Pascal'}
- s := 'Система TurboPascal';
x1 := pos('Pascal', s); {x1 будетравно 15}
x2 := pos('Basic', s); {x2 будетравно 0}
- SumStr := 'Турбо'+'Паскаль'+'7.0'
Составьте программу и определите ее результат.
Program StringLength;
Var
S :string; {макс. длина строки = 255}
Begin
S:=''; {пустая строка}
writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=0}
S:='Пример длинной строки'; {присваиваем строке некоторое значение}
writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=21}
Delete(S,7,8); {удаляем из строки 8 символов, начиная с 7}
writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=13}
S:=S+' символов'; {добавляем к строке строку}
writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=22}
End.
Задание 1. Составьте программу для решения одной из следующих задач.
- Определить, какое из двух слов длиннее и на сколько.
- Определить, является ли какое-нибудь из двух слов частью другого.
- Определить, есть ли в записи квадрата данного числа цифра 1.
- Поменять в слове первую и последнюю буквы.
- Если в слове нечетное число букв, то удвоить среднюю.
- По последнему символу определить тип предложения (повествовательное, вопросительное, восклицательное).
- Определить, является ли данный символ латинской буквой.
- Удалить из слова среднюю букву (или две средних).
Задание 2. Составьте программу для решения одной из следующих задач.
- Заменить в арифметическом выражении знаки "+" на знаки "-", а знаки "-" на знаки "+".
- Удалить все буквы "я" в данном слове.
- Удвоить все четные буквы слова.
- Удалить все предлоги "на" в данном предложении.
- Вставить после каждой буквы данного слова букву "о".
- Удалить лишние пробелы в данном предложении.
- Удвоить каждую букву данного слова.
- Заменить каждую точку многоточием (т.е. тремя точками).
Задание 3. Вызовите программу, составленную Вами при выполнении задания 2, и переделайте ее так, чтобы в ней использовалась только одна строковая переменная.
Контрольные вопросы
- Как в программе определяется строковый тип данных?
- Перечислите известные вам функции для работы со строковыми переменными?
Лабораторная работа 10
Тема:Использование стандартных функций и процедур для работы со строками
Цель:приобрести практические навыки работы со строковыми переменными
Оборудование: ПК, ПО TurboPascal
Функция Copy(S, Pozition, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Pozition. Здесь N и Pozition – целочисленные выражения.
Пример: Значение S Выражение Результат
‘Мама мыла раму’ Copy(S, 6, 4) ‘мыла’
‘Маша ела кашу’ Copy(S, 1, 8) ‘Маша ела’
Функция Concat(S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку.
Пример: Выражение Результат
Concat('Маша ', 'ела ', 'кашу') 'Маша ела кашу'
Функция Length(S) – определяет текущую длину строки S. Результат — значение целого типа.
Пример: Значение S Выражение Результат
'test-5' Length(S) 6
'(A+B)*C' Length(S) 7
Функция Pos(S1, S2) – обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0.
Пример: Значение S2 Выражение Результат
'abcdef' Pos('cd', S2) 3
'abcdcdef' Pos('cd', S2) 3
'abcdef' Pos('k', S2) 0
Процедура Delete(S, Poz, N) – удаление N символов из строки S, начиная с позиции Poz.
Пример: Исходное значение S Оператор Конечное значение S
'abcdefg' Delete(S, 3, 2) 'abefg'
'abcdefg' Delete(S, 2, 6) 'a'
В результате выполнения процедуры уменьшается текущая длина строки в переменной S.
Процедура Insert(S1, S2, Poz) – вставка строки S1 в строку S2, начиная с позиции Poz.
Пример: Исходное значение S2 Оператор Конечное значение S2
'ЭВМРС' Insert('IBM-', S2, 5) 'ЭВМ IBM-PC'
'Рис. 2' Insert('N', S2, 6) 'Рис. N 2'
Задание1. Данфрагментпрограммы:
Type String40 = String[40]; M = Array[1..100] Of String40;
VarA : M; I, J, Min, N : Byte; Vsp : String40;
Begin
Write('N? '); ReadLn(N);
For I := 1 To N Do ReadLn(A[I]);
For I := 1 To N-1 Do
Begin Min := I;
For J := I + 1 To N Do If A[J] < A[Min] Then Min := J;
Vsp := A[I]; A[I] := A[Min]; A[Min] := Vsp;
End;
WriteLn('Ответ: '); For I := 1 To N Do WriteLn(A[I])
End.
Точно и однозначно сформулировать условие задачи, решение которой приведено в данном фрагменте.
Задание 2. Составьте и исполните программу для решения одной из задач.
2.1 Заменить в тексте все маленькие латинские буквы на большие.
2.2 Заменить в тексте все большие латинские буквы на маленькие.
Задание 3.Составьте и исполните программу для решения следующей задачи.
3.1 Удвоить все согласные буквы.
3.2 Удалить из данного слова все согласные буквы.
3.3 Проверить, имеются ли в данном слове одинаковые буквы.
3.4 Оставить в данном слове из каждого набора одинаковых букв, идущих подряд, только одну букву.
3.5 Определить возможность составления одного данного слова из букв другого данного слова с учетом кратности.
3.6 Определить возможность составления одного данного слова из букв другого данного слова без учета кратности.
3.7 Для подсчета количества слов в предложении, учитывая что между словами может быть несколько пробелов.
3.8 Выяснить, можно ли из символов заданного слова составить слово "море".
Задание 4.
- Укажите значение переменной cпосле исполнения серии команд:
а) c:='гардемарин';
c:=copy(c,4,3)+'о'+copy(c,length(c)-1,1);
б) c:='баскетбол';
c:=copy(c,3,1)+copy(c,6,1)+copy(c,length(c)-1,2);
в) c:='баскетбол';
c:=copy(c,length(c)-2,3)+copy(c,length(c)-3,1);
г) c:='баскетбол';
c:=copy(c,4,3)+copy(c,2,1);
- Объясните, для чего предназначены и как исполняются следующие команды:
Q:=a+ba; S:=concat(a,b,c,d); Pos(Q,W); Copy(r,11,3); | Length(s);
|
- Используя функции и процедуры обработки литерных данных перепишите команды:
а) t:=copy(t,3,length(t)-2); через delete;
б) t:=copy(t,1,2)+y+copy(t,3,length(t)-2); через insert;
в) delete(t,3,1) через copy;
г) insert(b,t,4) через copy.
Контрольные вопросы
- Расскажите об операциях, которые можно выполнять над строковыми величинами.
- Расскажите о функциях, определенных для величин строкового типа.
- Расскажите о процедурах, определенных для величин строкового типа.
- Как осуществляется доступ к отдельномусииволу строки?
- Почему значение отношения 'Мама'<>'мама' равно TRUE?
Лабораторная работа 11
Тема: Организация процедур
Цель:Научиться составлять программы с использованием процедур
Оборудование: ПК, ПО TurboPascal
Методические указания
Отдельные, функционально независимые части программы называют подпрограммами (процедурами и функциями). Подпрограммы решают две задачи, значительно облегчающие программирование:
- Избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
- Улучшают структуру программы, облегчая ее понимание при разборе;
- Повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификациях.
С одной стороны, вопрос о том, какие частные алгоритмы должны быть внесены в подпрограммы, во многом определяется привычками программиста. С другой стороны огромное количество разработанных программ позволяет указать на типичные ситуации и сформулировать общие принципы выделения подпрограмм:
- Когда несколько раз переписываются в программе одни и те же последовательности команд, введение подпрограммы приобретает характер острой внутренней потребности;
- Иногда слишком много мелочей закрывает главное. Полезно убрать в подпрограмму подробности, заслоняющие смысл основной программы;
- Полезно разбить длинную программу на составные части – просто как книгу разбивают на главы;
- Бывают сложные частные алгоритмы. Полезно отладить их отдельно в небольших тестирующих программах. Включение программ с отлаженными алгоритмами в основную программу будет легким, если они оформлены как подпрограммы.
- Для повторного использования частей программы лучше сразу выделять в программе полезные алгоритмы в отдельные подпрограммы.
Таким образом, в подпрограммы выделяется любой функционально законченный фрагмент программы.
Формат описания процедуры:
Procedure<Имя процедуры> (<Имя форм.параметра 1>:<Тип>;
< Имя форм.параметра 2>:<Тип>?);
<Раздел описаний>
Begin
<Тело процедуры>
End;
Задание 1.Изучите программу PR и ответьте на следующие вопросы:
1) какие переменные, являясь одна локальной, а другая глобальной, имеют одно и то же имя?
2) будет ли переменная L иметь одно и то же значение в основной программе и в процедуре pr3?
3) доступна ли переменная L, описанная в основной программе, в процедурах pr3 и pr4?
4) окажет ли влияние на переменную L, описанную в основной программе, изменение значения переменной L, описанной в процедуре pr3?
program PR;
var L, D, F: real;
procedure pr2;
var M, N: integer;
begin
…
end;
procedure pr3;
var L, L4: integer;
procedure pr4;
var L5: integer;
begin
…
end;
begin
…
end;
begin
…
end.
Задание 2. Изучите две процедуры. Определите результат их работы.
Пример 1. Определите их принципиальное отличие. Процедура без параметров, которая печатает строку из 60 звездочек.
procedure pr;
var i : integer ;
begin
for i :=1 to 60 do write (‘ * '); writeln;
end.
Пример 2. Процедура c параметрами. Даны 3 различных массива целых чисел (размер каждого не превышает 15). В каждом массиве найти сумму элементов и среднеарифметическое значение.
programproc;
var i , n , sum: integer;
sr : real;
procedure work (r:integer; var s:integer; var s1:real); {процедура work}
var mas : array [1..15] of integer ; { объявлениемассивамas}
j : integer;
begin
s:=0;
for j:=1 to r do begin {вводэлементовмассива mas}
write(' Vvedite element - ', j,': ') ;
read (mas[j]);
s:=s+mas [j];
end;
s1:=s/r;
end;
begin { главнаяпрограмма}
for i:=1 to 3 do begin
write ('Vvediterazmer ',i, ' masiva: ');
readln(n);
work (n, sum, sr); {вызовпроцедуры work}
writeln ('Summa elementov = ',sum);
writeln ('Srednearifmeticheskoe = ',sr:4:1);
end;
readln;
end.
Задание 3. Составьте процедуру SQ в предположении, что дискриминант не отрицателен.
proceduresq(a,b,c: real; var x1,x2:real);
var d:real;
begin
d:=b*b-4*a*c;
x1:= (-b+sqrt(d))/(2*a);
x2:= (-b-sqrt(d))/(2*a);
end;
с помощью процедуры решим кв. ур-е y2+2y-3=0
program s;
var y1,y2: real;
proceduresq (a,b,c : real; var x1,x2 : real);
var d: real;
begin
d:=b*b-4*a*c;
x1:= (-b+sqrt(d))/(2*a);
x2:= (-b-sqrt(d))/(2*a);
end;
begin (*program*)
sq(1,2,-3,y1,y2);
writeln('y1=',y1,'y2=',y2);
end.
Контрольные вопросы:
- Какие задачи в программирование решают процедуры?
- Является ли необходимым использование процедур для решения любых типов задач?
Лабораторная работа 12
Тема:Использование процедур.
Цель: Приобрести навыков работы в написании и отладке программ с использованием процедур
Оборудование: ПК, ПО TurboPascal
Задание 1. Решите задачу с использованием процедур.
Задача: "Расположить в порядке неубывания три целых числа".
Program Pr;
Var
S1,S2,S3 :Integer;
Procedure Swap(Var A,B: Integer);{Процедура Swap спараметрами-переменными}
Var C :Integer; {C - независимая локальная переменная}
Begin
C:=A; A:=B; B:=C {Меняем местами содержимое A и B}
End;
Begin
Writeln('Введитетричисла');
Readln(S1,S2,S3);
If S1>S2 Then Swap(S1,S2);
If S2>S3 Then Swap(S2,S3);
If S1>S2 Then Swap(S1,S2);
Writeln('Числа в порядке неубывания:V',S1,S2,S3)
End.
Задание 2. Составьте процедуры для:
а) ввода одномерного числового массива,
б) вывода одномерного числового массива,
в) ввода двумерного числового массива,
г) вывода двумерного числового массива,
д) нахождения суммы элементов одномерного массива,
е) нахождения суммы элементов двумерного массива,
ж) нахождения произведения элементов одномерного массива,
з) нахождения номера максимального элемента одномерного массива,
и) нахождения номеров максимального элемента двумерного массива,
к) нахождения номера последнего отрицательного элемента массива,
л) нахождения номера первого нулевого элемента одномерного массива,
м) подсчета в данном слове количества вхождений заданной буквы,
н) определения, есть ли в данном слове две одинаковые буквы подряд.
Контрольные вопросы:
- Верна ли, представлена запись: Procedure SB(a: real; b: integer; c: char)? Если нет, укажите на ошибки, если – да, то прокомментируйте предложенные обозначения.
- Определите ошибки в предложенной ниже программе
const
а: integer = 5;
b: integer = 7;
{----------}
Procedure Inc2 (var c: integer; b: integer);
begin {Inc2}
c := c + с;
b := b + b;
WriteLn('удвоенные: ', c:5, b:5)
end {Inc2};
{----------}
begin {main}
WriteLn('исходные: ', a:5, b:5);
Inc2(a,b);
WriteLn('результат: ', a:5, b:5)
end {main}.
Лабораторная работа 13
Тема:Организация и использование функций
Цель: Приобрести навыков работы в написании и отладке программ с использованием функций
Оборудование: ПК, ПО TurboPascal
Теоретические сведения
Набор встроенных функций в языке Паскаль достаточно широк (ABS, SQR, TRUNC и т.д.). Если в программу включается новая, нестандартная функция, то ее необходимо описать в тексте программы, после чего можно обращаться к ней из программы. Обращение к функции осуществляется в правой части оператора присваивания, с указанием имени функции и фактических параметров. Функция может иметь собственные локальные константы, типы, переменные, процедуры и функции. Описание функций в Паскале аналогично описанию процедур. Отличительные особенности функций:
- результат выполнения - одно значение, которое присваивается имени функции и передается в основную программу;
- имя функции может входить в выражение как операнд.
Формат описания функции:
Function<Имя функции> (<Имя форм.параметра 1>:<Тип>;
< Имя форм.параметра 2>:<Тип>?) :<Тип результата>;
<Раздел описаний>
Begin
<Тело функции>
End;
Пример 1. Написать подпрограмму-функцию степени аx, где a, х – любые числа. Воспользуемся формулой: аx = exln a
program p1;
var f, b, s, t, c, d :real; { глобальные параметры}
function stp (a, x : real) : real;
var y :real; { локальные параметры}
begin
y := exp (x * ln ( a)) ;
stp:= y;{присвоение имени функции результата вычислений подпр-мы}
end; { описание функции закончено }
begin {начало основной программы }
d:= stp (2.4, 5); {вычисление степеней разных чисел и переменных }
writein (d, stp (5,3.5));
read (f, b, s, t); c := stp (f, s)+stp (b, t);
writeln (c);
end.
Рекурсия
Процедуры и функции в Паскале могут вызывать сами себя, т.е. обладать свойством рекурсивности. Рекурсивная функция обязательно должна содержать в себе условие окончания рекурсивности, чтобы не вызвать зацикливания программы. При каждом рекурсивном вызове создается новое множество локальных переменных. То есть переменные, расположенные вне вызываемой функции, не изменяются.
Пример 2. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n! = 1 , если n= 1 и n!= ( n -1 )! · n , если n> 1 . Определите результат работы программы.
function f ( n : integer): integer;
begin
if n = 1 then f := 1 else f := n * f ( n -1 ); { функция f вызываетсамусебя}
end;
Задание 1. Задача: "Найти максимальное из трех введенных чисел". Для решения воспользуемся описанием функции, принимающей значение максимального из двух чисел, которые передаются в нее в виде параметров.
Program Fn;
Var
A,B,C :Real;
Function Max(A,B:Real):Real; {ОписываемфункциюMax с формальными}
Begin {параметрами A и B, которая принимает }
If A>B ThenMax:=A {значение максимального из них }
ElseMax:=B {Здесь A и B - локальные переменные }
End;
Begin
Writeln('Введитетричисла');
Readln(A,B,C);
Writeln('Максимальным из всех является ', Max(Max(A,B),C))
End.
Задание 2. Задача: "Найти минимальное из трех введенных чисел". Для решения воспользуемся описанием функции, принимающей значение минимального из двух чисел, которые передаются в нее в виде параметров.
Контрольные вопросы:
- МожнолиприведеннуюзаписьFunction F(a: real; b: real): real;заменитьнаFunction F(a,b: real): real;? Если – нет, то укажите на ошибки, если – да, то прокомментируйте используемые обозначения.
- Какие преимущества дает использование функций в программировании?
Литература
- Система задач и упражнений по языку программирования Pascal / Сост. Е.Ю. Жохова, И.Е. Кокорева, П.А. Корнилов, Л.Я. Московская, У.В. Плясунова. Ярославль, 2002, 52 с.
- Акулич И. Л. Математическое программирование в примерах и задачах. - М.: Высшая школа, 1993.
- Информатика. Задачник-практикум в 2 т. / Л.А.Залогова, М.А. Плаксин, С.В.Русакова и др. Под ред. И.Г.Семакина. Е.К. Хеннера: Том 1. - 4-е изд. -М.: БИНОМ. Лаборатория знаний. 2007. – 309 с.: ил
4. Информатика. Задачник-практикум в 2 т. / Л.А.Залогова, М.А. Плаксин, С.В.Русакова и др. Под ред. И.Г.Семакина. Е.К.Хеннера: Том 2. - 4-е изд. -М.: БИНОМ. Лаборатория знаний, 2007. - 309 с.: ил
5. Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. – М.: ДМК, 2000.
6. Немнюгин С.А. ТurboPascal. – CПб.: Питер, 2000.
7. Аляев Ю., Козлов О. Алгоритмизация и языки программирования Pascal, C++, VisualBasic. – М.: Финансы и статистика, 2003.
Интернет- источники
- http://klax.tula.ru/~zet/frames/thm_procs.html
- http://life-prog.ru/view_zam.php?id=24&cat=1&page=2
- http://pascal.proweb.kz/index.php?page=56
- http://pascal.guti.ru/string.html
- http://www.debryansk.ru/~lpsch/uchitel/konspekt/pascal/pas_lek.htm
По теме: методические разработки, презентации и конспекты
Методические рекомендации по выполнению лабораторной работы "Тепловые эффекты при растворении веществ" с использованием электронной лаборатории MultiLab
Лабораторная работа «Тепловые эффекты при растворении веществ» (8 класс «Теория электролитической диссоциации. Растворение веществ»)....
Методические рекомендации к выполнению лабораторной работы №2 по Visual Basic 6.0. "Разработка программного кода"
Методические рекомендации для студентов по проведению лабораторных занятий по учебной дисциплине «Информатика и информационные коммуникационные технологии». Среда программирования Visual Basic 6.0....
Методические рекомендации к выполнению лабораторной работы №1 по Visual Basic 6.0 "Создание экранной формы (разработка интерфейса)"
Методические рекомендации для студентов по проведению лабораторных занятий по учебной дисциплине «Информатика и информационные коммуникационные технологии». Среда программирования Visual Basic 6...
Дуаль для 41 ПКС часть I (ЛР_№№1-9)!!! Методические_рекомендации_по_выполнению_лабораторных_работ по МДК 03.02 Инструментальные средства разработки программного обеспечения , ждите продолжение.....
Методические_рекомендации_по_выполнению_лабораторных_работ по МДК 03.02 Инструментальные средства разработки программного обеспечения (ИСРПО) предназначены для студентов 4-го курса специа...
Дуаль для 41 ПКС часть II (ЛР_№№10-16)!!! Методические_рекомендации_по_выполнению_лабораторных_работ по МДК 03.02 Инструментальные средства разработки программного обеспечения
Методические_рекомендации_по_выполнению_лабораторных_работ по МДК 03.02 Инструментальные средства разработки программного обеспечения для специальности 230115...
Методические рекомендации к выполнению лабораторных работ № 1 и № 2
Методические рекомендации к Лабораторной работе № 1 и № 2...
Методические рекомендации к выполнению лабораторной работы № 3
В данном материале представлены методические рекомендации по выполнению Лабораторной работы № 3 "Обработка и соединение отделочных деталей с изделием"...