Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика,методичка

.pdf
Скачиваний:
86
Добавлен:
20.04.2015
Размер:
626.21 Кб
Скачать

Продолжение приложения В

Пример:

Составить программу для вычисления an , целые числа a и n (n 0) вводятся с клавиатуры.

Решение:

Составим процедуру для вычисления степени целого числа.

Procedure Degree(x,y:integer; var st:longint);

Var i:integer;

{описательная часть}

Begin

{тело процедуры}

st:=1;

 

For i:=1 To y Do st:=st*x;

End;

Первая строчка описания – это заголовк процедуры, который начинается со слова Procedure. Процедура названа именем Degree. В скобках записан список формальных параметров, то есть перечислены переменные с указанием их типа. Мы используем три параметра: первый – основание степени, то есть число, которое надо возвести в степень; второй – показатель степени, третий – результат. Первые два формальных параметра - параметры-значения, третий – параметр-переменная, и перед ним указано слово Var. Все они описаны как целые (x и y – переменные типа integer; а St – типа longint, так как степенная функция быстро возрастает).

После заголовка процедуры идут разделы описаний. В нашем примере имеется только раздел описания переменных, в котором описывается одна переменная i (счетчик цикла).

Далее идет тело процедуры. Оно начинается служебным словом Begin и заканчивается служебным словом End, после которого стоит точка с запятой ( в конце программы после последнего End ставится точка). В теле процедуры вычисляется степень числа x с помощью цикла For.

В программе процедуры и функции описываются после раздела описания переменных программы, но до начала ее основной части, то есть до Begin, начинающего эту часть.

Вся программа для решения задачи имеет следующий вид:

Program Example_1; Var a, n:integer;

s:longint;

Procedure Degree(x,y:integer; var st:longint); Var i:integer;

Begin st:=1;

For i:=1 To y Do st:=st*x;

End;

Begin

Writeln('введите два числа - основание и показатель степени'); Readln(a,n);

61

Продолжение приложения В

Degree(a,n,s); {обращение к процедуре} Writeln('Результат',s);

Readln;

End.

Процедура вызывается как оператор, состоящий из имени процедуры.

В круглых скобках записываются фактические параметры. В нашем примере формальные параметры x, y и st принимают значения фактических параметров a, n и s соответственно. После заверешения работы процедуры переменные a и n сохранят те же значения, что и при вызове, а s получит новое значение.

Описание функции

Заголовок функции состоит из слова Function, за которым указывается имя функции, затем в круглых скобках записывается список формальных параметров, далее ставится двоеточие и указывется тип результата функции.

В теле функции обязательно должен быть хотя бы один оператор присваивания, в левой части которого стоит имя функции, а в правой ее

значение. Иначе значение функции не будет определено.

Таким образом, общий вид описания функции следующий:

Function Имя [(список формальныъ параметров)]:тип результата

Описательная часть

Begin

Тело функции, в котором обязательно должно быть присваивание Имя_функции:=значение;

End;

Пример:

Написать функцию, подсчитывающую количество цифр натурального числа. Используя ее, определить, в каком из двух данных чисел больше цифр.

Решение: Надо выделять последнюю цифру числа до тех пор, пока число не станет равным нулю. При этом каждый раз счетчик увеличивается на 1 (начальное значение счетчика - 0).

Function Quant(x:longint):byte; Var k:byte;

Begin k:=0;

While x<>0 Do begin

Inc(k); x:=x div 10;

end;

Quant:=k;

End;

62

Продолжение приложения В

В заголовке функции указано ее имя – Quant. Функции передается только один параметр – целое число, количество цифр которого надо найти.

Результат – тоже целое число. В разделе переменных описана переменная k – счетчик цифр. В теле функции с помощью цикла while и выполняются указанные выше действия (увеличивается значение счетчика и удаляется последняя цифра). Заметим, что память для переменной k , которая является локальной, выделяется только тогда, когда начинает свою работу функция. После завершения работы функции эта часть памяти освобождается, и значение k будет не определено.

Program Example_2; Var n1, n2:longint; k1, k2:byte;

Function Quant(x:longint):byte; Var k:byte;

Begin k:=0;

While x<>0 Do begin

Inc(k); x:=x div 10;

end;

Quant:=k;

End;

Begin

Writeln('введите два числа'); Readln(n1,n2);

k1:=Quant(n1); {количество цифр первого числа} k2:= Quant(n2): {количество цифр второго числа} if k1=k2 Then Writeln ('одинаковое количество цифр') Else If k1>k2 Then Writeln ('в первом числе цифр больше') Else Writeln ('во втором числе цифр больше');

Readln;

End.

Функция – это самостоятельная часть программы, имеющая собственные переменные, которым отводится отдельное место в памяти ЭВМ. Этим объясняется тот факт, что переменные с одинаковыми именами, используемые в функции и в основной программе, являются разными. При выполнении программы машина «не путает» имена этих переменных, так как области их действия не совпадают. Это особенно важно при написании больших программ.

63

Продолжение приложения В

Пример:

Вставить строку из нулей после строки с номером k Решение:

Для решения этой задачи необходимо:

1.Первые k строки оставить без изменения.

2.Все строки после k-й сдвинуть на одну вниз, это лучше начать с последней строки и идти до (k+1)-й.

3.Присвоить значение элементам (k+1)-й строки.

4.Необходимо обратить внимание на размерность массива. Так как мы

вставляем строку, то необходимо иметь одну строку «в запасе».

Const n=5; m=7;

type dmyarray=array[1..n+1,1..m] of integer; var a:dmyarray;

procedure Insert(k1:integer;varx:dmyarray); var i,j:integer;

begin

for i:=n downto k1+1 do

for j:=1 to m do x[i+1,j]:=x[i,j];{элементу столбца с номером j

присваиваем элемент этого же столбца, но из предыдущей строки} for j:=1 to m do x[k1+1,j]:=0;

end;

Так как число строк меняется, то процедуру Print надо изменить. Она должна выводить указанное количество строк, начиная с первой.

Procedure Print1 (n1:integer; x:dmyarray); var i,j:integer;

begin

for i:=1 to n1 do begin

for j:=1 to m do write(x[i,j]:4); writeln;

end; end;

Часть основной программы будет такой: begin

Init(a);

Print(n,a);

Writeln('введите номер строки, после которой надо вставить новую строку');

Readln(k);

Insert(k,a);

Print(n+1,a);

Readln;

end.

64

Продолжение приложения В

Файловый тип данных

В задачах, рассматриваемых ранее, данные поступали с клавиатуры, а результаты выодились на экран. Поэтому не исходные данные, ни результаты не сохранялись. Всякий раз при выполнении одной и той же программы, особенно во время ее отладки, приходилось заново вводить исходные данные. Если исходных данных и результатов вычислений очень много, то их удобно оформлять в виде файлов, которые можно хранить на диске точно так же, как и программы.

Файл – это область памяти на внешнем носителе, в котором хранится некоторая информация. В языке Паскаль файл представляет собой последовательность элементов одного типа. Мы будем работать с файлами последовательного доступа. В таких файлах, чтобы получить доступ к элементу, необходимо последовательно просмотреть все предыдущие. Объем информации, которую можно сохранить в файле очень велик. Он значительно больше, чем объем, который можно хранить в оперативной памяти, например, при использовании массива.

Рассмотрим обработку текстовых файлов. Для обработки текстовых файлов используются те же процедуры и функции, что и для обработки обычных типизированных файлов.

Объявление файловой переменной в разделе описания переменных имеет вид: f1,f2: text. Текстовые файлы состоят из символьных строк, строки могут иметь различную длину. Для описания текстовых файлов используется служебное слово text.

Для установления связи между файловой переменной и файлом на диске имеется стандартная процедура assign.

Assign(<имя файловой переменной>,'<имя файла на диске>');

Например: assign (f1,'primer.dat');

После установления такого соответствия все операции, выполняемые над переменной f1, будут выполняться над файлом, имеющим имя primer.dat.

Файл в каждый момент времени может находиться в одном из двух состояний: либо он открыт только для записи, либо только для чтения.

Под чтением из файла понимается пересылка данных из внешнего файла, нахлдящегося на диске, в оперативную память.

Для чтения из файла необходимо открыть файл для чтения посредством процедуры:

reset(<имя файловой переменной>);

Собственно чтение данных из файла выполняется процедурой: read(<имя файловой переменной>,<имя переменной>);

Согласно этой записи данные вводятся из файла, хранящегося на диске. Под записью в файл понимается вывод результатов программы из оперативной памяти в файл на диске. Для записи в файл необходимо открыть

файл для записи посредством процедуры:

rewrite (<имя файловой пременной>);

65

Окончание приложения В

Собственно запись данных в файл выполняется процедурой: write(<имя файловой переменной>,<значение>);

Согласно этой записи данные записываются в файл.

После работы с файлами их необходимо закрыть. Это выполняется с помощью следующей процедуры:

close(<имя файловой переменной>).

Пример:

Ввести с клавиатуры и записать в файл Primer.dat последовательность целых чисел.

Решение: Сначала свяжем файловую переменную с конкретным внешним файлом при помощи процедуры Assign. Откроем файл для записи посредством процедуры Rewrite. Признак конца последовательности чисел ввод числа 0.

Var f:file of Integer; n:integer;

Begin

assign (f,'primer.dat');{связываем файловую переменную с файлом на диске} rewrite(f);{открываем файл для записи}

writeln('конец ввода чисел - 0'); repeat{пока не будет введен 0} writeln('введите число');

readln(n);

{если введенное число, отличное от 0, то записываем его в файл} if n<>0 then write(f,n);

until n=0; {если введен 0, то выходим из цикла} close (f); {закрываем файл}

End.

66

ПРАВИЛА ВЫПОЛНЕНИЯ КОНТРОЛЬНЫХ РАБОТ

Работы, выполненные без соблюдения приведенных ниже правил, не заcчитываются и возвращаются студенту для переработки.

1.Контрольная работа выполняется в тетради чернилами любого цвета кроме красного, или на листах формата А4 в печатном виде.

2.На обложке тетради четко пишется: фамилия студента, имя и отчество, номер контрольной работы, название дисциплины «Информатика», кафедра «Электропривод и АПУ». В конце работы должна быть подпись выполнявшего работу студента и дата выполнения.

3.На оборотной стороне обложки работы следует вклеить номер варианта и номера заданий контрольной работы, полученные у преподавателя. Контрольная работа должна содержать все задания строго по своему варианту. В противном случае она не засчитывается.

4.Решение необходимо располагать в порядке номеров, указанных в заданиях, сохраняя номера заданий.

5.Решение задач следует излагать подробно и аккуратно, объясняя и мотивируя все действия походу решения и делая необходимые чертежи.

6.В конце тетради целесообразно оставлять несколько чистых листов для выполнения дополнений и исправлений.

ЗАКЛЮЧЕНИЕ

Методические указания содержат часть теоретического курса информатики и практическую часть, связанную с основами алгоритмизации и программирования задач. Для усвоения теоретического материала необходима систематическая самостоятельная учебная работа студентов. Самостоятельная работа студентов – способ активного, целенаправленного приобретения студентом новых для него знаний и умений без непосредственного участия в этом процессе преподавателей. Организационные мероприятия, обеспечивающие нормальное функционирование самостоятельной работы студента, должны основываться на следующих предпосылках:

самостоятельная работа должна быть конкретной по своей предметной направленности;

самостоятельная работа должна сопровождаться эффективным, непрерывным контролем и оценкой ее результатов.

Мероприятия, создающие предпосылки и условия для реализации самостоятельной работы, должны предусматривать обеспечение каждого студента методическими материалами, информационными ресурсами (справочники, учебные пособия, банки индивидуальных заданий, обучающие программы, пакеты прикладных программ), а также контролирующими материалами (тестами).

Данное пособие позволит студентам с различным уровнем подготовки в данной области получить, дополнить, систематизировать и проверить свои знания по основам информатики.

67

Учебное издание

ИНФОРМАТИКА

Методические указания

Составитель ПЕТРОВА Марина Валерьевна

Редактор Н. А. Евдокимова

Подписано в печать 07.06.2011. Формат 60 84/16. Усл. печ. л. 3,95. Тираж 100 экз. Заказ 624.

Ульяновский государственный технический университет 432027, г. Ульяновск, ул. Сев. Венец, д. 32.

Типография УлГТУ, 432027, г. Ульяновск, ул. Сев. Венец, д. 32.

68