ВВЕДЕНИЕ В ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ
Этапы разработки алгоритмов. Программы. Языки проектирования алгоритмов.
Парадигмы - исходная концептуальная схема постановки задачи и ее решения. (Способы мышления и метод решения задач на ЭВМ).
Методы решения:
а) процедурное( фон-Неймановское) программирование.
б) не фон-Неймановское ( декларативное)( List, Refal )
объединение программных данных, т.е. одновременное хранение данных и программ.
Последовательность обработки ( последовательная обработка команд. Линейная модель памяти.)
Процедурное программирование
1) операционное ( едю мышления оператора и операнта)(Basic, Assembler)
структурное (структуры данных и алгоритмов)(Pascal, C, C++)
Парадигмы:
фон-Неймановские:
а) операц.
б) структ.
фон-Неймановские:
а) декларативные
+ логические
+ функц.
б) параллельные.
Требования к программе:
результативность ( завершение за конечное время)
правильность
надежность и живучесть (отсутствие ошибок и отказа работы даже с недопустимыми данными)
простота использования:
а) не должна быть сложнее необходимого
б) общая организация программы и структура текста должны облегчать ее понимание
в) простота подготовки данных и ввода
г) простота анализа результата
д) простота понимания сообщения об ошибке
эффективность ( экономит время и память)
удобство модификации
документированность (комментарии, инструкции пользователю)
Этапы обработки программы:
Задача
Постановка
задачи Метод
решения
Внешняя
спецификация Алгоритм
решения
Программа Тесты
Отладка
Задачи:
а) конкретные
б) общие
постановка задачи:
Исх. Данные (дано: a, b, c- вещ.)
Требуется ( х1, х2- вещ.)
Связь (axi2+bxi+c=0;i=1,2;a<>0)
Внешняя спецификация:
аномалии(а<>0;b2-4ac>=0)
рез-т на экране(минимальные инструкции пользователю; техн. Задания к разработке программы)
алгоритм решения:
ввод (х)
действие()
иывод(х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 |
Основные операции:
read, readln – опер.ввода(cписок ввода (только пер-ные))
write, writeln – вывод(пер-ные,константы,целые выражения,…)
:= - оператор присвоения.
Read(x,y,z);
Readln(x,y,z);
C:=y
Write(‘…’);
Writeln(‘…’);{переход на новую строку}
Управляющие структуры. Кодирование в Pascal.
последовательные действия:
осуществляются за счет того, что действия записываются одно под другим через ”;”
Альтернативная управляющая структура:
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}
ЗАДАЧИ:
Найти сумму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.
Найти все совершенные числа , не превышающих 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.
Определить, есть ли в тексте малые латинские буквы
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.
Найти 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.