Решение логических задач на языке Pascal

Развитие алголоподобных языков, процесс формирования системы Паскаль и его главные возможности. Характеристика основных типов данных используемых при программировании. Структура программы на Турбо Паскаль. Понятие циклов и массивов, их разновидности.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 28.05.2013
Размер файла 62,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

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

Раздел 1. Теоретическое основание, практическая задача

1.1 История языка Паскаль

Язык Компонентный Паскаль является кульминацией нескольких десятилетий исследовательской работы. Это самый младший член семейства алголоподобных языков. Алгол, определенный в 1960, был первым языком высокого уровня с синтаксисом, который был легко читаем, четко структурирован и описан формальным образом. Несмотря на его успешное использование в качестве нотации для математических алгоритмов, в нем недоставало важных типов данный, таких как указатели и литеры.

В конце 60-х гг. было выдвинуто несколько предложений об эволюционном развитии Алгола. Самым успешным оказался Паскаль, определенный в 1970 г. профессором Никлаусом Виртом из ETH, швейцарского Федерального Технологического Института в Цюрихе [Eidgenossische Technische Hochschule]. Наряду с очищением языка от некоторых непрозрачных средств Алгола, в Паскале была добавлена возможность объявления новых структур данных, построенных из уже существующих более простых. Паскаль также поддерживал динамические структуры данных, т.е. такие, которые могут расти или уменьшаться во время выполнения программы. Паскаль получил сильный импульс к распространению, когда в ETH был выпущен компилятор, порождавший простой промежуточный код для виртуальной машины (P-код) вместо кода для конкретного процессора. Это существенно упростило перенос Паскаля на другие процессорные архитектуры, т.к. для этого нужно было только написать новый интерпретатор для P-кода вместо всего нового компилятора. Один из таких проектов был предпринят в Университете Калифорнии в Сан-Диего. Замечательно, что эта реализация (UCSD Pascal) не требовала большого компьютера [mainframe] и могла работать на новых тогда персональных компьютерах Apple II. Это дало распространению Паскаля второй важный импульс. Третьим был выпуск компанией Borland продукта ТурбоПаскаль, содержавшего быстрый и недорогой компилятор вместе с интегрированной средой разработки программ для компьютеров IBM PC. Позднее Борланд возродил свою версию Паскаля, выпустив среду быстрой разработки приложений Дельфи.

1.2 Типы данных в Паскале

Любая программа, написанная на любом языке программирования, по большому счету предназначена для обработки данных. В качестве данных могут выступать числа, тексты, графика, звук и др. Одни данные являются исходными, другие - результатом, который получается путем обработки исходных данных программой.

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

Переменные описываются до основного кода программы. Для них указываются ее имя и тип хранимых данных.

В языке программирования Паскаль достаточно много типов данных. Кроме того, сам пользователь может определять свои типы данных. Тип переменной определяется тем, с какими данными она связана.

Переменные типа integer могут быть связаны только с целыми значениями обычно в диапазоне от -32768 до 32767. В Pascal есть другие целочисленные типы.

Переменные типа real хранят вещественные (дробные) числа.

Переменная булевского (логического) типа может принимать только два значения - true (1, правда) или false (0, ложь).

Символьный тип (char) может принимать значения из определенной упорядоченной последовательности символов.

Интервальный тип определяется пользователем и формируется только из порядковых типов. Представляет собой подмножество значений в конкретном диапазоне.

Можно создать собственный тип данных простым перечислением значений, которые может принимать переменная данного типа. Это так называемый перечисляемый тип данных.

Все вышеописанное - это простые типы данных. Но бывают и более сложные, структурированные, которые базируются на простых типах.

Массив - это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа.

Строки представляет собой последовательность символов. Причем количество этих символов не может быть больше 255 включительно. Такое ограничение характерная черта Pascal.

Запись - это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях данные могут иметь разный тип.

Множества представляют собой совокупность любого числа элементов, но одного и того же перечисляемого типа.

Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (кстати, жесткий диск - это тоже внешняя память).

1.3 Структура программы на Турбо Паскаль

Программа на языке Паскаль состоит из заголовка, разделов описаний и раздела операторов. Заголовок программы содержит имя программы, например:

Program PRIM;

Описания могут включать в себя:

раздел подключаемых библиотек (модулей);

раздел описания меток;

раздел описания констант;

раздел описания типов;

раздел описания переменных;

раздел описания процедур и функций.

Раздел описания модулей определяется служебным словом USES и содержит имена подключаемых модулей (библиотек) как входящих в состав системы Turbo Pascal, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний.

Имена модулей отделяются друг от друга запятыми:

uses CRT, Graph;

Любой оператор в программе может быть помечен меткой. Имя метки задается по правилам образования идентификаторов Турбо Паскаль. В качестве метки также могут использоваться произвольные целые числа без знака, содержащие не более четырех цифр. Метка ставится перед оператором и отделяется от него двоеточием.

Все метки, используемые в программе, должны быть перечислены в разделе описания меток, например:

label 3, 471, 29, Quit;

Описание констант позволяет использовать имена как синонимы констант, их необходимо определить в разделе описания констант:

const K= 1024; MAX= 16384;

В разделе описания переменных необходимо указать все переменные, используемые в программе, и определить их тип:

var P,Q,R: Integer;

A,B: Char;

F1,F2: Boolean;

Описание типов, процедур и функций будет рассмотрено ниже. Отдельные разделы описаний могут отсутствовать, но следует помнить, что в Паскаль - программе должны быть обязательно описаны все компоненты программы.

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

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

1.4 Операторы ввода и вывода

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

Ввод данных

Для ввода исходных данных чаще всего используется процедура ReadLn:

ReadLn(A1,A2,...AK);

Процедура производит чтение К значений исходных данных и присваивает эти значения переменным А1, А2, ..., АК.

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

Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.

Не допускается разделение вводимых чисел запятыми!

Вывод данных

Для вывода результатов работы программы на экран используются процедуры:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

Первый из этих операторов производит вывод значений переменных А1, А2,...,АК в строку экрана. Второй оператор, в отличие от первого, не только производит вывод данных на экран, но и производит переход к началу следующей экранной строки. Если процедура writeln используется без параметров, то она просто производит пропуск строки и переход к началу следующей строки.

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

Форма представления значений в поле вывода соответствует типу переменных и выражений: величины целого типа выводятся как целые десятичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде символов, логического типа - в виде логических констант TRUE и FALSE.

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

Пример записи операторов вывода:

var rA, rB: Real;

iP,iQ:Integer;

bR, bS: Boolean;

chT, chV, chU, chW: Char;

begin

. . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

end.

Циклы

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

Если заранее известно количество необходимых повторений, то цикл называется арифметическим. Если же количество повторений заранее неизвестно, то говорят об итерационном цикле.

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

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

Арифметические циклы (счётчик)

Синтаксис:

for переменная := значение 1 to значение 2 do оператор

или

for переменная := значение 1 downto значение 2 do оператор

Оператор for вызывает оператор, находящийся после слова do, по одному разу для каждого значения в диапазоне от значения 1 до значения 2. Переменная цикла, начальное и конечное значения должны иметь порядковый тип. Со словом to, значение переменной цикла увеличивается на 1 при каждой итерации цикла. Со словом downto, значение переменной цикла уменьшается на 1 при каждой итерации цикла. Не следует самостоятельно изменять значение управляющей переменной внутри цикла.

Как и в случае использования оператора условного прехода, следует помнить, что синтаксис языка допускает запись только одного оператора после ключевого слова do, поэтому, если вы хотите в цикле выполнить группу операторов, обязательно надо объединить их в составной оператор (окаймить операторными скобками begin ... end). В противном случае будет сделана логическая ошибка программы.

Итерационные циклы с предусловием

Синтаксис:

while выражение do оператор

Оператор после do будет выполняться до тех пор, пока логическое выражение принимает истинное значение (True). Логическое выражение является условием возобновления цикла. Его истинность проверяется каждый раз перед очередным повторением оператора цикла, который будет выполняться лишь до тех пор, пока логическое выражение истинно. Как только логическое выражение принимает значение ложь (False), осуществляется переход к оператору, следующему за while.

Выражение оценивается до выполнения оператора, так что если оно с самого начала было ложным (False), то оператор не будет выполнен ни разу.

Здесь также следует помнить, что позволяется использовать только один оператор после ключевого слова do.

Если необходимо выполнить группу операторов, то стоит использовать составной оператор.

Пример:

eps:=0.001;

while x > eps do x:=x/2;

Итерационные циклы с постусловием

Синтаксис:

repeat

оператор;

оператор;

...

оператор

until выражение

Операторы между словами repeat и until повторяются, пока логическое выражение является ложным (False).

Как только логическое выражение становится истинным (True), происходит выход из цикла.

Так как выражение оценивается после выполнения операторов, то в любом случае операторы выполнятся хотя бы один раз.

Пример.

repeat

WriteLn('Введите положительное число');

ReadLn(x);

until x>0;

Операторы завершения цикла

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

В версии Турбо Паскаль 7.0 определены стандартные процедуры:

Break

Continue

Процедура Break выполняет безусловный выход из цикла. Процедура Continue обеспечивает переход к началу новой итерации цикла.

Заметим, что хотя и существует возможность выхода из цикла с помощью оператора безусловного перехода goto, делать этого не желательно. Во всех случаях можно воспользоваться специально предназначенными для этого процедурами Break и Continue.

алголоподобный паскаль программирование массив

1.5 Массивы

Массивы - это совокупности однотипных элементов. Характеризуются они следующим:

каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ;

число компонент массива определяется при его описании и в дальнейшем не меняется.

Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент.

Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон).

Описание типа массива задается следующим образом:

type

имя типа = array[ список индексов ] of тип

Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных.

Вводить и выводить массивы можно только поэлементно.

Пример 1. Ввод и вывод одномерного массива.

const

n = 5;

type

mas = array[1..n] of integer;

var

a: mas;

i: byte;

begin

writeln('введите элементы массива');

for i:=1 to n do readln(a[i]);

writeln('вывод элементов массива:');

for i:=1 to n do write(a[i]:5);

end.

Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:

var a,b,c: array[1..10] of integer;

Если массивы a и b описаны как:

var

a = array[1..5] of integer;

b = array[1..5] of integer;

то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа. Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива. Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно. Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом. Например:

type

mas = array[1..5] of array[1..10] of integer;

Такую запись можно заменить более компактной:

type

mas = array[1..5, 1..10] of integer;

Таким образом возникает понятие многомерного массива.

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

Работа с многомерными массивами почти всегда связана с организацией вложенных циклов.

Так, чтобы заполнить двумерный массив (матрицу) случайными числами, используют конструкцию вида:

for i:=1 to m do

for j:=1 to n do a[i,j]:=random(10);

Для "красивого" вывода матрицы на экран используйте такой цикл:

for i:=1 to m do begin

for j:=1 to n do write(a[i,j]:5);

writeln;

end;

1.6 Процедуры и функции

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

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

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

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

Описание и вызов процедур и функций

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

Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры);

раздел описаний процедуры

begin

исполняемая часть процедуры

end;

Формат описания функции:

function имя функции (формальные параметры):тип результата;

раздел описаний функции

begin

исполняемая часть функции

end;

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

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры(список фактических параметров);

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

Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.

Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:

имя функции := результат;

При вызове процедур и функций необходимо соблюдать следущие правила:

количество фактических параметров должно совпадать с количеством формальных;

соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

Заметим, что имена формальных и фактических параметров могут совпадать.

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

Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

var x,y,m,n: integer;

procedure MaxNumber(a,b: integer; var max: integer);

begin

if a>b then max:=a else max:=b;

end;

begin

write('Введите x,y ');

readln(x,y);

MaxNumber(x,y,m);

MaxNumber(2,x+y,n);

writeln('m=',m,'n=',n);

end.

Аналогичную задачу, но уже с использованием функций, можно решить так:

var x,y,m,n: integer;

function MaxNumber(a,b: integer): integer;

var max: integer;

begin

if a>b then max:=a else max:=b;

MaxNumber := max;

end;

begin

write('Введите x,y ');

readln(x,y);

m := MaxNumber(x,y);

n := MaxNumber(2,x+y);

writeln('m=',m,'n=',n);

end.

1.7 Графика в паскале

Графические функции паскаля описаны в модуле GRAPH. Модуль подключается к программе с помощью ключевого слова USES.

Пример:

program t34;

Uses graph;

Var ...

...

Основные процедуры и функции модуля GRAPH.

Процедура InitGraph инициирует перевод видеоадаптера в видеорежим. Общий вид:

InitGraph(Driver,Mode,Path);

Driver - параметр, определяющий графический драйвер; 0 - автоопределение,9 - VGA.

Mode - параметр, задающий один из графических режимов. Для VGA 0 - 640X200 16 цветов, 1- 640Х350 16 цветов, 2 - 640Х480 16 цветов. Если стоит автоопределение, то параметр Mode надо задавать, выбор будет сделан в пользу максимально возможного из режимов.

Path - имя файла и путь графического драйвера. Указывать надо только путь. Обычно в Паскале используется egavga.bgi. Он расположен в каталоге(например): D:\tp7\BGI\

Пример:

InitGraph(9,2,'d:\tp7\bgi\') ;

Замечание редактора: указанный пример не будет работать, так как первые два аргумента у процедуры InitGraph - параметры-переменные. То есть, числа 9 и 2 надо поместить в переменные типа Integer, и имена этих переменных ставить в качестве первых двух аргументов:

var gd,gm: integer

.........

gd:=9;

gm:=2;

InitGraph (gd,gm,'d:\tp7\bgi\');

Процедура DetectGraph - тестирует аппаратуру и определяет, какой графический драйвер и режим (максимально допустимые) подходят для данного видеоадаптера.

Общий вид:

DetectGraph (Driver,Mode);

Driver - параметр, определяющий подходящий тип графического драйвера.

Mode - параметр, задающий один из графических режимов, поддерживаемых данным драйвером.

Пример

USES GRAPH

VAR D,M:INTEGER;

BEGIN

DetectGraph(D,M);

Write('Тип графического адаптера: ',D,'Графический режим: ',M);

END.

Если видеоадаптер не был найден, то переменная Driver вернет значение -2.

Функция GraphResult - возвращает код ошибки графической операции, выполнявшейся последней.

Общий вид:

GrapgResult;

Пример

USES GRAPH

VAR H,k,l: INTEGER;

BEGIN

DetectGrahp(k,l);

InitGraph(k,l,'d:\tp7\bgi\');

H:=GraphResult;

If h=0 then write('OK') elseWrite('Error');

END.

Значения возвращаемые GraphResult:

0 - без ошибок

-1 - не инициализирован граф. режим

-2 - не удалось определить тип адаптера

-3 - не обнаружен файл с драйвером

-4 - Обнаруженный файл не содержит соответствующего драйвера

-5 - недостаточно памяти для загрузки драйвера

-6 - недостаточно памяти для просмотра областей

-7 - недостаточно памяти для заполнения областей

-8 - не обнаружен файл со шрифтом

-9 - недостаточно памяти для загрузки шрифта

-10 - недопустимый режим для выбранного драйвера

-11 - общая ошибка

-12 - ошибка ввода-вывода

-13 - неверный формат шрифта

-14 - неверный номер шрифта

Функция GraphErrorMsg - возвращает текст, по-английски, сообщения об ошибке.

Пример.

GraphResult(i);

GraphErrorMsg(i);

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

Пример.

RestoreCrtMode:

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

SetGraphMode(Mode);

Mode - целое число от 0 до 5, определяющее режим. С помощью SetGraphMode можно переходить в другой графический режим, отличный от используемого. Совместно с процедурой RestoreCrtMode может использоваться, чтобы временно и быстро переходить из графического в текстовый режим и обратно.

SetGraphMode устанавливает для всех графич. параметров (палитра, цвет, и т. п.) значения по умолчанию, заданные для данного режима.

Функция GetGraphMode - возвращает числовой код используемого в данный момент графического режима. Для VGA это 0,1 или 2.

Раздел 2. Практическая часть

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

Мне необходимо решить и запрограммировать две задачи:

1: Богатый дядюшка подарил мне 1 доллар в мой первый день рождения. В каждый следующий день рождения он удваивал сумму подарка и прибавлял к ней столько долларов сколько мне лет исполнилось. Написать программу, подсчитывающую общую сумму денег, подаренных к N-му дню рождения, и указывающая к какому дню рождения сумма подарка превысит 100 долларов.

2: Первое любимое число Незнайки 1, второе 5. Каждое следующее число получается как сумма удвоенного предыдущего числа. Так третье любимое число 11, а четвёртое 27. Вывести сумму любимый чисел незнайки среди первой тысячи.

Блок схема алгоритма решения задач

Рис. 1 Блок схема задачи 1

Рис. 2 Блок схема задачи 2

Листинг программы

Задача 1:

program neznaika;

var n,i,sum,sum1:integer;

begin

writeln('vvedite 4islo');

readln(n);

sum:=0;

for i:=1 to n do

begin

if (i mod 2)=0 then

begin

sum:=(i+1+sum*2);

writeln(' ',sum);

end

else

begin

sum:=(i-(i-1)+sum*2);

writeln(' ',sum);

end;

sum1:=(sum1+sum);

end;

writeln('summa lubimish 4isel neznaiki do ',n,' pavna ',sum1);

readln;

end.

Задача 2:

program _24;

var sum,i:integer;

begin

i:=1;

repeat

begin

sum:=sum*2+i;

i:=i+1;

writeln(i-1,' god rojdeniya',' polu4eno ',sum,' $');

end;

until(sum>=100);

Writeln('');

writeln('na ',i-1,' den rojdeniya nakoplennaya summa previsit 100');

readln;

end.

Заключение

В ходе выполнения курсовой работы я применял и закрепил полученные знания, а также решил и запрограммировал их.

Размещено на Allbest.ru


Подобные документы

  • Изучение основных конструкций и способов написания программ на языке Паскаль. Обзор принципов работы и интерфейса написанной программы. Обработка и модификация двумерных массивов. Файловые структуры данных. Текстовые файлы. Элементы машинной графики.

    курсовая работа [761,7 K], добавлен 11.03.2015

  • Особенности программирования на языке Паскаль в среде Турбо Паскаль. Линейные алгоритмы, процедуры и функции. Структура данных: массивы, строки, записи. Модульное программирование, прямая и косвенная рекурсия. Бинарный поиск, организация списков.

    отчет по практике [913,8 K], добавлен 21.07.2012

  • Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.

    курсовая работа [233,5 K], добавлен 14.12.2012

  • Разработка программы, создающей и управляющей базой данных, ее реализация на языке Turbo Pascal. Организация алгоритма программы. Вывод информации и возможность добавления информации в базу данных. Поиск информации в базе данных по заданному значению.

    курсовая работа [26,7 K], добавлен 19.06.2010

  • Общая характеристика языков программирования. Описание языка Паскаль: основные субъекты языка; структура Паскаль-программы; типизация и объявление данных. Операторы присваивания и выражения. Структурные операторы, организация ветвлений и циклов.

    дипломная работа [276,6 K], добавлен 26.01.2011

  • Основные сведения о системе программирования Турбо Паскаль. Структура программы на Паскале и ее компоненты. Особенности и элементы языка Турбо Паскаль. Порядок выполнения операций в арифметическом выражении, стандартные функции и оператор присваивания.

    лекция [55,7 K], добавлен 21.05.2009

  • Выбор метода проектирования транслятора с языка Паскаль на язык Си, разработка и кодирование алгоритма программы. Использование допустимых операторов в исходном тексте, определение типов переменных и синтаксиса логических и арифметических выражений.

    курсовая работа [1,0 M], добавлен 03.07.2011

  • Развертывание системы на жестком диске, диалоговая система программирования Турбо Паскаль, запуск программы и выполнение задания. Функциональные клавиши и их назначение. Текстовый редактор, средства создания и редактирования текстов программ, курсор.

    реферат [18,6 K], добавлен 01.04.2010

  • Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.

    учебное пособие [211,1 K], добавлен 30.03.2008

  • Иерархическая структура производного типа данных в языке Паскаль. Определение массива как упорядоченного набора фиксированного количества некоторых значений. Сортировка одномерных и двумерных массивов методом простых обменов, простым выбором и включением.

    курсовая работа [48,8 K], добавлен 27.11.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.