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

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

Чтобы пользоваться предварительным просмотром презентаций создайте себе аккаунт (учетную запись) Google и войдите в него: https://accounts.google.com


Подписи к слайдам:

Язык программирования Pascal Основные понятия А. Жидков

Язык программирования Язык программирования (ЯП) – это формализованная система для описания алгоритмов, которая определяет Алфавит (набор символов) Лексику (набор лексических элементов) Синтаксис (правила написания операторов) Семантику (правила исполнения операторов)

АЛФАВИТ ЯЗЫКА Алфавит – упорядоченный набор символов. Цифры 0 1 2 …. 9 Латинские буквы a b c …. z A B C …Z Знаки операций + * / - >

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

Ключевые слова языка (Внимание!!! Нельзя использовать как идентификаторы) and array as begin break case class const constructor continue destructor div do downto else end exit external externalsync file finalization for forward function if in inherited initialization is mod not of or private procedure program property protected public record repeat set shl shr sizeof string then to type unit until uses var while with xor

Структура Pascal- программы program First; const Pi = 3.14; var r: real ; S,C: real; begin write ("Введите радиус окружности: "); readln (r); S:= Pi*r*r; C:= 2*Pi*r; writeln ("Длина окружности равна C= ",С); writeln ("Площадь круга равна S= ",S); end . Имя программы Заголовок Секция описаний Операторы (блок) Начало блока операторов Конец блока операторов Внимание!!! Операторы языка отделяются знаком; Внимание!!! Программа заканчивается end.

Составной оператор (блок) Составной оператор – это группа операторов заключенных в “ операторные скобки ” Begin … . е nd . Пустой оператор содержит только; , никаких действий не выполняет.

Идентификаторы (имена) Идентификатор – это имя объекта (модуля, функции, переменной). Синтаксис: Идентификатор - последовательность латинских букв и цифр, начинающаяся с буквы. Заглавные и строчные транслятор не различает. Ограничение длины идентификатора (63 символа). Рекомендуется!!! Использовать осмысленные идентификаторы и общепринятые сокращения – это улучшает читаемость программ. Примеры: srednee; V; F; m; massa; m1; skorost

Константы Константа – это величина, которая не может измениться. Числовые константы - это числа 3 3.5 1.75е2 $4ff Строковые константы – это символы в апострофах ‘ Привет кадет ’ . ВНИМАНИЕ!!! Именованные константы надо описать в секции описаний const . Синтаксис: const = ; Например: const Pi = 3.14; Count = 10; Name = "Mike";

Переменные и их описание Переменная - это группа ячеек памяти, имеющая имя, тип и значение. Имя переменной – идентификатор. Тип переменной - определяет: множество принимаемых ею значений количество связанных с ней ячеек памяти. Значение переменной – содержимое группы ячеек памяти отведенных под нее. ВНИМАНИЕ!!! Переменная должна быть описана в секции описаний VAR .

Секция описаний переменых VAR - группа имен переменных, разделенных запятыми. ВНИМАНИЕ!!! Знаки: и; обязательны. Пример: var a,b,c: integer ; d: real ; e,f: integer ; s,s1: string ; ch: char ; Синтаксис: VAR: ;

Типы переменных boolean (логический) real (вещественный) complex (комплексный) string (строковый) тип " массив ” тип " запись ” тип " указатель ” Процедурный Файловый Классовый Типы: integer (целый) byte (байтовый) char (символьный) Перечислимый Диапазонный называются порядковыми. Только эти типы могут быть индексами массивов, переключателями оператора case и параметром цикла for .

Необходимые для нас типы тип длина комментарий string (текстовый) 256 байт Последовательность символов, в нулевом байте хранится длина строки. integer (целый) 4 байта Целые от - 2 147 483 648 до 2 147 483 647 real (вещественный) 8 байт C одержат 15-16 десятичных цифр и по модулю

Типы данных Какие из приведенных чисел являются константами целого типа? 1 2.1E3 4 0.7E-1 7 22.78 2 128 5 +0.9 8 -2100 3 -350 6 +71 9 1E5 2 3 6 8

Типы данных Какие из приведенных чисел являются вещественными константами в экспоненциальной форме? 1 11 4 -0,5E-2 7 2.7E05 2 1.3 5 1050 8 -1.38 3 -1.2E5 6 37.75 9 +3.21E-03 3 7 9

Идентификаторы Какие из приведенных выражений могут служить именами переменных? 1 5B 4 SIN 7 1AB 2 E6 5 G 8 +LN 3 Л1 6 10 9 L5 2 5 9

Стандартные функции Pascal Имя и параметры Действие Abs(x) модуль |x| Sqr(x) квадрат x 2 Sqrt(x) квадратный корень из Sin(x) синус Sin x Cos(x) косинус Cos x Ln(x) натуральный логарифм Ln(x) Exp(x) (где e =2.718281...) Arctan(x) арктангенс arctg x Power(x,y) x в степени y x y Int(x) целая часть х Frac(x) дробную часть х Random случайное число в диапазоне

х у

Ln x


Домашнее задание

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

2. Вычислить периметр прямоугольного треугольника по его катетам




Условный оператор ( полная форма )

полная форма ветвления

условие

Действие1

Действие2

вывод


then begin { что делать, если условие верно } end else begin { что делать, если условие неверно } end ; Особенности: перед else НЕ ставится точка с запятой begin и end перед else НЕ ставится точка с запятой если в блоке один оператор, можно убрать слова begin и end" width="640"

Условный оператор (полная форма)

if условие then begin

{ }

else begin

{ что делать, если условие неверно }

Особенности:

  • перед else НЕ ставится точка с запятой если в блоке один оператор, можно убрать слова begin и end
  • перед else НЕ ставится точка с запятой
  • если в блоке один оператор, можно убрать слова begin и end

Условный оператор (не полная форма )

неполная форма ветвления

условие

Действие

вывод


then begin { что делать, если условие верно } end ; Особенности: если в блоке один оператор, можно убрать слова begin и end если в блоке один оператор, можно убрать слова begin и end" width="640"

Условный оператор (неполная форма)

if условие then begin

{ что делать, если условие верно }

Особенности:

  • если в блоке один оператор, можно убрать слова begin и end
  • если в блоке один оператор, можно убрать слова begin и end


Домашнее задание

  • Составьте программу, которая уменьшает первое число в пять раз, если оно больше второго.

2. Запишите программу, в которой значение переменной с вычисляется по формуле: a+b , если а нечетное и a*b , если а четное .



b then c:= a + b else c:= b – a;" width="640"

Домашнее задание

1. Написать программу решения задачи:

а). Известно значение х. Вычислить у, если

б). Даны координаты точки. Выяснить лежит ли эта точка в 3 координатной четверти?

2. Определите значение переменной c после выполнения следующего фрагмента программы:

a:= 6 ;

b:= 15 ;

a:= b – a*2;

if a b then

c:= a + b

else c:= b – a;




Цикл – это многократное выполнение одинаковой последовательности действий.

  • цикл с известным числом шагов (цикл с параметром ) цикл с неизвестным числом шагов (цикл с условием )
  • цикл с известным числом шагов (цикл с параметром )
  • цикл с неизвестным числом шагов (цикл с условием )



:= начальное значение to конечное значение do begin { тело цикла } end; Уменьшение переменной на 1 (шаг -1) : for переменная:= начальное значение downto конечное значение do begin { тело цикла } end;" width="640"

Увеличение переменной на 1 (шаг 1):

for переменная := начальное значение to

конечное значение do begin

{ тело цикла }

Уменьшение переменной на 1 (шаг -1) :

for переменная := начальное значение downto

конечное значение do begin

{ тело цикла }


Особенности:

  • integer ) to ) или -1 ( downto ) begin и end можно не писать: to ) не выполняется ни разу (
  • переменная цикла может быть только целой ( integer )
  • шаг изменения переменной цикла всегда равен 1 ( to ) или -1 ( downto )
  • если в теле цикла только один оператор, слова begin и end можно не писать:
  • если конечное значение меньше начального, цикл ( to ) не выполняется ни разу ( проверка условия в начале цикла, цикл с предусловием)

for i:= 1 to 8 do

writeln( " Привет " );


  • в теле цикла не разрешается изменять переменную цикла
  • при изменении начального и конечного значения внутри цикла количество шагов не изменится:

for i:= 1 to n do begin

writeln( " Привет " );

n:= n + 1;

нет зацикливания




do begin { тело цикла } end; Особенности: можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать: можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать: while (a d o begin { тело цикла } end; while a d o a:= a + 1;" width="640"

while условие do begin

{ тело цикла }

Особенности:

  • можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать:
  • можно использовать сложные условия:
  • если в теле цикла только один оператор, слова begin и end можно не писать:

while (a d o begin

{ тело цикла }

while a d o

a:= a + 1;


b d o a:= a – b; a:= 4; b:= 6; while a d o d:= a + b;" width="640"
  • условие пересчитывается каждый раз при входе в цикл
  • если условие на входе в цикл ложно, цикл не выполняется ни разу
  • если условие никогда не станет ложным, программа зацикливается

a:= 4; b:= 6;

while a b d o

a:= a – b;

a:= 4; b:= 6;

while a d o

d:= a + b;




until условие " width="640"

Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.

тело цикла

until условие


ЗАДАЧА

Найти сумму квадратов всех натуральных чисел от 1 до 100. Решим эту задачу с использованием всех трех видов циклов.


"Пока" .

Program qq;

var a, s: integer;

s:=s+a*a;

writeln(s);


100 ; writeln(s); end." width="640"

"До"

Program qq;

var a, s: integer;

s:=s+a*a;

until a 100 ;

writeln(s);


"С параметром"

Program qq;

var a, s: integer;

for a:=1 to 100 do

s:=s+a*a;

writeln (s);


Задача.

Вывести на экран квадраты и кубы целых чисел от 1 до 8.

Особенность:

одинаковые действия выполняются 8 раз.


блок «цикл»

i 1 := i * i;

i 2 := i 1 * i;

тело цикла

i, i 1 , i 2


Программа

program qq;

var i, i1, i2: integer;

for i:=1 to 8 do begin

i1:= i*i;

i2:= i1*i;

writeln(i, i1, i2);

начальное значение

переменная

конечное значение


Цикл с уменьшением переменной

Задача. Вывести на экран квадраты и кубы целых чисел от 8 до 1 (в обратном порядке).

Особенность: переменная цикла должна уменьшаться.

Решение:

for i:=8 1 do begin

i1:= i*i;

i2:= i1*i;

writeln(i, i1, i2);

down to




Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом.

Особенности:

  • все элементы имеют один тип весь массив имеет одно имя
  • все элементы имеют один тип
  • весь массив имеет одно имя
  • все элементы расположены в памяти рядом

Примеры:

  • список учеников в классе квартиры в доме школы в городе
  • список учеников в классе
  • квартиры в доме
  • школы в городе
  • данные о температуре воздуха за год

НОМЕР элемента массива

(ИНДЕКС )

массив

ЗНАЧЕНИЕ элемента массива

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ элемента массива: 10


Объявление массивов

Зачем объявлять?

  • определить имя массива определить тип массива определить число элементов выделить место в памяти
  • определить имя массива
  • определить тип массива
  • определить число элементов
  • выделить место в памяти

Массив целых чисел:

Размер через константу:

элементов

конечный индекс

начальный индекс

var A : array[ 1 .. 5 ] of integer ;

var A: array of integer ;

const N=5;


Что неправильно?

var a: array of integer;

A := 4.5;

var a: array ["z".."a"] of integer;

A["B"] := 15;

["a".."z"]

var a: array of integer;

A := "X";


Объявление:

Ввод с клавиатуры:

Поэлементные операции:

Вывод на экран:

const N = 5;

var a: array of integer;

i: integer;

a =

a =

a =

a =

a =

for i:=1 to N do begin

write("a[", i, "]=");

read (a[i]);

Почему write ?

for i:=1 to N do a[i]:=a[i]*2;

writeln(" Массив A:");

for i:=1 to N do write(a[i]:4);

Массив A:

1 0 24 68 112 26


Задача:

1. Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива.

Пример:

Введите пять чисел:

4 15 3 10 14

среднее арифметическое 9.200

РЕШЕНИЕ:


Program qq;

var N: array of integer;

for i:=1 to 5 do begin

write ("N[",i,"]");

for i:=1 to 5 do begin

write(" среднее", k:6:2);

Cлайд 1

ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ Богданов Владимир Бесплатные презентации http://prezentacija.biz/

Cлайд 3

Язык Паскаль был создан Никлаусом Виртом в 1968-1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания - построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные. Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы - язык Модула-2.

Cлайд 4

UCSD Pascal Основная статья: UCSD Pascal В 1978 году в Калифорнийском университете в Сан-Диего была разработана система UCSD p-System, включавшая порт компилятора Вирта с языка Паскаль в переносимый p-код, редактор исходных кодов, файловую систему и прочее, а также реализовывавшая значительное число расширений языка Паскаль, такие как модули, строки символов переменной длины, директивы трансляции, обработка ошибок ввода-вывода, обращение к файлам по именам и другое. Впоследствии основные реализации языка Паскаль основывались на этом диалекте.

Cлайд 5

Object Pascal] Основная статья: Object Pascal В 1986 году фирма Apple разработала объктное расширение языка Паскаль, получив в результате Object Pascal. Он был разработан группой Ларри Теслера, который консультировался с Никлаусом Виртом.

Cлайд 6

В 1983 году появилась первая версия интегрированной средыразработки Turbo Pascal фирмы Borland, основывавшаяся на одноимённой реализации Паскаля. В 1989 году объектное расширение языка было добавлено в Turbo Pascal версии 5.5. Последняя версия (7.0) была переименована в Borland Pascal. Объектные средства были позаимствованы из Object Pascal от Apple, языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны. Почти в то же самое время, что и Borland, Microsoft выпустил свою версю объектно-ориентированного языка Паскаль.и] Эта версия Паскаля не получила широкого распространения. Дальнейшее развитие реализации Паскаля от Borland породило вариант Object Pascal от Borland, впоследствии, в ходе развития среды программирования Delphi, получившийодноимённое название.

Cлайд 7

Важным шагом в развитии языка является появление свободных реализаций языка Паскаль l и GNU Pascl которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими). Начиная с Delphi 2003, создана реализация языка для платформы Net, хотя разработчики продолжают использовать Delphi более ранних версий. О коммерческих разработках на Free Pascal, GNU Pascal и TMT Pascal на данный момент известно мало. Кроме того, в Южном федеральном университетеразработан PascalABC.NET- язык программирования Паскаль, включающий большинство возможностей языка Delphi, а также ряд собственных расширений. Он основан на платформе Microsoft.NT и содержит практически все современные языковые средства: классы, перегрузку операций, интерфейсы,обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения.

Cлайд 8

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

Cлайд 9

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы сдинамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

Cлайд 10

Однако многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. К 1980-м годам Паскаль стал основой для многочисленных учебных программ, в отдельных случаях на его основе были созданы специализированные обучающие языки программирования, так, в начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники Андрей Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».

Cлайд 11

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка. Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

Cлайд 12

После начала использования Паскаля в 1970 году и появления реализаций, расходящихся не только в дополнениях, но и в синтаксисе, был поднят вопрос о стандартизации языка. Стандарт языка был разработан Никлаусом Виртом в 1974 году совместно с Кетлин Йенсен (Kathleen Jensen). В дальнейшем, были приняты международный стандарт от ISO и американский от ANSI. На данный момент, выделяют три принципиально разных стандарта: Unextended Pascal (исходный), Extended Pascal (расширенный), Object-Oriented Extensions to Pascal (объектно-ориентированное расширение Паскаля).

Cлайд 13

Cлайд 14

Синтаксис и языковые конструкции Паскаль, в его первоначальном виде, представляет собою чисто процедурный язы и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д. Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций, которые отсутствуют в изначальном Алголе-60, такие как определение типов, записи, указатели, перечисленя, и множества. Эти конструкции были частично унаследованы или инспирированы от языков Симула-67, Алгол-64, созданного Никлаусом Виртом AlgolW (англ.)русск. и предложены Хоаром. В современных диалектах (Free Pascal) доступны такие операции, как перегрузка операторов и функций.

Cлайд 15

program p; begin end. Программа не выполняет никаких действий и содержит пустой блок операторов. Пример программы, выводящей строку «Hello, world!»:

Cлайд 16

begin writeln("Hello, World!"); { оператор вывода строки } end.

Cлайд 17

Cлайд 18

Cлайд 19

Cлайд 20

В Pascal над целыми типами (byte, shortint, word, integer, longint и их диапазоны) допустимы побитовые операции. Логические операции над битами: Над битами двух целых операндов можно выполнять ранее рассмотренные логические операции: not, and, or, xor. Отличие между побитовыми и логическими операциями состоит в том, что побитовые (поразрядные) операции выполняются над отдельными битами операндов, а не над их значением в десятичном (обычно) представлении. Выделяется понятие порядковых типов данных (ordinal), к ним относятся целые типы (знаковые и беззнаковые), логический (boolean), символьный (char), перечислимые типы и типы-диапазоны. Порядковые типы задаются целым числом (кодом), которое можно получить с помощью функции ord. Все операции, выполняемые над порядковыми типами, выполняются с их кодами.

Cлайд 21

Cлайд 22

Для порядковых типов определены операции inc, dec, succ, pred, ord, операции сравнения (= >

Cлайд 23

Cлайд 24

Cлайд 25

В Паскале Йенсен и Вирта строки представлялись как упакованные массивы символов; следовательно, они имели фиксированную длину и обычно дополнялись до этой длины пробелами. В современном Паскале для работы со строками используется встроенный тип string, поддерживающий операции конкатенации (+) и сравнения (> =

Cлайд 26

Тип string [n] или просто string в диалектах языка 1970-1990-х годов определялся в виде массива символов array of char (n по умолчанию принимало значение 80 в UCSD Pascal и 255 в Turbo/Borland Pascal), код нулевого символа при таком представлении служит для задания длины строки, соответственно строка могла иметь максимальный размер 255 символов. По умолчанию в Delphi и FreePascal в качестве String используется тип AnsiString, память под который выделяется и освобождается компилятором динамически, а максимальный размер строки в текущих реализациях составляет 2 гигабайта. Кроме того, в Delphi и Free Pascal в качестве string может использоваться тип WideString, где применяется 16-битное представление символов в кодировке UCS-2, при этом средства преобразования из однобайтовых строк в многобайтовые и обратно в стандартной библиотеке языка отсутствуют.

Cлайд 27

Новые типы могут быть определены из существующих: type { секция объявления типов } x = Integer; y = x;

Cлайд 28

Более того, из примитивных типов могут быть сконструированы составные: type { секция объявления типов } a = Array of Integer; { определение массива } b = record { определение записи } x: Integer; y: Char; end; c = File of a; { определение файла }

Cлайд 29

Файловые типы в Паскале делятся на типизированные, текстовые и файлы без типов. Как показано в вышеприведённом примере, типизированные файлы в Паскале - это последовательности однотипных элементов. Для каждого файла существует переменная-указатель на буфер, которая обозначается f^. Процедуры get (для чтения) и put (для записи) перемещают указатель к следующему элементу. Чтение реализовано так, чтоread(f, x) представляет собою то же, что и get(f); x:=f^. Соответственно, запись реализована так, что write(f, x) представляет собою то же, что и f^ := x; put(f). Текстовые файлы text определены как расширение типа file of char и помимо стандартных операций над типизированными файлами (чтение, запись символа), позволяют осуществлять символьный ввод-вывод в файл всех типов данных аналогично консольному вводу-выводу.

Cлайд 30

Файлы без типов объявляются как переменные типа file. С ними можно проводить операции побайтового нетипизированного ввода-вывода по несколько блоков байт указанной длины через буфер, для этого служат специальные процедуры blockread и blockwrite (расширение UCSD).

Cлайд 31

Cлайд 32

Cлайд 33

Cлайд 34

Cлайд 35

Указатели Паскаль поддерживает использование указателей (типизированные ^тип и нетипизированные pointer): type a = ^b; b = record x: Integer; y: Char; z: a; end; var pointer_to_b:a;

Cлайд 36

Здесь переменная pointer_to_b - указатель на тип данных b, являющийся записью. Тип типизированного указателя может быть задан перед объявлением типа, на который он ссылается. Это исключение к правилу, которое гласит, что любая вещь должна быть объявлена перед тем, как используется. Введение этого исключения позволило организовывать рекуррентные определения структур данных, в том числе такие, как линейные списки, стеки и очереди, включая указатель на запись в описании этой записи (см. также: нулевой указатель - nil). Для типизированного указателя определена операция разыменования (её синтаксис: указатель^). Чтобы создать новую запись и присвоить значение 10 и символ A полям x и y в ней, необходимы следующие операторы:

Cлайд 37

new(pointer_to_b); { выделение памяти указателю } pointer_to_b^.x:= 10; { разыменовывание указателя и обращение к полю записи } pointer_to_b^.y:= "A"; pointer_to_b^.z:= nil; ... dispose(pointer_to_b); { освобождение памяти из-под указателя }

Cлайд 38

Для целей обращения к полям записей и объектов можно также использовать оператор with, как показано в примере: new(pointer_to_b); with pointer_to_b^ do begin x:= 10; y:= "A"; z:= nil end; ... dispose(pointer_to_b);

Cлайд 39

Процедурный тип В оригинальном языке Паскаль Йенсен и Вирта процедурный тип использовался только при описании формального параметра. Уже в TP существовал полноправный процедурный тип. В объявлении типа ставится заголовок процедуры либо функции (без имени), обобщённо описывающий интерфейс подпрограммы. Значение этого типа содержит указатель на подпрограмму с заголовком, соответствующую описанному в объявлении типа. С помощью идентификатора переменной может происходить вызов соответствующей процедуры или функции.

Cлайд 40

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

Cлайд 41

В операторах while, for, if, case в качестве выполняемого оператора может использоваться блок. Такая конструкция, представляющая собой обычный оператор или блок, называется сложным оператором. В Turbo Pascal для управления процессом компиляции существуют директивы, которые помещаются в комментарии и позволяют переключать режимы работы компилятора - например, включать и отключать проверку операций ввода-вывода, переполнения:

Cлайд 42

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

Cлайд 43

Тело процедуры, как и программы, в свою очередь может содержать описания процедур и функций. Таким образом, процедуры и функции могут быть вложены друг в друга как угодно глубоко, при этом тело программы - самое верхнее в цепочке. Причём содержимое секций описания переменных, типов, констант, внешнего тела (процедуры, функции, программы), расположенных перед описанием процедуры/функции, доступны внутри неё. Также, в большинстве диалектов из процедуры можно обращаться к параметрам внешней процедуры. Вслед за заголовком процедур/функций вместо тела может помещаться ключевое слово forward, это делается в том случае, если описание процедуры/функции располагается в программе после её вызова, и связано с поддерживаемой в Паскале возможностью компиляции программы за один проход. Процедуры отличаются от функций тем, что функции возвращают какое-либо значение, а процедуры - нет.

Cлайд 44

До появления связных модулей в их современном виде некоторые реализации Паскаля поддерживали модульность за счёт механизма включения заголовочных файлов, похожего на механизм #include в языке Си: с помощью специальной директивы, оформляемой в виде псевдокомментария, например, {$INCLUDE "файл"}, содержимое указанного файла прямо включалось в текст программы в исходном, текстовом виде. Таким образом можно было разделить программный код на множество фрагментов, для удобства редактирования, но перед компиляцией они автоматически объединялись в один файл программы, который в итоге и обрабатывался компилятором. Такая реализация модульности примитивна и имеет множество очевидных недостатков, поэтому она была быстро заменена. Современные реализации языка Паскаль (начиная с UCSD Pascal) поддерживают модули. Программные модули могут быть двух видов: модуль главной программы, который, как обычно, начинается с ключевого слова program и тело которого содержит код, запускаемый после загрузки программы в память, и вспомогательных модулей, содержащих типы, константы, переменные, процедуры и функции, предназначенные для использования в других модулях, в том числе в главном модуле.

Cлайд 45

Общая структура подключаемого модуля на Паскале выглядит следующим образом: unit UnitName1; interface ... implementation ... begin {может отсутствовать - используется, если необходимо поместить операторы инициализации} ... end.

Cлайд 46

Возможен также ещё один вариант: unit UnitName2; interface ... implementation ... initialization ... finalization .... end.

Cлайд 47

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

Cлайд 48

Интерфейсная секция идёт первой, начинается с ключевого слова INTERFACE и заканчивается в том месте модуля, где начинается секция реализации или тело. В интерфейсной секции объявляются те объекты (типы, константы, переменные, процедуры и функции - для них помещаются заголовки), которые должны быть доступны извне модуля. При этом допускается частичное объявление типов: они могут объявляться без указания структуры, одним только именем. При использовании такого типа во внешней программе допускается объявление переменных и параметров этого типа, присваивание значений, но невозможно получить доступ к деталям его реализации. Процедуры и функции в интерфейсной секции объявляются в виде форвардов - заголовков с параметрами, но без тела. Состав интерфейсной секции модуля таков, что его достаточно для генерации кода, использующего данный модуль. Переменные, объявленные в интерфейсной секции, являются глобальными, то есть существуют в единственном экземпляре и доступны во всех частях программы, использующих данный модуль.

Cлайд 49

Секция реализации следует за интерфейсной и начинается с ключевого слова IMPLEMENTATION. В нём располагаются описания процедур и функций, объявленных в интерфейсной секции, а также описания типов, констант, переменных, процедур и функций, которые необходимы для реализации интерфейсных процедур и функций. Описание процедуры или функции, объявленной в интерфейсной секции, должно иметь в точности такой же заголовок, как в объявлении. В теле могут использоваться другие процедуры и функции данного модуля, объявленные как в интерфейсной части, так и в секции реализации. Переменные, объявленные в секции реализации, являются, по сути, глобальными (то есть существует только один экземпляр каждой такой переменной на всю программу), но доступны они только из процедур и функций, описанных в секции реализации данного модуля, а также из его тела. Если в интерфейсной секции есть сокращённые объявления типов, то эти типы должны быть полностью описаны в секции реализации.

Cлайд 50

Тело модуля начинается находящимся на верхнем уровне вложенности ключевым словом BEGIN. Тело содержит программный код, который выполняется один раз при загрузке модуля. Тело может применяться для инициализации, присваивания начальных значений переменным модуля, выделения ресурсов для его работы и так далее. Тело модуля может отсутствовать. В ряде реализаций Паскаля, например, в Delphi, вместо тела модуля могут применяться две секции (также необязательные) - INITIALIZATION иFINALIZATION. Они располагаются в конце модуля, после соответствующего ключевого слова. Первая - секция инициализации, - содержит код, который должен быть выполнен при загрузке модуля, вторая - секция финализации, - код, который будет выполнен при выгрузке модуля. Секция финализации может выполнять действия, обратные инициализации - удалять объекты из памяти, закрывать файлы, освобождать выделенные ресурсы. Модуль заканчивается ключевым словом END с точкой.

Cлайд 51

Чтобы использовать модуль, главная программа или другой модуль должны импортировать данный модуль, то есть содержать объявление о его использовании. Это объявление делается с помощью инструкции подключения модулей, представляющей собой ключевое слово USES, за которым через запятую следуют имена модулей, которые требуется подключить. Инструкция подключения должна следовать непосредственно за заголовком программы, либо после ключевого слова INTERFACE, если подключение производится в модуле.

Cлайд 52

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

Cлайд 53

Любые объявленные в интерфейсных секциях модулей объекты можно использовать в программе там, где эти модули подключены. Имена импортированных из подключённых модулей объектов остаются теми же самыми, и их можно использовать непосредственно. Если два или более подключённых модуля имеют объекты, называемые одинаково, и компилятор не может их различить, то при попытке использования такого объекта будет выдана ошибка компиляции - неоднозначное задание имени. В этом случае программист должен применять квалификацию имени - указать имя в формате «.».

Cлайд 54

Проблемы могут возникнуть, если появляется необходимость использования в программе двух разных одноимённых модулей. Если модули доступны только в откомпилированном виде (то есть поменять их имена невозможно), оказывается невозможным их одновременный импорт. Стандартного решения такой коллизии на уровне языка не существует, но конкретные компиляторы могут предлагать те или иные способы её обхода, в частности, средства назначения псевдонимов импортируемым модулям и прямого указания, какой модуль из какого файла брать.

Cлайд 55

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

Cлайд 56

Загрузка и выгрузка модулей Для нормальной работы модуля может потребоваться выполнить некоторые действия до начала его использования: инициализировать переменные, открыть нужные файлы, выделить память или другие ресурсы. Всё это может быть сделано в теле модуля, либо в секции инициализации. Действия, обратные инициализации, делаются в секции финализации.

Cлайд 57

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

Cлайд 58

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

Cлайд 59

Объектно-ориентированное программирование (ООП) - это технология создания сложного программного обеспечения, которое основано на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию с наследованием свойств.

Cлайд 60

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

Cлайд 61

Основные недостатки в ООП - это некоторое снижение быстродействия из-за более сложной организации программной системы, а также, как правило, заметное увеличение объёма бинарного кода (особенно при использовании стандартных библиотек классов в небольших программах) из-за того, что большинство современных компиляторов и компоновщиков не способны выявить и удалить весь код, приходящийся на неиспользуемые классы, виртуальные методы и другие элементы ООП.

Cлайд 62

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

Cлайд 63

Конструктор и деструктор задаются как обычные процедуры, но вместо идентификатора procedure задаются ключевые слова constructor и destructor. Соответственно, в отличие от С++-подобных языков они имеют имя, отличное от имени класса, деструкторов может быть несколько и они могут иметь параметры (на практике эта возможность используется редко, обычно класс имеет единственный деструктор Destroy, переопределяющий виртуальный деструктор класса-родителя).

Cлайд 64

Поддерживаются единичное наследование, полиморфизм классов, механизм виртуальных методов (слово virtual после заголовка метода класса). Существуют и динамические методы (в TP описываются путём добавления целого числа после слова virtual и используются преимущественно для обработки сообщений; в Delphi и FreePascal для этих целей используется слово message, а для создания обычных динамических методов - слово dynamic), отличающиеся меньшим использованием памяти и меньшей скоростью вызова за счёт отсутствия дублирования динамических методов предков в VMT потомка (однако FreePascal не делает различий между виртуальными и динамическими методами). В Delphi, FPC реализована перегрузка операций, абстрактные методы, директивы private, protected, public, published (по умолчанию члены класса являются public):

Cлайд 65

В диалекте Delphi классы могут также конструироваться с помощью слова class (причём взаимное наследование с object-классами не допускается) и введены интерфейсы(interface) - все методы абстрактные и не могут содержать полей данных. Все классы (созданные с помощью class) являются наследниками TObject, все интерфейсы происходят от IUnknown. Классы, созданные с помощью class, могут реализовывать несколько интерфейсов.

Cлайд 66

В Delphi интерфейсы были введены для поддержки технологии COM фирмы Microsoft. Классы (Class) в отличие от обычных классов (Object) не нуждаются в явном выделении/освобождении памяти, память под них динамически выделяется конструктором с именем Create, вызываемым с именем класса, и освобождается при вызове деструктора с именем Destroy (могут иметь другие имена). Переменная такого класса в отличие от класса object хранит адрес экземпляра класса в памяти, значение nil используется для указания пустой ссылки, поэтому для освобождения объекта в TObject определен специальный метод free, проверяющий ссылку на nil и вызывающий виртуальный деструктор Destroy. Код с использованием таких классов будет выглядеть следующим образом:

Cлайд 67

  1. 1. Pascal
  2. 2. Pascal Паскаль был разработан швейцарским ученым Никлаусом Виртом. Паскаль считается важнейшим инструментом для обучения методам структурного программирования и с 1983 г. введен в учебные курсы в школах для учащихся, которые специализируются в области информатики. В дальнейшем язык Паскаль совершенствовался и приобрел новые свойства, отличные от авторского варианта.
  3. 3. Язык Паскаль относительно прост в изучении, довольно ясен и логичен и, будучи первым изучаемым языком программирования, приучает к хорошему стилю.
  4. 4. Как и естественные языки, каждый язык программирования имеет свой стиль и свои правила. Синтаксис языка программирования – это набор правил, которые определяют способы построения правильных программ из символов алфавита.
  5. 5. Алфавит языка Паскаль 26 латинских строчных и 26 латинских прописных букв: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z подчеркивание _ 10 цифр: 0 1 2 3 4 5 6 7 8 9 знаки операций: + - * / = <> < > <= >= := @ ограничители (разделители): . , " () (. .) { } (* *) .. : ; спецификаторы: ^ # $
  6. 6. Структура программы {1. заголовок программы} program Имя_Программы; {2. раздел указания используемых модулей} uses Список_Используемых_Модулей; {3. Раздел описаний} label Описания_меток; const Описания_Констант; type Описания_Типов; var Описания_Переменных; procedure Описания_Процедур_и_функций; function exports Описания_Экспортируемых_Имен; {4. Раздел операторов} begin Операторы end.
  7. 7. Упрощенная структура программы {1. заголовок программы} program Имя_Программы; {2. раздел указания используемых модулей} uses Список_Используемых_Модулей; {3. Раздел описаний} const Описания_Констант; var Описания_Переменных; {4. Раздел операторов} begin Операторы программы end.
  8. 8. Команды языка программирования называются операторами Разделителем операторов в Паскале является; (точка с запятой)
  9. 9. Комментарий представляет собой фрагмент текста программы, ограниченный символами { }. Комменнтарии в программе выполняют информационную функцию. {Моя первая программа } program first; begin writeln(‘Hello, World!’) end.
  10. 10. Пример: периметр прямоугольника program perimetr; {заголовок программы} uses crt; {crt – необходим для очистки экрана} var a,b:integer; {объявление переменных} P:integer; Begin {начало программы} clrscr; {очистка экрана} a:=12; {присваиваем переменной а значение 12} b:=7; {присваиваем переменной b значение 7} P:=2*(a+b); {значение выражения присваиваем P} write("P = ",P); {выводим на экран значение P} end. {конец программы}
  11. 11. Программа в своей работе имеет дело с данными. Некоторые данные устанавливаются еще до того, как программа начнет выполняться, а после ее запуска сохраняют свои значения неизменными на всем протяжении работы программы. Это константы. Другие данные могут изменяться во время выполнения программы. Они называются переменными.
  12. 12. Различие между переменной и константой довольно очевидно: во время выполнения программы значение переменной может быть изменено, а значение константы нет. переменныепеременные константыконстанты данныеданные
  13. 13. Под переменной мы будем понимать ячейку («коробку»), куда компьютер может записывать («складывать») данные. Под ячейкой мы в действительности подразумеваем «кусочек памяти» в котором хранится информация. Чтобы воспользоваться информацией, хранящейся в ячейке, нужно, чтобы каждая ячейка имела свое имя или, как часто говорят, - идентификатор. a b sum 5 3 8
  14. 14. Идентификаторы. Именами (идентификаторами) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. Идентификатором является последовательность букв, цифр и знаков подчеркивания, которая начинается с буквы или символа подчеркивания и не содержит пробелов.
  15. 15. Имя может содержать произвольное количество символов, но значащими являются 63 символа. Не разрешается в языке ПАСКАЛЬ использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы. Примеры имен языка ПАСКАЛЬ: A b12 r1m SIGMA gamma I80_86
  16. 16. В Паскале разница между строчными и прописными буквами игнорируется, поэтому имена NaMe и name одинаковы.
  17. 17. Служебное слово – это слово, которое в языке ПАСКАЛЬ имеет определенное смысловое значение, которое не может быть изменено. Иногда его называют ключевым словом.
  18. 18. Служебные (зарезервированные) слова: ABSOLUTE EXPORTS LIBRARY SET ASSEMBLER EXTERNAL MOD SHL AND FAR NAME SHR ARRAY FILE NIL STRING ASM FOR NEAR THEN ASSEMBLER FORWARD NOT TO BEGIN FUNCTION OBJECT TYPE CASE GOTO OF UNIT CONST IF OR UNTIL CONSTRUCTOR IMPLEMENTATION PACKED USES DESTRUCTOR IN PRIVATE VAR DIV INDEX PROCEDURE VIRTUAL DO INHERITED PROGRAM WHILE DOWNTO INLINE PUBLIC WITH ELSE INTERFACE RECORD XOR END INTERRUPT REPEAT EXPORT LABEL RESIDENT
  19. 19. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов. Существуют имена которые называются стандартными. sin cos real true В отличие от служебных слов смысл стандартных имен может быть переопределен программистом.
  20. 20. Это указание компилятору, сколько памяти необходимо зарезервировать для переменных нашей программы. В откомпилированной программе для всех переменных отведено место в памяти, и всем переменным присвоены нулевые значения. Все переменные, используемые в программе необходимо объявить в разделе описания переменных после зарезервированного слова var. Объявление переменных
  21. 21. Данные бывают различных типов...
  22. 22. Типы данных Имена стандартных типов являются предопределенными идентификаторами и действуют в любой точке программы. Они описаны в стандартном модуле System, который по умолчанию подключается в список используемых модулей. Пользовательские типы – это дополнительные типы (простые и структурированные) описанные пользователем.
  23. 23. Стандартные типы данных 1. группа целых типов (Shortint, Integer, Longint, Byte, Word); 2. группа действительных типов(Single, Real, Double, Extended, Comp); 3. логические (булевские типы)(Boolean, ByteBool, WordBool, LongBool); 4. символьный(Char); 5. строковый (String); 6. указательный (Pointer); 7. текстовый тип (Text).
  24. 24. Группа целых типов Название типа Тип диапазон значений требуемая память Короткое целое со знаком Shortint -128 .. 127 1 байт Целое со знаком Integer -32768 .. 32767 2 байта Длинное целое со знаком Longint -2147483648 .. 2147483647 4 байта Короткое целое без знака Byte 0 .. 255 1 байт Целое без знака Word 0 .. 65535 2 байта
  25. 25. Var b: byte; summa, count: integer; Объявление переменных целого типа summa:= -365; Испозование
  26. 26. Числа в языке ПАСКАЛЬ обычно записываются в десятичной системе счисления. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки, например: 217 -45 8954 +483
  27. 27. Группа вещественных типов определяет те данные, которые реализуются подмножеством действительных чисел. Var A: real; begin ... A:=0.65; … End.
  28. 28. Название типа Тип Диапазон значений Количество цифр мантиссы Размер (байт) Вещественное число одинарной точности Real 2.9e-39 .. 1.7e+38 11 6 Вещественное число Single 1.5e-45 .. 3.4e+38 7 4 Вещественное число двойной точности Double 5.0e-324 .. 1.7e+308 15 8 Вещественное число повышенной точности Extended 3.4e-4932 .. 1.1e+4932 19 10 Целое число в формате вещественного Comp -9.2e+18 .. 9.2e+18 19 8
  29. 29. Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой Е: 28.6 0.65 -0.018 4.0 5Е12 -1.72Е9 73.1Е-16
  30. 30. Булевскому типу данных соответствует идентификатор Boolean. Переменные булевского типа имеют размер 1 байт и могут содержать значения TRUE или FALSE. Значению FALSE соответствует 0, любое число отличное от нуля считается TRUE. Var knopka, flag: boolean; Begin knopka:=true;
  31. 31. Символьному типу соответствует стандартный идентификатор Char. Переменные и константы символьного типа могут принимать значения из множества символов кода ASCII. Var simvol, bukva, z: char; Объявление символьных переменных
  32. 32. Строковому типу соответствует стандартный идентификатор String. Var S: String; {строка от 0 до 255 символов} S2: String; {стока из 5-ти символов}
  33. 33. Строка символов представляет собой последовательность символов из набора символов кода ASCII, заключенную в одиночные кавычки. Строки в языке ПАСКАЛЬ - это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа. Примеры строк: "СТРОКА" "STRING" "АД""ЮТАНТ"
  34. Символьный тип, а также целые и булевские типы относят к, так называемым, порядковым типам.  Множество допустимых значений любого порядкового типа представляет собой упорядоченную последовательность, каждый элемент которой имеет свой порядковый номер (начиная с 0).
  35. 35. Функция Ord возвращает порядковый номер этого значения в описании типа. Ord(2)=2, Ord(‘0’)=48 Writeln(ord(‘e’)); Writeln(ord(‘9’));
  36. 36. Таблица кодировки ASCII ASCII (American Standard Code for Information Interchange; произносится «а́ски») -компьютерная кодировка для представления латинского алфавита, арабских цифр, некоторых знаков пунктуации и управляющих символов. Ее ввел американский институт стандартизации ANSI.

Тема урока: «Циклы (повтор) в программах»

1)Повторить и закрепить знания составления линейных, разветвляющихся программ; 2)Научиться составлять программы, используя циклический оператор – FOR i:=1 TO n DO Begin операторы(тело цикла) end ; 3)Применять операторы в решении типовых задач. Цель урока:

Вставьте пропущенное: Program Sql; Var A,B,C,D, XI, Х2: ??? ; Begin Writeln ("Введите коэффициенты квадратного уравнения ’); Readln (???); D:=B*B-4*A*C; If D

Вопросы группе: 1)В чем отличие программ с ветвлением от линейных? 2)С помощью каких операторов осуществляется выбор в программах? 3) begin….end – Что это? Каковы правила использования в программе?

1)Операторы Ввода/вывода; 2)Операторы выбора; 3) а:=а+3 – что произойдет? 4)Перечислить типы данных; 5)Убрать лишнее AND,OR,END, NOT,IF ; 6) ; - что обозначает? 7) Как обозначается конец программы? 8) Перечислить арифметические операции. 9) Чему равно 120 mod 65 = ? 10) Операторы цикла.

Расставьте соответственно: 1. Read 2. End 3. Begin 4. Integer 5. ; 6. If .. Then 7. := 8. Ввод 9. Конец 10. Целые 11. Прис- воить 12. Следу-ющее действие 13.Начало 14.Если..то

Действительно ли результат а меньше 3 ? a:= 7 b:= - 10 a:=a*(- 7) b:=159 a:=b+a

Найдите 5 ошибок в программе: Program krug ; VAR Pi, r, S: real; Pi:=3.14, WRITELN(‘vvedite radiuc r=’), READ(r); S=Pi *r*r; WRITELN(‘Ploshad kruga S= ’, S) end

Program krug ; VAR Pi, r, S: real; begin Pi:=3.14 , WRITELN(‘vvedite radiuc r=’) , READ(r); S: =Pi *r*r; WRITELN(‘Ploshad kruga S= ’, S) end .

Задача №1 Дано целое N , определить является ли оно четным или нечетным. 2, 4, 6, …- четные, т.к. делятся без остатка на 2(N mod 2 =0) 1, 3, 7, … - нечетные, т.к. делятся на 2 с остатком 1(N mod 2 =1)

Алгоритм Алгоритм Chislo ; перем N: целые; начало Вывод(‘vvedite chislo’) ; Ввод (N) ; ЕСЛИ N mod 2 =0 Т O Вывод(N,‘- chetnoe‘); ЕСЛИ N mod 2 =1 Т O Вывод(N,‘- nechetnoe‘); конец.

Задача № 2 Дано целое двузначное число N (DE), где D – количество десятков, Е – единиц. Определить будет ли сумма цифр этого числа равна 10. Пример: у 28-ми сумма S =2+8=10 – будет, а у 27-ми S=2+7=9 не будет Будем считать десятки: D= N div 10 , а единицы: E= N mod 10

Алгоритм Алгоритм Chislo ; перем N,E,D,S: целые; начало Вывод(‘vvedite chislo’) ; Ввод (N) ; E:=N mod 10; D:=N div 10; S:=E+D; ЕСЛИ S = 10 Т O Вывод(‘summa= 10’) Иначе (‘summa10‘); конец.

Определение: Программы в которых многократно повторяются однотипные действия – циклические программы (с повтором).

Задача: Дано 100 натуральных чисел от 1 до 100 (1,2,3, … 99,100) Посчитать их сумму и вывести в переменную S.

Алгоритм сумма; Перем i,S: целые; Начало S:=0; Для i:=1 до 100 повторять Начало S:= S + i тело Конец; цикла Вывод (S) Конец.

Program summa; VAR i , S: integer; Begin S:=0; FOR i:=1 TO 100 DO begin S:=S+i тело end; цикла WRITE(S) end.

Program summa; VAR i , S: integer; Begin S:=0; FOR i:=1 TO 100 DO begin S:=S+i ; тело WRITE(‘S’, i, ’=‘, s) цикла end; end.

Тело цикла – те самые действия, которые нужно многократно повторять. Тело цикла заключаем в операторные скобки begin … .. end;

ALT + F9 - исправление ошибок CTRL + F9 – запуск программы ALT + F5 – просмотр результата

Задача: 1)Вывести столбец таблицы умножения любого целого числа N на числа от 1 до 10. Пример: N =5, то столбец будет такой- 1*5=5 2*5=10 3*5=15 i * N = P, где i изменяется от …… .. 1…10 10*5=50

Домашнее задание: прокомментировать программу для задачи «Про столбец таблицы умножения»

СПАСИБО ЗА ВНИМАНИЕ!