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

Реферат Курсовая Конспект

Нерекурсивное решение. Стек в виде массива

Нерекурсивное решение. Стек в виде массива - раздел Компьютеры, Основные понятия и определения. Элементы языка. Элементы данных. Выражения. Основные инструкции. Процедуры. Препроцессор. Стиль программироваhия #Define Deep 20 // Максимальная Глубина Стека ...

#define DEEP 20 // Максимальная глубина стека

void hanoi(short a, // Исходная площадка

short b, // Площадка - цель

short n){ // Число дисков

short stack[DEEP][3],

i, // Индикатор уровня стека

fl; // 0 – стек пуст. Конец вычислений

fl = 1;

i = -1;

while(fl){

if(n > 1){ // Заполнение стека

i++;

stack[ i ][0] = a;

stack[ i ][1] = b;

stack[ i ][2] = n;


/* Подготовить первое обращение */

b = 6-a-b;

n--;

}else{

if(i >= 0){// Стек не пуст

/* Печать вершины уровня 1 */

printf(" %2d %2d\n", a, b);

/* Извлечь данные из стека */

a = stack[ i ][0];

b = stack[ i ][1];

n = stack[ i ][2];

/* Печать "корня" */

printf(" %2d %2d\n", a, b);

/* Подготовить второе обращение */

a = 6-a-b;

n--;

/* Убрать вершину из стека */

i--;

}else{ // Стек пуст

fl = 0;

}

}

} // End while

/* Печать последней вершины */

printf(" %2d %2d\n", a, b);

} // End hanoi

– Конец работы –

Эта тема принадлежит разделу:

Основные понятия и определения. Элементы языка. Элементы данных. Выражения. Основные инструкции. Процедуры. Препроцессор. Стиль программироваhия

Введение.. Основные понятия и..

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Нерекурсивное решение. Стек в виде массива

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

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

Естественный язык
Пример. Нахождение наибольшего общего делителя (НОД) двух чисел – алгоритм Евклида. Шаг 1. Ввести 2 числа. Шаг 2. Если числа равны, взять первое и закончит

Машинный и алгоритмический языки
Как упоминалось выше, компьютер оперирует с кодированной информацией, представленной в двоичной системе счисления. Соответственно, программа состоит из набора инструкций (команд), спе

Метаобозначения
Метаязык – это язык для описания другого языка. Наиболее распространенными метаязыками для описания языков программирования являются нотация Бэкуса-Наура (БНФ) и синтаксические диаграммы. В

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

Системы счисления
Любое число xв десятичной системе счисления может быть представлено в виде:xàDm-1*10m-1+Dm-2*10m-2+...+D1*10+D

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

История языков С и Basic
Язык C был разработан в 1972 г. Д.Ритчи в AT&T Bell Laboratories на основе языков BCPL (автор -М.Ричардсон) и B (автор - К.То

Идентификаторы
Идентификатор:= <имя>|<ключевое слово> Имя служит для обозначения объектов (ссылок к объектам) программы. Ключевое слово обозначает понятие, которое исполь

Данные с плавающей точкой
Это семейство типов, значения которых являются вещественными(дробны-ми). Типы различаются диапазоном значений и объемом выделяемой под элемент памяти. Памя

Логический тип
Используется для задания логических условий и свойств объектов. Описывается ключевыми словами boolв языке C++и boolean в языке Ba

Объявления массивов
С <элемент>:=<имя>[<длина>][,[<длина>]]… <длина> - кол

ВЫРАЖЕНИЯ
Выражение – это представление в тексте программы значения. Оно включает в себя ключевые слова, операторы, переменные, литералы и функции. В результате вычисления этой комбина

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

Заключительные замечания
Если в состав выражения входят операнды разных типов, то, если возможно, выполняется автоматическое их преобразование к единому типу, а затем выполняется оператор. Правило преобразования: результат

Объявления
Служат для указания свойств (характеристик) компонентов данных. В данной части курса в качестве таких компонент фигурируют переменные и массивы. Во многих случаях одновременно

Безусловный переход
Инструкция выполняет переход к другой выполняемой инструкции. Для осуществления перехода нужно указать место, в которое необходимо перейти. Для этого используется объект программы – метка, к

Инструкция If. Пустая инструкция
Реализует базовую вычислительную структуру – развилку. C Формат: if(<выражение>)<инструкция 1>;

Циклы while
C Формат: while(<условие>)<инструкция>; Эквивалентная схема: label: if

Циклы for
C Формат: for([<выражение 1>];[<выражение 2>];[<выражение 3>])[<инструкция>]; Эквивалентная схема

Циклы с постусловием
Используются существенно реже, потому что основное отличие их от предыдущих инструкций заключается в том, что в них тело цикла в первый раз выполняется без проверки условия продолжения (прек

Инструкция break
Передает управление инструкции, непосредственно следующей за инструкцией цикла или switch (см. ниже). Формат: break; Эквивале

Инструкция continue
Вызывает переход в конец тела цикла (точнее, к вычислению выражения 3, затем к проверке условия выполнения цикла (выражение 2) в инструкции forили непосредственно к п

Инструкция switch (язык С)
Формат: switch(<выражение>) <инструкция> Выражение должно быть целого типа. Инструкция должна быть составн

Управляющая строка
Управляющая строка состоит из текста и спецификаций. Каждая спецификация определяет только одно передаваемое значение. Формат одной спецификации: %

Вывод символьной информации
Ввод. Будет рассмотрен в другом разделе. Вывод. Также.излагаются не все возможности. Цель данного раздела – дать средства для формирования п

Распределение массивов
    Объем памяти, занимаемый массивом, равен:

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

Определения процедур
C Формат функции: [<тип>] <имя>([<описания_параметров>])<блок> В блоке обязательно присутствие инструкции вида

End function
C По понятиям языка Cподпрограмма – это функция, не возвращающая значения. Для указания типа возвращаемого значения в этом случае используется ключ

Механизмы передачи данных
Существуют 2 механизма передачи информации между процедурами: по значению и по адресу (ссылке, имени, наименованию). Передача по значению подразумевает копирование арг

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

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

Передача массивов
C Если аргумент процедуры – массив, то используется механизм передачи по адресу. При этом в список аргументов включается имя массива, в вызываемую про

Передача функций
В этом разделе рассмотрим передачу в качестве аргумента имени функции. Этот специфический вид аргумента позволяет придать программе универсальность. Пример. Найти y=min(f(x)),

Определение символических констант
Символической(именованной) константой называют имя в тексте программы, которое должно быть заменено на конкретное постоянное значение до трансляции. Их применение позволяет сократить

Включение файлов в текст программы
Файл – любая совокупность данных, имеющая отдельную спецификацию и включенная в каталог (папку) операционной системы. Формат спецификации: <имя>.<тип (расширение)>

Формирование листинга
Исторически листингом называли распечатку текста программы. Сейчас под этим можно понимать размещение текста программы на любом носителе: бумаге, экране и т.п. Размещ

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

Изучайте и используйте библиотечные функции. Малоупотребительные комментируйте.
Пример. /* pow(x,n) – возведение x в степень n */ 3. Не применяйте трюки! Пример. Формирование единично

Литералы.
(МВ) Для трансляторов языка C, в которых не предусмотрены логические данные, разумно ввести в программу логические литералы. #define TRUE 1

Перечислимый тип
10.1.1. Тип enum (C) Относится к целым типам данных. Применяется для объявления целых переменных, которые могут принимать только строго определенные значения

End enum
Объявление переменных имеет вид: dim color1 asspectr, color2 as spectr Правила объявления и использования переменных

Структуры
Структура (запись) – это составной объект, содержащий один или более элементов любых типов, кроме функций. Элементом структуры может быть массив любого типа. В отличие от массива, к э

Поля битов
До сих пор минимальными адресуемыми элементами программы являлись объекты размером в 1 байт. Примерами таких объектов являлись данные типа char в языке Cи типа

Объединения (смеси)
Иногда возникает необходимость располагать в одной области памяти программные объекты разных типов и даже разной организации, например, скалярные переменные и массивы. Для этой цели используется ко

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

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

End type
После описания типа можно определить произвольное число переменных и массивов этого типа. Пример. dim RefStar asstar, ViewStar as

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

Явные преобразования
В языке Cони выполняются конструкцией вида: (<имя-типа>)<выражение> Пример. sqrt((double

Уровень 1
Порядок выполнения: à Операторы: ( ) [ ] . -> Первые два оператора означают: (...) – список аргументов процедуры, [...] – индексирование (вычисление индекс

ПЕРЕДАЧА ДАННЫХ ПОТОКОМ
Этот раздел посвящен дополнительным средствам ввода-вывода в языке C, используемых для ввода-вывода символьной информации. Средства языка Basic для ввода с

Функции getchar и putchar
Прототип: int getchar(void); - чтение одного символа с клавиатуры. Файл прототипа: stdio.h. Возвраща

Функции gets и puts
Прототип: char* gets(char*); - чтение строки символов. Файл прототипа: stdio.h. Воз

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

Описание файла
Правила описания файлов зависят от операционной системы (ОС), однако традиционно это описание имеет вид: <имя_файла>.< расширение>. Пример. квартпла

Открытие и закрытие файлов
Перед началом обмена данными с файлом выполняются операции : - проверка наличия файла с данным именем при чтении; - наличие свободного пространства на диске при создании файла;

Открытие и закрытие файла
Прототип: FILE *fopen(char *a,char *b); - открытие файла. Параметры: - a – имя

Основные функции обмена
Правила обращения к ним практически совпадают с ранее описанными для функций стандартных потоков ввода-вывода stdin и stdout. Появляется лишь дополнительный параме

Инструкция open
Открывает файл. Формат: open <полный_путь> for <режим> as #<дескриптор>

Инструкция print
Также записывает значения элементов списка данных в файл. Основное отличие этой инструкции от инструкции write заключается в более широких возможностях расположения элементов данны

Функция MsgBox
Эта функция не относится к функциям работы с файлами, но, поскольку необходимо, чтобы программа на языке Basic выдавала на экран информацию о ходе выполнения, она приводится в данн

СТРУКТУРА ПРОГРАММЫ
Любая программа на языке Cили Basic состоит из одной или нескольких процедур, одна из которых должна иметь имя main. Она получает управление от оп

Область видимости (действия) и время жизни переменных
Объекты, объявленные вне процедур, называются внешними, объекты, объявленные внутри процедур и блоков, - внутренними. Областью видимости (scope

Язык Basic
Здесь так же, как и в языке C, допустимо объявление внешних объектов, которые сохраняют свои значения в течение всего времени выполнения приложения. Для того, чтобы такое время жиз

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

Инициализация данных
Под инициализацией понимают задание значений объектам программы в момент их определения. В языке Basic все числовые объекты и строки постоянной длины инициализируются нул

Указатели и массивы
Между указателями и массивами существует тесная связь. Любое действие, выполняемое индексированием массива, может быть реализовано с помощью указателей, причем последний вариант более

Динамические объекты
До сих пор для всех объектов, рассматриваемых в пособии, память выделялась по информации программы автоматически. Для объектов класса памяти static и extern во вре

Двойное указание
int* x = (int*)malloc(sizeof(int)), y = (int*)malloc(sizeof(int

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

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

Нерекурсивное решение. Стек в виде списка
Причем: - элемент стека – произвольная структура; - операции над стеком позволяют организовать в программе произвольное число стеков. Файл hanoi.c

РАБОТА С ЭКРАHОМ
В этом и последующих разделах излагаются средства языка C, точнее средства, входящие в среду разработки Borland 3.1 C++, работающей под управлением операционной си

Текстовый режим(textmode)
Определены следующие видеорежимы: BW40 0 черно-белый, 40 позиций в строке; C40 1 16 цветов, 40 позиций в строке; BW80 2

Манипулирование цветом и курсором
void clrscr(void); Очистить текущее текстовое окно и установить курсор в его левый верхний угол(координаты 1, 1). void gotoxy

Управление атрибутом(цветами символа и фона в окне)
Замечание. Все нижеперечисленные функции влияют только на выполнение функций консольного ввода-вывода. Например, функция printf выводит информацию только с позиции, г

Установка и закрытие
Поскольку по умолчанию при запуске приложения устанавливается текстовый режим, переход к графическому режиму выполняется следующей функцией: void initgraph(

BOLD_FONT
Большинство фонтов .chr, находящихся в директории BGI, не содержат русских символов, однако там есть директория Rus, внутри которой есть соответст

Эллипсы
void ellipse(int x, int y, int stangle, int endan

УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ КЛАВИАТУРЫ
Часто требуется после выполнения фрагмента программы дать возможность пользователю выбрать один из нескольких вариантов продолжения. Обычно это реализуется с помощью ввода с клавиатуры без

Элементарные конструкции
1. Какие нижеприведенных записей являются можно использовать в качестве имен: X Begin a[3] 3D_Studuo Step1 sin(x) CTEK a15x Str.X a1 конец _XX x_x 2. Какие из записе

Простые циклы
1. Вычислить и напечатать таблицу функции: 2x3/(x2+1), если |x|<3 y =

Вложенные циклы
1. Даны координаты 25 точек на плоскости. Найти сумму всех попарных расстояний между точками. 2. Дана матрица {aij}, i =1...10, j = 1...10. Найти индексы максимального эл

Процедуры
Все решения в зависимости от условия задачи оформить в виде функции или подпрограммы. 1. Даны 2 натуральных числа n и m(m<=n). Определить сумму m последних цифр чис

Работа со строками
1. В последовательности символов заменить каждое вхождение слова "рот" на слово "нос". 2. Дана строка символов. Сформировать из нее строку, содержащую только символы, в

ПРИЛОЖЕНИЯ
Приложение 1. Среда разработки Borland C++ 3.1    

П1.3. Разное
1. Команды редактора описаны в пункте головного меню Help. Добраться до них по ссылкам можно в следующем порядке: HelpàContentsà

П1.4. Редактирование текста
Ссылка на команды редактора приведена в предыдущем разделе. Здесь рассмотрим команды Главного меню : пункт Edit. Undo (Отмена) – отменяе

Трансляция
Сообщения времени трансляции выводятся в окно Message. Первое указывает имя транслируемого модуля вместе с путем из текущей папки (директории). Пример. Co

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

Получение значений объектов программы
Под объектами здесь будем понимать переменные, массивы и структуры. Inspect (Alt+F4) – вызывает появление окна, в котором можно задать имя объекта программы. После чего в

П1.7. Окна
Среда Borland C++ 3.1имеет многооконный интерфейс, в котором по умолчанию показываются 2 окна: Edit и Message. Окно Watch вызывае

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

П2.1. Запуск среды
Среда Visual Basic (в дальнейшем VB) запускается через меню Программы Пуск–> Все программы–>

П2.3. Окна и режимы работы
Можно сказать, что среда VB обеспечивает 3 режима работы: - разработки (design mode); - выполнения приложения (execution mo

П2.4. Главное меню
Главное меню содержит все команды и установки среды VB, многие из которых могут быть вызваны с помощью "горячих" клавиш или кнопок Панелей инструментов. &qu

П2.6. Редактирование текста
Меню Editсодержит команды Редактора кода программы. Большинство команд совпадает со стандартными командами других текстовых редакторов. Если в пункте меню показан значок, эт

Определение значений объектов программы в момент прерывания
Окно Watch. Становится доступным только в момент прерывания. Вызывается через мерю Debug. Имена интересующих объектов заносятся в выделенную с

Продолжение работы
После прерывания можно продолжить выполнение приложения следующими способами: - командой Start (описывается ниже); выполнение продолжается до ближайшей точки прерывания, е

Основные инструкции
1. Какие преимущества имеет инструкция присваивания языка C перед аналогичной инструкцией языка Basic? В языке C можно одной инструкцией присвоить

Стиль программирования
1. Как разумно размещать инструкции текста программы? Одну инструкцию в строке текста программы. 2. Какую роль играют отступы при размещении вложенных инструкций? Отступы подчеркива

Данные. Дополнение
1. Что произойдет при присваивании переменной типа enum значения не из списка допустимых значений в программе на языке C? А в языке Basic? В языке

Указатели, массивы, строки
1. Что означают операторы * и & при работе с указателями? Оператор "*" означает: извлечь значение по известному адресу, оператор "&" – определить адрес известн

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Visual Basic 6.0. – СПб.: БХВ – Санкт-Петербург, 1999. – 992 с. 2. Абрамов С.А. и др. Задачи по программированию. – М: Наука, 1988. – 224с. 3. Балуев А.Н., Даугавет В.А., Шидло

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги