Экономикалық мамандықтарының студенттеріне арналған

Автор работы: Пользователь скрыл имя, 26 Октября 2011 в 23:09, реферат

Описание

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

Работа состоит из  1 файл

123.doc

— 182.50 Кб (Скачать документ)

End
Begin

Writeln('Введите  три числа'); 
Readln(A,B,C); 
Writeln('Максимальным из всех является ', Max(Max(A,B),C))

End.

Обратите внимание на краткость тела основной программы и на прозрачность действий внутри функции. Формальные параметры A и B, используемые в подпрограмме, не имеют никакого отношения переменным A и B, описанным в основной программе.

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

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

Еще один классический пример. Задача: "Расположить в  порядке неубывания три целых  числа".

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.

 
Работа  с файлами

Тип-файл представляет собой последовательность компонент  одного типа, расположенных на внешнем устройстве (например, на диске). Элементы могут быть любого типа, за исключением самого типа-файла. Число элементов в файле при описании не объявляется. Работа с физическими файлами происходит через так называемые файловые переменные.

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

Пример: 
Type

N = File Of Integer; {Тип-файл  целых чисел} 
C = File Of Char; {Тип-файл символов}

Есть заранее  определенный в Паскале тип файла с именем Text. Файлы этого типа называют текстовыми.

Введя файловый тип, можно определить и переменные файлового типа: 
Var

F1 : N; 
F2 : C; 
F3 : Text;

Тип-файл можно  описать и непосредственно при  введении файловых переменных: 
Var 
Z : File Of Word;

Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и т.д.). Их можно использовать лишь для выполнения операций с файлами (чтение, запись и т.д.).

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

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

Формат: 
Assign(<Имя файловой переменной>,<Имя файла>);

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

После этого  файл должен быть открыт одной из процедур: 
Reset(<Имя файловой переменной>); 
Открывается существующий файл для чтения, указатель текущей компоненты файла настраивается на начало файла. Если физического файла, соответствующего файловой переменной не существует, то возникает ситуация ошибки ввода-вывода.

Rewrite(<Имя файловой переменной>); 
Открывается новый пустой файл для записи, ему присваивается имя, заданное процедурой Assign. Если файл с таким именем уже существует, то он уничтожается.

После работы с  файлом он, как правило, должен быть закрыт процедурой Close
Close(<Имя файловой переменной>);

Это требование обязательно должно соблюдаться  для файла, в который производилась запись.

Теперь рассмотрим непосредственную организацию чтения и записи.

Для ввода информации из файла, открытого для чтения, используется уже знакомый вам оператор Read. Правда, в его формате и использовании  вы заметите некоторые изменения: 
Read(<Имя файловой переменной>, <Список ввода>); 
Происходит считывание данных из файла в переменные, имена которых указаны в списке ввода. Переменные должны быть того же типа, что и компоненты файла.

Вывод информации производит, как можно догадаться оператор Write(<Имя файловой переменной>, <Список вывода>);

Данные из списка вывода заносятся в файл, открытый для записи. 
Для текстовых файлов используются также операторы Readln и Writeln с соответствующими дополнениями, относящимися к файловому вводу-выводу. Любопытно, что вывод данных на монитор и ввод с клавиатуры в языке Паскаль тоже являются действиями с файлами. Они даже имеют свои предопределенные файловые переменные текстового типа: Output и Input соответственно. Переменная Output всегда открыта для записи, Input - для чтения. Если не указывать файловые переменные в операторах ввода-вывода (придем к формату, рассмотренному в теме "Операторы ввода-вывода"), то в случае записи по умолчанию выбирается файл Output, в случае чтения - Input
Как вы знаете, любой файл конечен и продолжать чтение из него информации можно лишь до определенного предела. Как этот предел установить? Проверить, окончен ли файл, можно вызовом стандартной логической функции Eof(<Имя файловой переменной>) 
Она вырабатывает значение True, если файл окончен, и False - в противном случае.

Решим следующую  задачу: "Написать программу, которая  вводит с клавиатуры список фамилий  учащихся, а затем распечатывает  его, кроме тех учащихся, у которых  фамилия начинается с буквы 'Ш'".

Так как заранее количество данных не известно, то для их хранения используем файл. Тип элементов - строковый.

Program L
Var

I,N : Integer; 
F : File Of String; 
S : String;

Begin

Assign(F,'Spis.lst'); {Связываем  переменную F с файлом Spis.lst} 
Writeln('Введите количество учащихся'); 
Readln(N); {Вводим количество учащихся} 
Rewrite(F); {Создаем файл для записи в него данных} 
For I:=1 To N Do {Для всех учащихся} 
Begin

Writeln('Введите фамилию'); 
Readln(S); 
Write(F,S)

End; 
Close(F);  
Reset(F);  
Writeln; Writeln('Список учащихся:'); 
While Not(Eof(F)) Do  
Begin

Read(F,S);  
If S[1]<>'Ш' Then 
Writeln(S)

End; 
Close(F)

End. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

13

Окт

Задания.

Опубликовал admin  Рубрика Лабораторная работа №1

Лабораторная  работа №1

 

 

Тема «Составление и отладка программ линейной структуры».

Цель работы: Научиться составлять и редактировать программы линейной структуры на языке Turbo Pascal в режиме диалога, записывать алгоритм решения задач своего варианта. Познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ.

Вопросы к защите:   

  1. Что такое  переменная?
  2. Как ввести строку программы в память ЭВМ?
  3. Какова структура программы в Turbo Pascal?
  4. В каком порядке выполняются строки программы?
  5. Какая команда запускает программу на выполнение?
  6. Что такое программа линейной структкры?
  7. Типы данных в Turbo Pascal.
  8. Интерпитация блоков при графическом способе записи алгоритма. 
  9. Главное меню.
 

            

 Составить  блок-схему и программу по заданию  своего варианта.

  1. Дано cosα. Найти значения остальных тригонометрических функций.
  2. 2.     Вычислить длину окружности и площадь круга по заданному радиусу.
  3. Найти среднее арифметическое и среднее геометрическое трёх натуральных чисел.
  4. Вычислить периметр и площадь треугольника с заданными сторонами.
  5. Вычислить периметр квадрата, если дана его площадь.
  6. Найти периметр и площадь прямоугольного треугольника с заданными катетами.
  7. Вычислить объём и площадь полной поверхности куба, если дано его ребро.
  8. Найти периметр треугольника заданного координатами своих вершин.
  9. Найти площадь треугольника заданного координатами своих вершин.
  10. Найти сумму, разность, произведение и частное двух ненулевых чисел.
  11. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
  12. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1<R2).
  13. Найти площадь и радиусы вписанной и описанной окружностей для равностороннего треугольника.
  14. Дана длина окружности. Найти площадь круга, ограниченного этой окружностью.
  15. Дана площадь круга. Найти длину окружности, ограничивающей этот круг.
  16. Даны координаты трёх вершин треугольника (x1,y1), (x2,y2), (x3,y3). Найти его периметр и площадь.
  17. Найти корни квадратного уравнения  заданного своими коэффициентами А, В, С (коэффициент А не равен 0), если известно, что дискриминант уравнения неотрицателен.
  18. Дан радиус шара. Найти объём шара и площадь полной поверхности шара.
  19. Дано sinα. Найти значения остальных тригонометрических функций.
  20. Вычислить площадь и периметр прямоугольника с заданными сторонами.

Нет комментариев

13

Окт

Отчёт №1. (2 вариант)

Опубликовал admin  Рубрика Лабораторная работа №1

Лабораторная работа №1

Тема: «Составление и отладка программ линейной структуры».

Цель работы: Научиться составлять и редактировать программы линейной структуры на языке Turbo Pascal в режиме диалога, записывать алгоритм решения задач своего варианта. Познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ.

Задача: Вычислить длину окружности и площадь круга по заданному радиусу.

Блок-схема:

Нет комментариев

13

Окт

Листинг и результат работы программы. (2 вариант)

Опубликовал admin  Рубрика Лабораторная работа №1

Листинг программы:

program lab1;

var r:integer; s,l:real;

Begin

Writeln(‘Введите радиус круга’);

readln(r);

S:=pi*sqr(r);

l:=2*pi*r;

Writeln(‘Площадь круга = ‘,s:2:1,’; Длина круга = ‘,l:2:1);

readln

end.

Результат работы:

Введите радиус круга

4

Площадь круга = 50.3; Длина круга = 25.1 
 
 
 
 
 
 

Информация о работе Экономикалық мамандықтарының студенттеріне арналған