Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
Кінцевий результат праці визначається трьома факторами: фундаментальними та професійно-орієнтованими знаннями і уміннями майбутнього бакалавра, сферо...полностью>>
'Документ'
ООО «Эй Би Клаб», тур оператор по международному туризму (Свидетельство о государственной регистрации юридического лица №1077758649649, реестровый ном...полностью>>
'Информационный бюллетень'
Общественное объединение "Радислава" при поддержке Представительства Христианского детского фонда в Республике Беларусь 1 июля 2009 года в ...полностью>>
'Документ'
приймає участь у змішуванні, СГДК - граничнодопустима концентрація шкідливої речовини у воді водойми. Виходячи з цього, від чого залежить ГДС (вибері...полностью>>

Структура программы. Описание типов данных. Любая программа,все равно на каком языке программирования, состоит из 2-х частей

Главная > Программа
Сохрани ссылку в одной из сетей:

МГВМИ





Московского государственного

вечернего металлургического института

составитель

преподаватель

кафедры «Информатика»

Мирзоев Т А.

Зав.кафедры проф.Сорокин М.Н.

2006 г.

Содержание

Лекция 1 Структура программы. Описание типов данных.

Лекция 2 Арифметические и логические операции.

Лекция 3 Операторы.

Лекция 4 Процедуры и функции.

Лекция 5 Массивы, векторы и матрицы.

Лекция 6 Запись (тип record).

Лекция 7 Файлы и использование.

Лекция 8 Алгоритмизация и блок-схема программы.

Лекция 9 Приближенные методы вычисления определенных интегралов.

Лекция 10 Примеры составления программ для различных задач.

Приложение 1. Коды ошибок

Приложение 2. Границы применения различных описаний.

Список литературы.

Лекция 1

Структура программы.

Описание типов данных.

Любая программа,все равно на каком языке программирования, состоит из 2-х частей:

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

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

В случае языка Паскаль структура программы в общем случае записывается следующим образом:

program MyProg;

{1-ый символ не должен быть цифрой; небязательная строка}

uses

WinCrt;

{ обязательный системный модуль для транслятора}

{разрешает транслировать и использовать операторы ввода-вывода Writeln, Readln и др. Можно добавлять свои модули}

..............

область применения описательных конструкций

здесь применяются описания type,const,var,label

begin

{исполнительная часть программы}

.............

Writeln('привет - это турбо-паскаль');

{оператор вывода сообщений на дисплей}

...........

end. {end. -конец программы}

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

Идентификатор

Это символический адрес, состоящий из любой комбинации

(не более 63) символов.

Например:

Ad1, ident1, MyName, flag, const11, type22, varR и т.д.

Важны следующие ограничения:

  • идентификатор не должен начинаться с цифры или спецзнаков.

  • идентификаторы пишутся в латинском алфавите и не должны

совпадать с резервируемыми словами языка Турбо-Паскаля

(например, const, var, begin, end, label, for и т.д.)

      • Диапазон букв от a..Z,a..z,0..9. Допускается спецсимвол _ (подчеркивание)..

  • при написании идентификоторов не имеет значения, прописная это буква или строчная; транслятор регистр не различает.

Описания типов

Паскаль требует указывать типы применяемых числовых значений и их область применения. Нельзя писать, как это делается в обычной арифметике, 4*5=20, не указав, откуда взялось 4 и 5. Разгадка простая: все делается в компьютере через память, а указания данных в памяти компьютера требует специального описания.

Стандартные типы (см.приложение 2)

(*т.е. не требующие специальной директивы type*)

integer,byte,word,longint,shortint-------описания целого

real,double,extended,singlе ---------------вещественный тип

boolean,longbool-----------------------------логический тип

char,pchar,string-----------------------------символьный тип

Для указания типа используются резервируемые слова: type,var,const.

Директива VAR

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

Напр.

Var

ss : real;

i, j : integer;

Директива CONST

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

  • простая константа;

  • типизированная константа.

Примеры.

Const

d = 1; Это простые константы. В исполнительной

r1= 0.9; части программы менять нельзя!!

s1 =’константа’ ;

Name : string[20]=’Иванов А.Е.’;

Real1: real=3.1478; Это типизированные константы.

i, j, k : byte = 1; Их можно использовать вместо

формальных переменных var

Директива Type.

Применятся для описания следующих типов описаний данных:

  • векторов, массивов, матриц (array);

  • перечисляемых типов (set);

  • структуированных записей (record,object);

  • указательных типов (pointer);

  • процедурных типов;

  • строковый тип (string,char,pchar);

  • интервальный тип ( ‘a’..’z’; 1..999).

  • файловый тип (file,text).

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

литературе по Турбо-Паскалю, которая приведена в конце лекций. Помеченные курсивом типы требуют обязательно применять директиву type.

1.Перечисляемый тип:

Type

Season=(‘весна’,’лето’,’осень’,’зима’);

Ord11=(0,1,2,3,4,5,6,7,8,9);

Digits=set of 0..9;

Соответственно для формальной переменной описание будет выглядеть так

Var

myseason:season;

HisNumber:ord11;

Dd1:digits;

Ff: 0..9;

X: (a,b,c,d);

Описания массивов, матриц и векторов.

Type

Int = array[1..100] of integer; Это одномерный массив (вектор) 100 целых

чисел.

Realx = array[1..3,1..5] of real; Здесь матрица размером 3*5,состоящая из

3 строк и 5 элементов в каждой строке.

Обращение будет вглядить так:

Var

Vector : int;

Matrix : realx;

Отметим, что Турбо-Паскаль допускает использование в качестве формальных

переменных типа var применение array, set без предварительного описания в директиве type.

Описания типа record.

Это структуированная запись и формируется так:

Type Person = record

Hisname : string[20];

Age : byte;

End;

В такой записи в памяти резервирутся строка из 20 символов переменной hisname и переменной age. Обращение такое

Var base:person;

а в случае обращения в программе переменная пишется так:

base.hisname и base.age

Операторы ввода вывода на дисплей.

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

Read(a,b,c) вводит данные с дисплея,вводимые через пробел,

без перехода новую строку

Readln(x,y,z) вводит данные с дисплея,вводимые через пробел,

с переходом новую строку

При вводе данных следует соблюдать описание переменных а,b,c

Для вывода используются две стандартные процедуры:

  • Write(‘Привет’) без перехода на новую строку;

  • WriteLn(‘Число рспечатывают так ’,a:5:2); с переходом

на новую строку.

Примеры составления программ

1.Вычислить объем полого цилиндра:

где: pi=3.14,

h высота цилидра.

r1 – внешний радиус.

r2 – внутренний радиус.

Program volume; {необязательный параметр }

Uses Wincrt; {обязательный параметр Системный модуль}

Const

Pi=3.14;

{простая константа. В программе изменять нельзя!}

Var r1,r2,h,v:real;

begin

Writeln(’Введите радиус большого цилиндра r1’);

Readln(r1);

Writeln(’Введите радиус малого цилиндра r2’);

Readln(r2);

Writeln(’Введите высоту цилиндра h’);

Readln(r2);

If r1>r2 then

begin

V:=pi*h*(r1*r1-r2*r2);

Writeln(’Обьем цилиндра v=’,v:5:2);

{обратите внимание:число выводится на дисплей с указанием чисел 8 и 2}

{первое число 8 означает общее число цифр }

{второе число 2 указывает на число цифр после запятой }

end

Else

Writeln(’Ошибка! r2>r1’);

end;

End.

Среда Турбо-Паскаль.

Исходные модули всегда имеют тип .pas.Чистый бланк для записи новой программы открывается через File-New на панели ТPW. При этом на панели Турбо-Паскаль появлятся чистый бланк с именем noname00.pas.

После набивки программы следует записать ее в свою директорию, используя команды меню FileSave as.При сообщении о записи можно ввести собственное имя с сохранением типа .pas. Окончательные модули оттранслированной программы через команды меню Runrun или (ctrl+f9) записываются в то же самую директорию с приращением .exe. Модули с приращением .exe можно запустить из своей директории без обращения к транслятору TPW.

Лекция 2

Арифметические и логические выражения.

Выражения

Выражения состоят из операций и операндов. Большинство операций в языке Паскаль являются бинарными, то есть содержат два операнда. Остальные операции являются унарными и содержат только один операнд. В бинарных операциях используется обычное алгебраическое представление, например: a+b. В унарных операциях операция всегда предшествует операнду, например: -b.

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

Старшинство операций

Операция

Приоритет

Вид операции

@, not

первый (высший)

унарная операция

*, /, div, mod,

and, shl, shr

второй

операция умножения,

деления, сдвига...

+, -, or, xor

=, <>, <, >,

<=, >=, in

третий

четвертый (низший)

операция сложения

операция отношения

Для определении старшинства операций имеется три основных правила:

1. Во-первых, операнд, находящийся между двумя операциями с различными приоритетами, связывается с операцией, имеющей более высокий приоритет.

2. Во-вторых, операция, находящаяся между двумя операциями с равными приоритетами, связывается с той операцией, которая находится слева от него.

3. В-третьих, выражение, заключенное в скобки, перед выполнением вычисляется как один операнд.

Операции с равным приоритетом обычно выполняются слева-направо, хотя иногда компилятор при генерации оптимального кода может переупорядочить операнды.

Операции

Операции подразделяются на арифметические операции, логические операции, операции со строками, операции над множествами, операции отношения и операцию @ (операция получения адреса).

Арифметические операции

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

Бинарные арифметические операции

Операция Действие Типы операндов Тип результата

+ Сложение Целый Целый

Вещественный Вещественный

- Вычитание Целый Целый

Вещественный Вещественный

* Умножение Целый Целый

Вещественный Вещественный

/ Деление Целый Вещественный

Вещественный Вещественный

div Целочисленное

деление Целый Целый

mod Остаток Целый Целый

Примечание: Операция + используется также, как операция для работы со строками и множествами. Операции +, - и * используются также для операций над множествами.

Унарные арифметические операции

Операция Действие Тип операнда Тип результата

+ Сохранение знака Целый Целый

Вещественный Вещественный

- Отрицание знака Целый Целый

Вещественный Вещественный

Если оба операнда в операциях +, -, *, div или моd являются операндами целого типа, то тип результата будет таким же, как общий тип обоих операндов.

Если один или более операндов в операциях +, -, или * имеют вещественный тип, то тип результата будет вещественным. Если при использовании операции сохранения знака или операции отрицания знака операнд имеет целый тип, то результат будет тоже целого типа. Если операнд вещественного типа, то тип результата будет вещественным (real) или типом с повышенной точностью (extended).

Значение выражения x/y всегда будет вещественного типа (real) или с повышенной точностью (extended), независимо от типов операндов. Если y равно 0, то результат будет ошибочным.

Значение выражение i div j представляет собой математическое частное от i/j, округленное в меньшую сторону до значения целого типа. Если j равно 0, результат будет ошибочным.

Например 18 div 5 = 3

Операция mod возвращает остаток, полученный путем деления двух ее операндов, то есть:

i mod j = i - (i div j) * j

например 18 mod 5 =3, 23 mod 4 =3

Знак результата операции mod будет тем же, что и знак i. Если j равно нулю, то результатом будет ошибка.

Логические операции

При использовании этих операций используется описание Boolean, Longbool, которые имеют только 2 значения: True(истина) или False(ложь), соответственно: 1 или 0.

Для примера 4<5 истина

100<20 ложь

Для описания можно применять типизированную константу var:

Const bb:Boolean=false;

Var flag:Boolean;

Типы логических операций показаны в ниже приведенной таблице:

Логические операции

Операция Действие

Типа операндов

Тип

результата

Целый

Целый

Целый

Целый

Целый

Целый

not Отрицание (битовое)

and И (битовое)

or ИЛИ (битовое)

xor Исключающее ИЛИ

(битовое)

shl Сдвиг влево

shr Сдвиг вправо

Целый

Целый

Целый

Целый

Целый

Целый

Примечание: Операция not является унарной операцией.

Если операндом операции not является операнд целого типа, то результат будет также целого типа.

Если оба операнда в операциях or, and или xor целого типа, то тип результата будет таким же, как тип обоих операндов.

Операции i shl j и i shr j сдвигают значение i влево или вправо на j бит. Тип результата будет таким же, как тип i.

Булевские операции

Типы операндов и результат для булевских операций показаны в таблице

Булевские операции

Операция Действие

Типы операндов

Тип результата

Булевский

Булевский

Булевский

Булевский

not Отрицание

and Логическое И

or Логическое ИЛИ

xor Логическое

исключающее ИЛИ

Булевский

Булевский

Булевский

Булевский

Примечание: Операция not является унарной операцией.

Приведем примеры

1 and 1=1 1 or 1=1 1 xor 1=0 not 1 = 0 1 - True

1 and 0=0 1or 0=1 1 xor 0=1 not 0 = 1 0 - False

0 and 1=0 0 or 1=1 0 xor 1=1

0 and 0=0 0 or 0=1 0 xor 0=0

Результаты этих операций соответствуют обычной булевой логике. Например, выражение a and b является истинным (принимает значение Тruе) только в том случае, если оба операнда a и b имеют истинное значение (Тruе).

В Турбо Паскале поддерживаются две различные модели генерации кода для операций or и and - полное вычисление и вычисление по короткой схеме (частичное вычисление).

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

Операции со строками

Типы операндов и результаты для операции со строками показаны в таблице

Операция Действие Типы операндов Тип результата

+ Конкатенация Строковый, Строковый

символьный или

упакованный строковый

Турбо Паскаль позволяет использовать операцию + для объединения двух строковых операндов. Результатом операции s + t, где s и t имеют строковый тип, символьный тип или упакованный строковый тип, будет конкатенация s и t. Результат будет совместим с любым строковым типом (но не с символьным и не с упакованным строковым типом). Если длина результирующей строки превышает 255 символов, то она усекается до 255 символов.

Напр. ’Соловьев-’+’Седой’=’Соловьев-Седой’

Операции над множествами

При использовании описываются типами set, перечислимый или интервальный.Например:

Var den1:(‘пон’,’вт’,’ср’);

X:1..5;

den2:(‘чт’,’пт’,’сб’);

y:1..10;

den1:=den1+den2=(‘пон’,’вт’,’ср’,’чт’,пт’’,’суб’)

у:=y-x означает,что для y интервал сокращается до 6..10

Типы операндов для операций над множествами показаны в таблице:

Операция Действие Типы операндов

+ Объединение Множества с совместимыми типами

- Разность Множества с совместимыми типами

* Пересечение Множества с совместимыми типами

Результаты операций соотвествуют правилам логики работы с множествами:

1. Перечислимое значение c содержится в a+b только тогда, когда оно содержится в a или в b.

2. Перечислимое значение c содержится в a-b только тогда, когда оно содержится в a и не содержится в b.

3. Перечислимое значение c содержится в a*b только тогда, когда он содержится в обоих множествах a и b.

Если наименьшим перечислимым значением, которое является членом результата операций над множествами, является a, а наибольшиим - b, то типом результата будет множество a..b.

Операции отношения

Типы операндов и результаты операций отношения приведены ниже:

= равно >= больше или равно in принадлежность

<> не равно <= меньше или равно множеству

Сравнение простых типов

Когда операции =, <>, <, >, >= или <= применяются для операндов простых типов, то это должны быть совместимые типы. Однако, если один операнд имеет вещественный тип, то другой может быть целого типа.

Сравнение строк

Операции отношения =, <>, <, >, >= или <= могут применятся для сравнения строк согласно порядку расширенного набора символов кода ASСII. Любые два значения строковых данных можно сравнить, поскольку все значения строковых данных совместимы.

Сравнение множеств

Если операндами являются множества a и b, то при их сравнении получаются следующие результаты:

1. Выражение a=b истинно (= True) только когда a и b содержат одни и те же элементы, в противном случае a<>b.

2. Выражение a = b истинно, когда каждый элемент множества a является также элементом множества b.

3. Выражение a = b истинно, когда каждый элемент множества b является также элементом множества a.

Проверка на принадлежность к множеству

Операция in возвращает истинное значение (True), когда значение элемента перечислимого типа является элементом операнда множественного типа, в противном случае он возвращает значение False.

Для приведенного выше примера ‘пон’ in den2 равно false.

Лекция 3

Операторы

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

Простые операторы

Простым оператором является такой оператор, который не содержит в себе других операторов.

Оператор присваивания

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

Приведем некоторые примеры операторов присваивания:

X := Y + Z

Done := (I>=1) and (I<100);



Скачать документ

Похожие документы:

  1. Составление программы на языке программирования. Отладка и тестирование программы

    Документ
    2. Формализация задачи. (Здесь чаще всего задача переводится на язык математических формул, уравнений, отношений. Если решение требует математического описания какого-то реального объекта, явления или процесса, то формализация равносильна
  2. Курс за второй семестр. Абстрактные типы данных

    Задача
    Идею нисходящего проектирования – многошаговый процесс создания (или выбора существующих) специализированных математических языков описания задач (подзадач) – мы ранее применяли к структурам управления.
  3. Программа составляется с помощью соединения символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики. Краткая история и классификация языков программирования

    Программа
    Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания - выражениями,
  4. Пример настоящей программы для компьютера на языке Лого 16 > Последовательность работы программиста на компьютере 17 > Основные приемы программирования 18 Глава. 2 Устройство и работа компьютера 21

    Документ
    Хочу выразить искреннюю признательность Алексею Михайловичу Епанешникову, внимательно прочитавшему рукопись и сделашему по ее содержанию больше сотни замечаний и нашедшему множество ошибок, одну из которых мне не хочется вспоминать.
  5. Создание программы «Гороскоп» с помощью возможностей языка программирования Turbo Pascal Автор: Малова Юлия, ученица 9 класса Анна Александровна

    Инструкция по работе
    Многие задают себе вопрос: в чём смысл программирования? С какой целью многие изучают это бесполезное занятие? Зачем писать программы, если по окончании их создания знаешь их вдоль и поперек?

Другие похожие документы..