Программирование на языке Pascal
Базисные понятия в программировании. Последовательные и максимально подробные разборы задач: анализ, составление алгоритма и детальное описание решения. Реверсная запись трехзначного числа и особенность подсчета количества единичных битов числа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | задача |
Язык | русский |
Дата добавления | 18.02.2015 |
Размер файла | 246,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
if a = 0 then b := 1;
Код:
1. program MonotonicSequence; 2. 3. var 4. a, b: word; 5. delta: integer; 6. 7. begin 8. read(a); 9. if a <> 0 then read(b) else b := 0; 10. delta := a - b; 11. while b <> 0 do begin 12. if delta * (a - b) <= 0 then break; 13. a := b; 14. read(b) 15. end; 16. if a = 0 then b := 1; 17. writeln(b = 0) 18. end. |
Стоит отметить, что на первом шаге в основном цикле значение a и b еще не изменено, и грубо говоря, delta в строке 12 умножается само на себя. Это нужно для того, чтобы обеспечить правильную обработку последовательности из двух одинаковых чисел, которая не является строго монотонной. Например, если на вход подается последовательность k k 0, k - некоторое натуральное число, то delta будет равно 0 (строка 10), и при входе в цикл будет осуществлен выход по break (строка 12), что повлечет вывод false, так как b отлично от 0.
Если бы мы в цикле сначала осуществили сдвиг последовательности и ввод третьего члена (то есть, переместили бы строки 13-14 на одну позицию вверх, а строку 12 поместили бы после них), то по выходе из цикла через break b уже было бы равно 0, что повлекло бы вывод true, а это неверно.
Задача № 46. Вывести на экран n-ное число Фибоначчи
Формулировка. Дано натуральное n (которое также может быть равно 0). Вывести на экран n-ное число Фибоначчи.
Примечание: последовательность чисел Фибоначчи задается следующей рекуррентной формулой:
То есть, нулевой член последовательности - это число 0, 1-й член - число 1, а любой другой член, начиная со 2-го, является суммой двух предыдущих. Например, F2 = F1 + F0 = 1 + 0 = 1, F3 = F2 + F1 = 1 + 1 = 2 и т. д.
Решение. Найдем несколько первых чисел Фибоначчи:
F2 = F1 + F0 = 1 + 0 = 1;
F3 = F2 + F1 = 1 + 1 = 2;
F4 = F3 + F2 = 2 + 1 = 3;
F5 = F4 + F3 = 3 + 2 = 5;
Легко заметить, что при их последовательном вычислении нам не нужно «расписывать» слагаемые по определению, и чтобы получить очередной член последовательности, достаточно на каждом шаге складывать два предыдущих полученных результата.
Так как нулевой и первый члены последовательности не вычисляются и даются как часть определения, будем полагать их заранее известными. Обозначим их идентификаторами fib0 и fib1. По примеру нахождения первых членов последовательности посчитаем количество операций, необходимое для вычисления каждого члена (считая, что предыдущие члены неизвестны). Легко увидеть, что для вычисления 2-го члена (при известном 1-ом и нулевом членах) необходима одна операция сложения, 3-го - две операции сложения и т. д. Видно, что по этим же правилам для вычисления n-ного члена необходимо выполнить (n - 1) операций.
Теперь можно начать писать программу. Сначала нам необходимо ввести значение n и выполнить инициализацию значений нулевого и первого чисел Фибоначчи, так как мы считаем их заранее известными:
readln(n);
fib0 := 0;
fib1 := 1;
Далее нам необходимо организовать цикл, в котором на каждом шаге переменные fib0 и fib1 будут получать следующие значения в последовательности чисел Фибоначчи. То есть, например, если в fib0 и fib1 будут находиться значения, соответственно, (n - 2)-го и (n - 1)-го членов последовательности Фибоначчи, то после одного шага цикла они будут содержать значения (n - 1)-го и n-го членов. Для этого можно создать некую вспомогательную переменную fib, в которую поместить результат сложения fib0 и fib1, после чего в fib0 у нас будет значение (n - 2)-го члена, в fib1 - (n - 1)-го, а в fib - n-го. Теперь нужно только скопировать значение fib1 в fib0 и fib в fib1, после чего значение переменной fib на этом шаге уже не имеет значения. С учетом того, что мы уже посчитали необходимое количество повторений для получения необходимого результата, цикл будет выглядеть так:
for i := 1 to n - 1 do begin
fib := fib1 + fib0;
fib0 := fib1;
fib1 := fib
end;
Такой метод решения общей задачи, основанный на использовании в ней решений задач с меньшей размерностью исходных данных (в данном случае под размерностью понимается величина n), называется динамическим программированием.
Если говорить конкретнее, то мы применили метод восходящего динамического программирования, основывающийся на решении задач сначала минимальной размерности с постепенным получением решений более обширных задач. Этот метод наиболее оптимален в плане реализации, быстродействия и используемой памяти.
Однако далеко не для всех задач, решаемых с помощью динамического программирования, можно выяснить, решения каких подзадач потребуются для решения данной. Для этого существует метод нисходящего динамического программирования, с которым мы познакомимся позже.
Другой пример нисходящего динамического программирования - вычисление факториала (задача 28). Чтобы вычислить n!, необходим вычисленный (n - 1)! и т. д.
Итак, вернемся к текущей задаче. Ранее было сказано, что по исчерпании n - 1 шагов цикла в переменной fib1, которая пойдет на вывод в программе, будет храниться значение Fn. Проверим корректность обработки граничных значений (в частности, когда n = 0, 1, 2):
1) При n = 0 границы цикла будут в отрезке [1, 0 - 1]. При этом значение правой границы зависит от типа переменной i, так как компилятор, дабы избежать ошибок, при вычислении «расширяет» тип выражений, означающих границы цикла.
Если i будет объявлено типа byte, то выражение 0 - 1 даст в результате 255 (так как все числовые типы в языке Pascal большинство компиляторов считает кольцевыми), что вызовет длинную цепочку вычислений, а это неверно. Конечно, можно объявить i типа integer, и тогда границы цикла будут в отрезке [1, -1] и вход не будет осуществлен, но мы поступим иначе, стараясь сохранить память для переменных.
Так как при вычислении важно лишь количество повторений, мы можем сдвинуть отрезок [1, n - 1] на одну позицию правее на числовой прямой, и тогда цикл будет проходить от 2 до n, что поможет отсеять вход в цикл при вводе 0 в качестве n, так как невозможен цикл по всем i от 2 до 0.
Однако тогда мы столкнемся с другой проблемой: при вводе 0 будет выведено значение fib1, которой было присвоено число 1 при инициализации. Справиться с проблемой можно, присвоив fib1 значение 0, если n = 0:
if n = 0 then fib1 := 0;
2) При n = 1 (с учетом принятых в предыдущем пункте изменений) входа в цикл не будет, и на экран выведется неизменное значение fib1, равное 1;
3) При n = 2 произойдет вход в цикл, где i будет изменяться от 2 до 2 (то есть, в этом случае будет выполнен единственный шаг), в котором будет вычислено значение fib = fib1 + fib0 = 1 + 0 = 1, которое будет скопировано в fib1 и выведено на экран. Нетрудно понять, что дальнейшая подстановка значений не требуется, так как корректность циклической конструкции мы уже доказали.
Верхние значения мы не проверяем, так как не существует наибольшего номера в последовательности чисел Фибоначчи (хотя понятно, что корректность вычислений ограничена «вместимостью» типа integer, и при его превышении в вычислениях числа уже будут неправильными).
Код:
1. program FibonacciNumbers; 2. 3. var 4. fib0, fib1, fib: integer; 5. i, n: byte; 6. 7. begin 8. readln(n); 9. fib0 := 0; 10. fib1 := 1; 11. for i := 2 to n do begin 12. fib := fib1 + fib0; 13. fib0 := fib1; 14. fib1 := fib 15. end; 16. if n = 0 then fib1 := 0; 17. writeln(fib1) 18. end. |
Задача № 47. Вывести на экран сумму чисел Фибоначчи до n-ного включительно
Формулировка. Дано натуральное n (которое также может быть равно 0). Вывести на экран сумму чисел Фибоначчи до n-ного включительно. Например, при n = 3 нам необходимо получить сумму 0-го, 1-го, 2-го и 3-го членов последовательности.
Решение. Задача основана на предыдущей, так как здесь нам тоже необходимо найти каждое число Фибоначчи до n включительно, однако теперь мы должны прибавлять найденные числа к некоторой переменной суммы (sum), которая потом будет выведена на экран.
Используем код предыдущей задачи:
readln(n);
fib0 := 0;
fib1 := 1;
for i := 2 to n do begin
fib := fib1 + fib0;
fib0 := fib1;
fib1 := fib
end;
if n = 0 then fib1 := 0;
writeln(fib1);
Чтобы переделать этот код по текущему назначению, мы должны добавить в цикл прибавление найденного числа Фибоначчи к переменной sum. Например, так:
for i := 2 to n do begin
fib := fib1 + fib0;
sum := sum + fib;
fib0 := fib1;
fib1 := fib
end;
Кроме того, следует исправить вывод ответа, так как нам необходимо вывести не последнее найденное число Фибоначчи, а сумму найденных чисел:
writeln(sum);
Очевидно, что вход в цикл не происходит при n = 0 и n = 1. Следовательно, правильную обработку этих случаев мы должны обеспечить инициализацией значений переменной sum, как мы это делали в предыдущей задаче.
Так как сумма нулевого и 1-го чисел Фибоначчи равна 1, то sum можно инициализировать значением 1. При входе в цикл первые два числа уже обработаны, поэтому при вводе n >= 2 накопление суммы также будет верным. Но очевидно, что в случае n = 0 необходимо инициализировать переменную sum значением 0. Реализовать эти два варианта можно так:
if n = 0 then sum := 0 else sum := 1;
Код:
1. program FibonacciNumbersSum; 2. 3. var 4. fib0, fib1, fib, sum: integer; 5. i, n: byte; 6. 7. begin 8. readln(n); 9. fib0 := 0; 10. fib1 := 1; 11. if n = 0 then sum := 0 else sum := 1; 12. for i := 2 to n do begin 13. fib := fib1 + fib0; 14. sum := sum + fib; 15. fib0 := fib1; 16. fib1 := fib 17. end; 18. writeln(sum) 19. end. |
Задача № 48. Вывести на экран все числа Фибоначчи до n-ного включительно
Формулировка. Дано натуральное n (которое также может быть равно 0). Вывести на экран все числа Фибоначчи до n-ного включительно.
Решение. Задача основана на задаче 46. В данном случае нам необходимо лишь выводить каждое найденное число Фибоначчи на экран. Мы можем легко получить решение этой задачи из задачи 46 или задачи 47.
Опишем основные фрагменты программы. Так как нулевой член последовательности выводится при любом возможном n, то его можно вывести на экран сразу после ввода n (или до, что не имеет значения). Затем, если n отлично от нуля, выводим на экран 1-ый член (так как вывод в цикле остальных членов происходит при n >= 2):
readln(n);
fib0 := 0;
fib1 := 1;
write(fib0, ' ');
if n <> 0 then write(fib1, ' ');
Далее необходимо добавить вывод текущего найденного члена в цикл:
for i := 2 to n do begin
fib := fib1 + fib0;
write(fib, ' ');
fib0 := fib1;
fib1 := fib
end;
Так как мы выводим все результаты в самом цикле, на этом программа заканчивается.
Код:
1. program FirstNFibonacciNums; 2. 3. var 4. fib0, fib1, fib: integer; 5. i, n: byte; 6. 7. begin 8. readln(n); 9. fib0 := 0; 10. fib1 := 1; 11. write(fib0, ' '); 12. if n <> 0 then write(fib1, ' '); 13. for i := 2 to n do begin 14. fib := fib1 + fib0; 15. write(fib, ' '); 16. fib0 := fib1; 17. fib1 := fib 18. end 19. end. |
Задача № 49. Проверить баланс круглых скобок в символьном выражении
Формулировка. Дана последовательность символов длины n (n >= 1). Проверить баланс круглых скобок в этом выражении. Например, при вводе выражения (())() программа должна сообщить о правильности расстановки скобок, а при вводе выражения ((()) - о неправильности.
Примечание: сбалансированной скобочной записью называется символьное выражение, в котором каждой открывающей скобке соответствует закрывающая скобка правее и наоборот, каждой закрывающей скобке соответствует открывающая скобка левее.
Так как мы вводим последовательность произвольных символов, в которой учитываются только круглые скобки, то между знаками скобок может находиться любая символьная информация, в силу чего корректная программа может проверять баланс скобок в арифметических выражениях, тексте и т. д. Например, выражение (7y + 1)(17 - (x + 3)) - правильное, а (146x + 18(y + 9) - неправильное, что сможет распознать программа.
Решение. Представим себе посимвольный ввод скобочного выражения с клавиатуры (когда уже введено некоторое количество символов) и подумаем, какие выводы можно сделать на данном этапе (для простоты восприятия будем рассматривать выражения, состоящие только из скобок):
1) ((()
Сейчас «как бы» мы видим начало скобочного выражения и не знаем, какие символы следуют далее. Какие выводы можно сделать на этом этапе? Имеющееся выражение содержит лишние открывающие скобки и его можно как сбалансировать, если дописать две закрывающие скобки, так и нарушить, если оставить в том же виде или применить множество других комбинаций. Вывод: если имеются лишние открывающие скобки, то выражение еще может быть сбалансировано.
2) (()))
Это выражение содержит явное нарушение баланса скобок, которое уже не может быть скомпенсировано добавлением любых скобочных комбинаций справа, так как не всем закрывающим скобкам соответствует по одной открывающей скобке левее. Отсюда вывод: если в выражении появилась хотя бы одна лишняя закрывающая скобка, то выражение «неправильное» и дальнейшая проверка бессмысленна.
Приступим к реализации этих рассуждений. Заведем счетчик count для подсчета открывающих и закрывающих скобок: при вводе открывающей скобки будем увеличивать его на 1, а при вводе закрывающей - уменьшать на 1.
Нам нужно создать переменную c символьного типа char, в которую мы будем последовательно вводить все символы нашего выражения. Стоит отметить, что в тип char также входит пробел, что влияет на значение длины вводимой последовательности. Например, длина n вводимого выражения (7y + 1)(17 - (x + 3)) равна 22 (пробелы выделены красным цветом).
После ввода n мы входим в цикл из n повторений, в котором вводим в c очередной символ. Полагаясь на предыдущие рассуждения, мы увеличиваем count на 1, если c = '(' и уменьшаем на 1, если c = ')':
readln(n);
count := 0;
for i := 1 to n do begin
read(c);
if c = '(' then inc(count);
if c = ')' then dec(count)
end;
Примечание: функция dec(x) уменьшает значение переменной x числового типа на 1.
Кстати, так как любой любая переменная не может иметь сразу два каких-либо значения, мы можем поместить второй условной оператор цикла в else-блок первого, что будет выглядеть логичнее, но мы не будем этого делать, чтобы повысить читаемость кода.
Отметим, что ввод n осуществляется с помощью readln(), так как он требует ввод enter'а в качестве ограничителя. При вводе n через read() далее следующий пробел или enter будет включен непосредственно во вводимую последовательность, что повлечет ошибку. Кроме того, нельзя разделять лишними пробелами или enter'ами символы последовательности при вводе, так как они не игнорируются при вводе в переменные типа char и должны быть включены в последовательность (при этом каждый пробел добавляет к длине 1, а каждый enter - 2).
Вернемся к разбору. Как же быть, если некоторый начальный фрагмент вводимого выражения станет заведомо неправильным, то есть, если в нем появятся лишние закрывающие скобки? Но тогда при появлении лишней («некомпенсируемой») закрывающей скобки переменная count станет равна -1, что можно оформить как условие выхода из цикла и поместить после первых двух операторов сравнения:
if count = -1 then break;
Какие результаты мы получим по завершении цикла?
1) Цикл прошел по всем символам, но были найдены лишние открывающие скобки (то есть, count > 0), компенсирования которых мы ожидали, однако они так и не были скомпенсированы и скобочная последовательность неправильная;
2) Цикл прошел по всем символам (то есть, не было выхода), причем количество скобок обоих видов равно (то есть, count = 0) и скобочная последовательность, соответственно, правильная;
3) Был осуществлен выход из цикла (то есть, нашли «некомпенсируемую» закрывающую скобку и count = -1) и последовательность неправильная.
Выходит, правильный ответ даст вывод выражения count = 0 (оно истинно во 2-ом случае и ложно в 1-ом и 3-ем):
writeln(count = 0);
Код:
1. program BracketSequence; 2. 3. var 4. count: integer; 5. i, n: byte; 6. c: char; 7. 8. begin 9. readln(n); 10. count := 0; 11. for i := 1 to n do begin 12. read(c); 13. if c = '(' then inc(count); 14. if c = ')' then dec(count); 15. if count = -1 then break 16. end; 17. writeln(count = 0) 18. end. |
Задача № 50. Вычислить экспоненту с заданной точностью
Формулировка. Дано действительное число x. Вычислить значение экспоненциальной функции (то есть, показательной функции ex, где e - математическая константа, ) в точке x с заданной точностью eps с помощью ряда Тейлора:
Примечание 1: показательными называются функции вида ax, где a - некоторое действительное число, x - независимая переменная, являющаяся показателем степени.
Примечание 2: ряд Тейлора - это представление функции в виде суммы (возможно, бесконечной) некоторых других функций по особым правилам (требующим детального математического обоснования, что в данном случае нам не нужно).
Решение. Не вникая в теоретическую часть и полагая представленную формулу корректной, попробуем разобраться в том, что же нам необходимо сделать для того, чтобы решить эту задачу:
1) Нам дана некоторая точка на оси Ox, и мы должны вычислить значение функции ex в этой точке. Допустим, если x = 4, то значение функции в этой точке будет равно ;
2) При этом вычисление необходимо реализовать с помощью заданной бесконечной формулы, в которой прибавление каждого очередного слагаемого увеличивает точность результата;
3) Точность должна составить вещественное число eps, меньшее 1 - это означает, что когда очередное прибавляемое к сумме слагаемое будет меньше eps, то необходимо завершить вычисление и выдать результат на экран. Это условие обязательно выполнится, так как математически доказано, что каждое следующее слагаемое в ряде Тейлора меньше предыдущего, следовательно, бесконечная последовательность слагаемых - это бесконечно убывающая последовательность.
Теперь разберемся с вычислением самого ряда. Очевидно, что любое его слагаемое, начиная со 2-го, можно получить из предыдущего, умножив его на x и разделив на натуральное число, являющееся номером текущего шага при последовательном вычислении (примем во внимание то, что тогда шаги нужно нумеровать с нуля). Значение x нам известно на любом шаге, а вот номер текущего шага (будем хранить его в переменной n) придется фиксировать.
Создадим вещественную переменную expf (от англ. exponential function - экспоненциальная функция) для накопления суммы слагаемых. Будем считать нулевой шаг уже выполненным, так как первое слагаемое в ряду - константа 1, и в связи с этим expf можно заранее проинициализировать числом 1:
expf := 1;
Так как мы начинаем вычисления не с нулевого, а с первого шага, то также нужно инициализировать значения n (числом 1, так как следующий шаг будет первым) и p (в ней будет храниться значение последнего вычисленного слагаемого):
n := 1;
p := 1;
Теперь можно приступить к разработке цикла. С учетом заданной точности eps условием его продолжения будет abs(p) >= eps, где abs(p) - модуль числа p (модуль нужен для того, чтобы не возникло ошибки, если введено отрицательное x).
В цикле необходимо домножить p на x и доделить его на текущий номер шага n, чтобы обеспечить реализацию факториала в знаменателе, после чего прибавить новое слагаемое p к результату expf и увеличить n для следующего шага:
while abs(p) >= eps do begin
p := p * x / n;
expf := expf + p;
inc(n)
end;
После выхода из цикла нужно осуществить форматированный вывод результата expf на экран с некоторым количеством цифр после точки, например, пятью. Отметим, что если при этом введенное eps содержало меньше 5 цифр после точки, то сформированное значение expf будет, соответственно, неточным.
Код:
1. program ExpFunc; 2. 3. var 4. x, eps, expf, p: real; 5. n: word; 6. 7. begin 8. readln(x, eps); 9. expf := 1; 10. n := 1; 11. p := 1; 12. while abs(p) >= eps do begin 13. p := p * x / n; 14. expf := expf + p; 15. inc(n) 16. end; 17. writeln(expf:0:5) 18. end. |
Размещено на Allbest.ru
...Подобные документы
Запись кодов команд программы и констант в FlashROM, кодов исходных данных в EEPROM, требуемых значений установочных битов (Fuse Bits) и битов защиты (Lock Bits). Запись и чтение кодов при программировании, способы программирования в микроконтроллерах.
контрольная работа [24,2 K], добавлен 22.08.2010Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.
курсовая работа [241,7 K], добавлен 11.12.2009Запись в языке программирования – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. Поле записи как обычная переменная. Операторы сравнения, присоединения. Программа с использованием массива структур.
реферат [11,5 K], добавлен 19.01.2009Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.
курсовая работа [879,8 K], добавлен 11.02.2016Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.
отчет по практике [2,1 M], добавлен 02.05.2014Составление структурных программ для решения практических задач по теме "Целочисленная арифметика". Алгоритм нахождения делителей натурального числа, алгоритм проверки простое ли число, алгоритм Решета Эратосфена. Система программирования Free Pascal.
разработка урока [27,1 K], добавлен 03.09.2014Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; вычисление числа с определенной точностью; перевод числа из десятичной в восьмеричную систему счисления.
отчет по практике [83,8 K], добавлен 08.06.2010Pascal - высокоуровневый язык программирования общего назначения и интегрированная среда разработки программного обеспечения для платформ DOS и Windows. Входная информация, требуемая для решения задачи и принятые обозначения; описание алгоритма.
курсовая работа [259,6 K], добавлен 18.01.2011Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.
задача [163,4 K], добавлен 16.12.2009Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.
контрольная работа [150,4 K], добавлен 03.05.2014Файл - именованная область памяти на магнитном носителе. Программирование доступа к файлу в языке Turbo Pascal. Описание файловой переменной. Виды файлов в зависимости от способа описания: текстовые, двоичные или типизированные и нетипизированные.
реферат [14,8 K], добавлен 19.01.2009Способы сортировки задач программирования: пузырьком, пузырьковая с просеиванием, метод последовательного поиска минимумов, вставками. Распределяющая сортировка - RadixSort-цифровая - поразрядная. Теория чисел. Простые числа. Задача "Красивые числа".
реферат [90,5 K], добавлен 14.05.2008Разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы. Текст программы, инициализация указателя стека, структура системы и ресурсов микроконтроллера. Запись кодов при программировании данного устройства.
контрольная работа [18,4 K], добавлен 24.12.2010Основные понятия и структура обработчика на языке Pascal. Элективные курсы по информатике в системе профильного обучения. Элективный курс "Программирование в среде Delphi". Методические материалы по изучению программирования на языке Object Pascal.
методичка [55,4 K], добавлен 08.12.2010Этапы подготовки и решения реальных задач. Словесно-формульное, графическое описание, псевдокоды. Программа нахождения квадрата числа на языке Бейсик. Разветвляющийся и циклический алгоритм. Общие положения программирования. Базовые конструкции.
презентация [308,3 K], добавлен 31.10.2016Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Понятие о стохастическом программировании, М-постановка и Р-постановка целевой функции. Описание этапов решения задач стохастического программирования: предварительный, оперативный анализ стохастической модели, переход к детерминированному эквиваленту.
курсовая работа [63,2 K], добавлен 15.06.2010Изучение понятия и основных задач стеганографии - науки, изучающей способы и методы сокрытия информации. Характеристика метода замены наименее значащих битов для bmp файлов. Реализация метода замены НЗБ для bmp файлов на языке программирования Java.
курсовая работа [149,2 K], добавлен 13.02.2013Разработка алгоритмов методом пошаговой детализации. Типы данных и операции в Turbo-Pascal. Организация работы с подпрограммами. Составление алгоритмов и программ задач с использованием конечных сумм. Организация работы с динамическими переменными.
учебное пособие [1,4 M], добавлен 26.03.2014