Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль лекции.doc
Скачиваний:
31
Добавлен:
20.05.2014
Размер:
270.85 Кб
Скачать

ВВЕДЕНИЕ В ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ

Этапы разработки алгоритмов. Программы. Языки проектирования алгоритмов.

Парадигмы - исходная концептуальная схема постановки задачи и ее решения. (Способы мышления и метод решения задач на ЭВМ).

Методы решения:

а) процедурное( фон-Неймановское) программирование.

б) не фон-Неймановское ( декларативное)( List, Refal )

  1. объединение программных данных, т.е. одновременное хранение данных и программ.

  2. Последовательность обработки ( последовательная обработка команд. Линейная модель памяти.)

Процедурное программирование

1) операционное ( едю мышления оператора и операнта)(Basic, Assembler)

  1. структурное (структуры данных и алгоритмов)(Pascal, C, C++)

Парадигмы:

  1. фон-Неймановские:

а) операц.

б) структ.

  1. фон-Неймановские:

а) декларативные

+ логические

+ функц.

б) параллельные.

Требования к программе:

  1. результативность ( завершение за конечное время)

  2. правильность

  3. надежность и живучесть (отсутствие ошибок и отказа работы даже с недопустимыми данными)

  4. простота использования:

а) не должна быть сложнее необходимого

б) общая организация программы и структура текста должны облегчать ее понимание

в) простота подготовки данных и ввода

г) простота анализа результата

д) простота понимания сообщения об ошибке

  1. эффективность ( экономит время и память)

  2. удобство модификации

  3. документированность (комментарии, инструкции пользователю)

Этапы обработки программы:

Задача

Постановка задачи

Метод решения

Внешняя спецификация

Алгоритм решения

Программа

Тесты

Отладка

Задачи:

а) конкретные

б) общие

  1. постановка задачи:

  1. Исх. Данные (дано: a, b, c- вещ.)

  2. Требуется ( х1, х2- вещ.)

  3. Связь (axi2+bxi+c=0;i=1,2;a<>0)

  1. Внешняя спецификация:

  1. аномалии(а<>0;b2-4ac>=0)

  2. рез-т на экране(минимальные инструкции пользователю; техн. Задания к разработке программы)

  1. алгоритм решения:

  1. ввод (х)

  2. действие()

  3. иывод(х1, х2)

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

Типы данных: целые, вещественные, логические.

Массив: объединение однотипных данных.

<прогр. пер-ная>:=<арифм.выражение>

Управляющие структуры алгоритмов. Структура алгоритма. Начальные сведения языка Pascal.

Действие1

1) Два действия наз.последовательными

если второе выполняется после

Действие2

первого, независимо от

результатов первого.

2) Альтернативная управляющая структурада усл нет

д1

д2

( выполнение зависит от неких условий)

если <условие> то <действие1> иначе

<действие2>

3) Повторяющееся действие (цикл)

а) неизв. Число повторений, но изв. условие =>

цикл с предусловием:

цикл пока <условие>

<телоцикла>

кцикла

б) цикл с постусловием:

цикл

<телоцикла>

до<условие>

кцикла

в) цикл по счетчику:

цикл для i:=<нач.знач.>

до <кон.знач>

<телоцикла>

кцикла

Структура алгоритма:

алгоритм<имя алгоритма>

переменные

входные

выходные

внутренние

начало

<действие>

конец

Основы языка Pascal

Всякий формальный язык определяется своим алфавитом.

Алфавит Pascal:

1)буквы латинскогоалфавита-26шт; 2)арабские цифры-10шт; 3) специальные знаки:

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

Наиболее часто употребляемым специальным символом является пробел (в значимых местах мы будем обозначать его в записях знаком "V"). Его использование связано с форматами основной структуры программы, разделов описаний, операторов. Не следует путать наличие пробела с отсутствием символа. . конец программы, разделение целой и дробной частей вещественного числа (десятичная точка), разделение полей в переменной типа Record; , разделение элементов списков; .. указание диапазона; : используется в составе оператора присваивания, а также для указания формата вывода в операторе Writeln; ; отделяет один раздел программы от другого, разделяет операторы; ' используется для ограничения строковых констант; - + * / ( ) арифметические знаки (используются по своему назначению); < > знаки отношений; = используется в составе оператора присваивания, в разделах описаний констант и типов, используется как знак отношения (равно); @ имя специального оператора определения адреса переменной, подпрограммы; ^ используется для именования динамических переменных; {} ограничение комментариев в программе; [ ] заключают в себе индексы элементов массивов; _ символ подчеркивания используется также как любая буква, например, в идентификаторах - вместо пробела; # обозначение символа по его коду; $ обозначение директивы компилятора, обозначение шестнадцатеричного числа.}

Лексема: минимальная значимая единица текста программы.

Категории лексем:

+ спецсимволы(:=;<=;>=…)

+зарезерв. ключевые слова (program…)

+идентификаторы

-стандартные

-“авторские”

+числа(16ричные):$A10 или1.13Е-2=1.13*10-2

+строки(посл-ти символов из расшифр. кода ASCII и записанные в ‘ ‘)

+комментарии({…})

Разделители в Pascal:пробел, tab, признак перевода на другую строку, etc.

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

Program <имя программы>zncomstvo;

Uses<раздел указания исп.модулей>Crt;

<раздел деклараций>

Const<секция объявления констант>т=10;

Type<секция объявления типов>;

Var<секция объявления переменных>k:integer;

<секция объявления процедур и функций>;

Begin

<операторы, описывающие алгоритм>;

End.

Типы данных:

К базовым типам относятся:

+ тип целых чисел - Integer

+тип "длинных" целых чисел - Longint

+тип действительных (вещественных) чисел (то есть - с дробной частью) – Real

+тип неотрицательных целых чисел от 0 до 255 - Byte

+тип неотрицательных целых чисел от 0 до 65535 - Word

+символьный тип – Char

+ строковый тип – String

+ логический тип – Boolean

Операции над различными типами данных:

1)Целые:+,-,*,div,mod;

2)Вещественные:+,-,*,/;

3)логические:and,or,not;

A

B

AandB

AorB

notA

xor

true

true

true

true

false

false

true

false

false

true

false

true

false

true

false

true

true

true

false

false

false

false

true

false

Основные операции:

  1. read, readln – опер.ввода(cписок ввода (только пер-ные))

  2. write, writeln – вывод(пер-ные,константы,целые выражения,…)

  3. := - оператор присвоения.

Read(x,y,z);

Readln(x,y,z);

C:=y

Write(‘…’);

Writeln(‘…’);{переход на новую строку}

Управляющие структуры. Кодирование в Pascal.

  1. последовательные действия:

осуществляются за счет того, что действия записываются одно под другим через ”;”

  1. Альтернативная управляющая структура:

If<условие> then<действие>;

If<условие> then< действие 1> else< действие2 > ;

3) Повторяющееся действие (цикл)

а) цикл с предусловием:

while< условие > do

begin

< телоцикла >

end;

б) цикл с постусловием:

repeat

<телоцикла>

until< условие выхода>

в) цикл по счетчику:

for i:=<нач.знач> to<кон.знач> do

begin< телоцикла >

end;{step=1}

или

for i:=<нач.знач> downto<кон.знач> do

begin< телоцикла >

end;{step=-1}

ЗАДАЧИ:

  1. Найти суммуn чисел:

Const

n=100;

var

x,i,s:integer;

BEGIN

s:=0;

for i:=1 to n do

begin

writeln(‘введите’,i,‘-ое число’);

readln(x);

s:=s+x;

end;

writeln(‘сумма=’,s);

END.

  1. Найти все совершенные числа , не превышающих n

Var

s,i,j,n:=integer;

BEGIN

writeln(‘введите n’);

readln(n);

for i:=2 to n do

begin

s:=0;

for j:=1 to (i-1) do

if (i mod j)=0 then

s:=s+j;

end;

if (s=i)=0 then

writeln(‘совершенное число’,i);

END.

  1. Определить, есть ли в тексте малые латинские буквы

Var

l:char;

flag:boolean;

BEGIN

flag:=false;

repeat

writeln(‘введите букву’);

readln(l);

if(‘a’<=l)and(l<=’z’) then

flag:=true;

until(flag) or (l=’/’);

if (flag)

then

writeln(‘есть’);

else

writeln(‘нет’);

END.

  1. Найти max эл-т посл-ти из 10 чисел.

Var

x,max,i:integer;

BEGIN

writeln(‘введите число’);

readln(x);

max:=x;

i:=1;

while (i<=10) do

begin

writeln(‘введите число’);

read(x);

if max<x then

max:=x;

inc(i);{i:=i+1}

end;{of while}

writeln(‘max=’,max);

END.