Основы программирования — Осенний семестр; Михалкович С.С.; 2008; I — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Переменные и их описание)
(Типы)
Строка 176: Строка 176:
 
==Типы==
 
==Типы==
 
* ''Целые''
 
* ''Целые''
:integer (4 байта)
+
:<tt>'''integer'''</tt> (4 байта)
:shortint (1)
+
:'''<tt>shortint</tt>''' (1)
:smallint (2)
+
:'''<tt>smallint</tt>''' (2)
:int64 (8)
+
:'''<tt>int64</tt>''' (8)
  
 
* ''Вещественные''
 
* ''Вещественные''
:real (8)
+
:'''<tt>real</tt>''' (8)
:single (4)
+
:'''<tt>single</tt>''' (4)
  
 
* ''Символьные''
 
* ''Символьные''
:char (2 — Unicode)
+
:'''<tt>char</tt>''' (2 — Unicode)
  
 
*''Строковые''
 
*''Строковые''
:string
+
:'''<tt>string</tt>'''
:string[200]
+
:'''<tt>string</tt>'''[200]
:shortstring = string[255]
+
:'''<tt>shortstring</tt>''' = <tt>string</tt>[255]
  
 
* ''Логический''
 
* ''Логический''
:boolean (1) | ['''True''' '''False''']
+
:'''<tt>boolean</tt>''' (1) ['''<tt>''True''</tt>''' '''<tt>''False''</tt>''']

Версия 10:14, 1 июня 2009

Алгоритм

Свойства алгоритма

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

Связанные понятия

Спецификация задачи — точное, однозначное описание задачи. Включает формулировку входных и выходных данных.

Исполнитель алгоритма — устройство, имеющее некоторую систему команд, и способное их исполнять.

Процессор — исполнитель машинных кодов.

Пример.

Дано: x, y, z.
Найти max

Алгоритм 1. (словесное описание)

Если x>y и x>z, то максимум — это x
Если y>x и y>z, то максимум — это y
Если z>x и z>y, то максимум — это z

Алгоритм 2. (псевдокод)

max := x
Если y<max то max := y
Если z<max то max := z

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

Способы описания алгоритмов

  • словесный
  • псевдокод
  • блок-схемы

Пример. А.2., представленный блок-схемой.

2.JPG

  • диаграммы деятельности (activity diagram) UML

Пример. А.2., представленный диаграммой деятельности.

2-1.JPG

  • язык программирования (ЯП)

Команды алгоритма также называются:

  • операторы языка
  • инструкции языка

Правила записи программ на Object Pascal

По Шпаргалке

Пример программы, вычисляющей длину и площадь круга
Общие правила записи программ на Паскале. Оформление, комментарии
program First; // заголовок программы – необязательная строка
{ Программа вычисления длины окружности и площади круга 
  Автор: Михалкович С.С. Дата написания: 2.09.08 }
const Pi = 3.14;
var
  r: real;   // входные данные - радиус круга
  S,C: real; (* выходные данные - площадь круга и длина окружности *)
begin
  write('Введите радиус окружности: ');
  readln(r);
  S := Pi*r*r;
  C := 2*Pi*r;
  writeln('Длина окружности равна ',С);
  writeln('Площадь круга равна ',S);
end.

PascalABC.NET. Как скачать, инсталлировать. (сайт системы программирования PascalABC.NET)

Синтаксис и семантика ЯП

Определения

Синтаксис — формальные правила описания конструкций ЯП.

Семантика — описывает смысл конструкций ЯП, а также задает ряд ограничений.

Способы описания синтаксиса

  • БНФ (Бэкуса-Наура формы, 1960, Алгол-60).

Пример.

<цифра> ::= 0|1|2|3|4|5|6|7|8|9
<идентификатор> ::= <буква> | <идентификатор><буква> | <идентификатор><цифра>

0, 1, ... 9

называют терминалами (лексемами) — это "конечные символы", т.е. по умолчанию известные в ЯП.

<цифра>

так называемый нетерминал (нетерминальный символ).
Он определяется через терминалы, другие нетерминалы и самого себя. Причем в последнем случае правило задания нетерминала называется рекурсивным (как определение нетерминала <идентификатор>)
  • РБНФ (Расширенные БНФ)
[] — 0 или 1 повторение.
{} — 0 и более повторений

Пример.

<идентификатор> ::= <буква> {<буква> | <цифра>}
  • Синтаксические диаграммы (Вирт, Паскаль)

Грамматика языка — совокупность всех синтаксических правил данного ЯП, обычно заданных в форме БНФ.

Грамматика не учитывает все виды ошибок, в ЯП формулируются дополнительные семантические правила.

Замечание 1. Способы 1-3 эквивалентны.

Замечание 2. Синтаксис определяет лексемы языка.

Лексемы Паскаля

  1. спецсимволы: := += *
  2. ключевые слова (begin, end, if, for)
  3. идентификаторы (a, b1)
  4. константы (2, 'ABC', #5)
  5. комментарии (3 вида)
{...}
(*...*)
//...

Обзор современных ЯП

(самостоятельно на форуме)

Переменные и их описание

Основные сведения

Переменная — это ячейка памяти компьютера, имеющая имя и тип.

Тип определяет размер переменной и множество принимаемых ею значений.

В языке Pascal любая переменная перед использованием должна быть описана.
Обычно переменные описываются в разделе описаний.

<xh4> Синтаксис в виде РБНФ </xh4>

<программа> ::= [program <имя>;] 
               <раздел описаний> 
               begin
                 <операторы>
               end.
<операторы> ::= <оператор>{; <оператор>}
<раздел описаний> ::= {<секция раздела описаний>}
<секция раздела описаний> ::= <секция описания переменных> | <с.о. констант> | <с.о. типов> | <с.о. подпрограмм>...

Пример секции описания переменных.

var
  a,b: real;
  i: integer;
<секция описания переменных> ::= var<подсекция>{< подсекция>}
<подсекция> ::= <список имен>: <тип>;
<список имен> ::= <имя>{,<имя>}
<тип> ::= <имя>

Внутриблочные переменные

В PascalABC.NET возможно внутриблочное описание переменных:

begin
  var i,j: integer;
  var r: real := 5.2;
  var Pi := 3.14;

В последнем случае происходит автоопределение типов.

Типы

  • Целые
integer (4 байта)
shortint (1)
smallint (2)
int64 (8)
  • Вещественные
real (8)
single (4)
  • Символьные
char (2 — Unicode)
  • Строковые
string
string[200]
shortstring = string[255]
  • Логический
boolean (1) [True False]