HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail


 
В этот день много лет назад...
26 ноября. В 1718 году (306 лет назад) - Петр I издает указ "О назначении рынков в Санкт-Петербурге, о наблюдении чистоты торгующими съестными припасами и о ношении ими белых мундиров". По этому указу запрещается торговля вдоль больших улиц, поскольку "проезд по большой дороге от тесноты за многолюдством весьма труден". На городских рынках всем торговцам в мясном и рыбном рядах надлежит под страхом крупного штрафа носить белые мундиры. Пусть немного на военный манер, но Петр I все же продемонстрировал свое желание решать вопросы гигиены в своем невском "парадизе".
 
 

Turbo Pascal Examples

Графика:
Построение графика функции
Прыгающий по экрану мячик.
Качание маятника.
Вложенные цветные круги.
Броуновское движение. Использование объектов.
Матрицы и массивы:
Сортировка элементов массива.
Удаление одинаковых элементов.
Простой пример на поворот матрицы.
Сортировка методом Шелла. +функции измерения временных интервалов.
Проверка выпуклости многоугольника.
Перемоножение матриц
Вычисление определителя матрицы. Рекурсия.
Нахождение обратной матрицы.
Задача об автостоянке.
Рекурсия. Подземелье сокровищ.
Численные методы:
Задачка на определение угла между стрелками часов.
Проверка на принадлежность точки многоугольнику.
Нахождение точки пересечения двух отрезков на плоскости.
Сортировка методом Шелла. +функции измерения временных интервалов.
Сортировка методом "пузырька". Пример на динамические структуры данных. Связанные списки.
Нахождение корня функции методом половинного деления.
Вычисление арккосинуса
Нахождение суммы цифр натурального числа.
Работа с фалами:
Рекурсивное сканирование директорий.
Работа со строками:
Работа со словами в предложении с разделителями.
Простейший синтаксический анализатор для распознавания и вычисления многчлена.
Синтаксический анализатор для распознавания и вычисления многчлена.
Работа со строками: смена кодировки, удаление тегов из HTML текста, обработка
Переименование файлов из кириллицы в латиницу.
Выдача контекстной подсказки.
Частотный словарь символов.
Подсчет повторяющихся символов в строке.
Ссылочные переменные:
Моделирование стека.
Пасьянс "Косынка".
Игры:
Пасьянс "Косынка".
Игра "Питон"
Игра "Анацефал". Пример использования объектов.
Игра "Минное поле"
Большие проекты:
Электронная картотека (без исходника)


 Пример восьмой. Нахождение корня функции.

Здесь описан метод половинного деления (дитохомии?). Суть проста. Есть функция f(x), есть интервал [a,b], есть условие, что на концах промежутка функция имеет разный знак: f(a)*f(b)<0. Требуется найти с заданной точностью eps корень этой функции. Поступаем так: выбираем середину отрезка [a,b]. Если в середине функция имеет тот же знак что и слева, то принимаем середину за новую левую границу, в противном случае - за правую. Повторяем до тех пор, пока отрезок не станет меньше eps. В данном примере в качестве функции берем синус, а отрезок - [3,4]. Таким образом мы должны найти число пи.

function f(x:real):real;
  begin
  f:=sin(x);
  end;
const MaxSteps=200;
var a0,b0,a,b,eps,fa,fb,t,ft:real;
    step,sa,sb:integer;
begin
writeln('Нахождение корней функции методом половинного деления:');
a0:=3; {writeln(' Input a0: ');readln(a0);}
b0:=4; {writeln(' Input b0: ');readln(b0);}
eps:=0.0000001; {writeln(' Input eps: ');readln(eps);}
fa:=f(a0); fb:=f(b0);
if (fa*fb>0) then
  begin
  writeln(' На заданном промежутке корней нет.');
  halt;
  end;
a:=a0; b:=b0;
step:=0; t:=a; ft:=fa;
while (abs(b-a)>eps) and (step<MaxSteps) do
  begin
  inc(step);
  t:=(a+b)/2;
  ft:=f(t);
  if (fa*ft>0) then
    begin
    fa:=ft;
    a:=t;
    end
  else
    b:=t;
  writeln('step:',step:4,' t=',t,' f(t)=',ft);
  end;
if (step>MaxSteps)
  then writeln('Отсутствие сходимости. Уточните промежуток.')
  else writeln('Найден корень с заданной точностью.');
end.



 Нахождение суммы цифр натурального числа.

var s,k,d:integer;
begin
k:=4367; { set your own number here, or read it }
s := 0;
write(' The sum of dights of ',k);
while k>0 do
  begin
  d:=k mod 10;
  s:=s+d;
  k:=k div 10;
  end;
writeln(' equals ',s);
end.

 

 

 

 

 

 

 


HOME