Форум программистов, компьютерный форум CyberForum.ru

Подскажите литературу где встречаются данные темы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Во всех последовательностях массива положительных чисел изменить порядок элементов на противоположный http://www.cyberforum.ru/cpp-beginners/thread751084.html
Помогите с задачей !!! в с++ Создать массив целых чисел и заполнить его случайными значениями. Рзмерность массива – 100, диапазон значений . Во всех последовательностях массива положительных чисел изменить порядок элементов на противоположный.
C++ Создание аудиопроигрывателя Всем привет. Знаю, такой вопрос уже не однократно обсуждался, но я всё же хочу узнать некоторые детали. Самый первый вопрос: с чего начать?, что подучить?, мне нужен простенький проигрыватель, но чтобы интерфейс был дружественный (т.е красивые кнопочки, и т.д), Зарание спасибо. :) http://www.cyberforum.ru/cpp-beginners/thread751078.html
Выдает ошибку LNK1120! C++
После этих строк: MCI_OPEN_PARMS OpenParm; MCI_SET_PARMS SetParm; MCIDEVICEID dID; OpenParm.lpstrDeviceType="CDAudio"; mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE, (DWORD_PTR)&OpenParm); dID = OpenParm.wDeviceID; mciSendCommand(dID, MCI_SET, MCI_SET_DOOR_OPEN, (DWORD_PTR)&SetParm); mciSendCommand(dID, MCI_SET, MCI_SET_DOOR_CLOSED, (DWORD_PTR)&SetParm);
C++ Исправить код
#include <iostream> using namespace std; int main () { setlocale(0, ""); double x, i = 0; // инициализируем счетчик цикла. double sum = 0; // инициализируем счетчик суммы. cin>>x; do // выполняем цикл.
C++ Представление полиномов динамически связанными структурами http://www.cyberforum.ru/cpp-beginners/thread751044.html
Помогите пожалуйста представить полиномы с помощью динамически связанных структур
C++ даны названия двух стран даны названия двух стран. Присвоить зти названия переменным величинам а1 и а2 после чего названия а2 присвоить величине с1, названия а1 величине с2 подробнее

Показать сообщение отдельно
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
05.01.2013, 18:51     Подскажите литературу где встречаются данные темы
Машина Тьюринга это кортеж из 7 элементов http://www.cyberforum.ru/cgi-bin/latex.cgi?<Q,\Gamma,b,\Sigma,\delta {q}_{0},F>, где
http://www.cyberforum.ru/cgi-bin/latex.cgi?Q - конечное непустое множество состояний
http://www.cyberforum.ru/cgi-bin/latex.cgi?\Gamma - конечный непустой набор символов, называемых алфавитом
http://www.cyberforum.ru/cgi-bin/latex.cgi?b\in \Gamma - пустой символ ( единственный символ, который может быть на ленте после любого шага процесса вычисления)
http://www.cyberforum.ru/cgi-bin/latex.cgi?\Sigma \subseteq \Gamma \ {http://www.cyberforum.ru/cgi-bin/latex.cgi?b} - набор входных символов
http://www.cyberforum.ru/cgi-bin/latex.cgi?{q}_{0}\in Q - начальное состояние
http://www.cyberforum.ru/cgi-bin/latex.cgi?F\subseteq  Q - множество конечных ( или допускающих) состояний
http://www.cyberforum.ru/cgi-bin/latex.cgi?\delta : Q \ http://www.cyberforum.ru/cgi-bin/latex.cgi?F x http://www.cyberforum.ru/cgi-bin/latex.cgi?\Gamma \rightarrow Q x http://www.cyberforum.ru/cgi-bin/latex.cgi?\Gamma x {http://www.cyberforum.ru/cgi-bin/latex.cgi?L, R} - функция переходов, где http://www.cyberforum.ru/cgi-bin/latex.cgi?L - левый сдвиг, http://www.cyberforum.ru/cgi-bin/latex.cgi?R - правый сдвиг
То, что оперирует в соответствии с данной спецификацией называется машиной Тьюринга. Определение в соответствии с [Хопкрофт, Ульман, 1979, стр 148].

Неформально это машина, которая оперирует лентой, на которой находятся символы, которые машина может считывать и записывать по одному за раз, используя головку ленты.
[img] http://upload.wikimedia.org/wikipedi...ine_2b.svg.png [/img]
Элементы машины:
1. лента, разбитая на ячейки, располагающиеся рядом друг с другом. Каждая ячейка содержит символ из какого-то конечного алфавита. Алфавит содержит специальный пустой символ. Лента расширяема налево или направо настолько, насколько требуется для вычисления. В ячейках, в которых еще не было ничего записано, находится пустой символ. В некоторых случаях левый конец ленты маркируется специальным символом, а машина расширяется направо.
2. головка двигается по ленте налево или направо и записывает символы в ячейки или считывает их оттуда.
3. регистр состояния, в котором находится состояние машины Тьюринга. В начальном состоянии машины регистр состояния инициализируется
4. конечная таблица инструкций вида http://www.cyberforum.ru/cgi-bin/latex.cgi?{q}_{i}{a}_{j}\rightarrow {q}_{i1}{a}_{j1}{d}_{k}, каждая из которых обозначает, что при нахождении машины в состоянии http://www.cyberforum.ru/cgi-bin/latex.cgi?{q}_{i} и из ячейки считан символ http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{j} машина должна выполнить следующую последовательность операций
- стереть или записать символ ( заменить http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{j} на http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{j1}
- сдвинуть головку в соответствии с http://www.cyberforum.ru/cgi-bin/latex.cgi?{d}_{k}, которое может принмиать значения L для сдвига влево и R для сдвига вправо
- перейти в состояние http://www.cyberforum.ru/cgi-bin/latex.cgi?{q}_{i1}

Кратко, машина Тьюринга имитирует работу CPU компьютера.

Литература:
- http://en.wikipedia.org/wiki/Turing_machine

Добавлено через 14 минут
Тезис Чёрча-Тьюринга в теории вычислений это гипотеза о природе функций, которые вычислимы эффективно, или точнее функции которые вычислимы алгоритмически. Тезис Чёрча-Тьюринга утверждает, что функция вычислима алгоритмически, если она вычислима на машине Тьюринга.

Американский математик Алонсо Чёрч создал метод определения функций, называемый лямбда-исчислением. Он совместно с Стивеном Клини и Джоном Россером создал формальное определение класса функций, которые могут быть вычислены рекурсивно.

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

Тезис Чёрча-Тьюринга не может быть формально доказан.

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

Литература:
- http://en.wikipedia.org/wiki/Church%...3Turing_thesis
- http://en.wikipedia.org/wiki/Lambda_calculus

Добавлено через 36 минут
Формальная грамматика (согласно Хомскому) это кортеж из 4 элементов <N, \Sigma, P, S>, где
N - конечный набор нетерминальных символов
http://www.cyberforum.ru/cgi-bin/latex.cgi?\Sigma - конечный набор терминальных символов, не пересекающийся с N
P - конечный набор правил производства http://www.cyberforum.ru/cgi-bin/latex.cgi?(\Sigma \bigcup N)*N(\Sigma \bigcup N)*\rightarrow (\Sigma \bigcup N)* где * - оператор "звездочка Клини", http://www.cyberforum.ru/cgi-bin/latex.cgi?\bigcup - "объединение множеств"
S\in N - начальный символ

Звездочка Клини
Пусть задано множество http://www.cyberforum.ru/cgi-bin/latex.cgi?V, определяемое следующим образом
http://www.cyberforum.ru/cgi-bin/latex.cgi?{V}_{0}=\begin{Bmatrix}\varepsilon \end{Bmatrix}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{V}_{1}=V
и рекурсивно определено множество
http://www.cyberforum.ru/cgi-bin/latex.cgi?{V}_{i+1}=\begin{Bmatrix}wv \mid w\in {V}_{i}   v\in V\end{Bmatrix}, i>0
Тогда оператор "звездочка Клини" определяется следующим образом:
http://www.cyberforum.ru/cgi-bin/latex.cgi?V* = \bigcup_{i\in N}^{}{V}_{i}=\begin{Bmatrix}\varepsilon \end{Bmatrix}\bigcup V\bigcup {V}_{2}\bigcup {V}_{3}\bigcup {V}_{4}\bigcup...

Пример применения звездочки Клини:
{"ab", "c"}* = {ε, "ab", "c", "abab", "abc", "cab", "cc", "ababab", "ababc", "abcab", "abcc", "cabab", "cabc", "ccab", "ccc", ...}.

Литература:
- http://en.wikipedia.org/wiki/Formal_grammar
- http://en.wikipedia.org/wiki/Kleene_star

Добавлено через 1 час 58 минут
Термин "Архитектура фон Неймана" берет свое начало от работы 1945 года фон Неймана и других "Первый черновик доклада об EDVAC", которая описывает дизайн архитектуры электронного цифрового компьютера. Его частями должны являться:
- процессор, состоящий из арифметическо-логического устройства и регистров
- управляющий автомат, включающий регистр инструкции и счётчик команд
- память для хранения данных и инструкций
- внешнее устройство для хранения данных
- механизмы ввода-вывода.

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

Современная архитектура - Гарвардская, в которой разделены наборы адресов и шин для памяти и инструкций.

Литература:
- http://en.wikipedia.org/wiki/Von_Neumann_architecture

Язык программирования - искусственный язык для передачи инструкций машине.

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

У ЯП две части - синтаксис("форма") и семантика("значение").

Некоторые языки определяются спомощью спецификаций.
Например:
- стандарт языка С : http://www.open-std.org/jtc1/sc22/wg...docs/n1124.pdf
- стандарт языка С++ : open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3376.pdf

Литература:
- http://en.wikipedia.org/wiki/Programming_language
- http://en.wikipedia.org/wiki/Lexical_grammar
- http://en.wikipedia.org/wiki/Abstract_syntax_tree
- http://en.wikipedia.org/wiki/Parsing
- http://en.wikipedia.org/wiki/Visual_...mming_language
- http://en.wikipedia.org/wiki/Context-free_grammar


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

Литература:
- http://en.wikipedia.org/wiki/Syntax_...ming_languages)
- http://en.wikipedia.org/wiki/Regular_expression
- http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form

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

- http://en.wikipedia.org/wiki/Semanti...ming_languages
- http://en.wikipedia.org/wiki/Denotational_semantics
- http://en.wikipedia.org/wiki/Operational_semantics
- http://en.wikipedia.org/wiki/Axiomatic_semantics

Добавлено через 4 часа 10 минут
13-14 вопросы.

Одномерный массив это n-мерный вектор. Объекты реального мира описываются множествами векторов (двухмерный массив). Вектор задает координаты точки в пространстве (скаляры) или отношение между точками. Задание с помощью векторов позволяет понять, как объекты ориентированы по отношению друг к другу(например, вычислением скалярного или векторного произведения). Вычисление скалярного произведение это определение угла между векторами. Преобразованием координат векторов задаются перемещение, вращение, масштабирование объектов. Реальный мир представляет векторное пространство. Объем занятый газом, жидкостью это векторное пространство. Газодинамика, динамика жидкости. Интегрирование это вычисление площадей, объемов.

Двухмерный массив - это матрица размерности mxn. Матрица это набор векторов. Матрицами описываются технические и реальные объекты реального мира и пространство. Преобразование матриц описывает изменение объекта реального мира. Ландшафт описывается матрицами (создается карта высот).

Двухмерный массив это пространство памяти процесса Windows (виртуальное адресное пространство) при представлении в ядре. Это разреженная матрица. Первая размерность массива - это страница, вторая страница матрицы - это данные страницы (т.н. страничная организация памяти операционной системы)

Изображение, фотография могут быть представлена битовым массивом ( битовой картой). Ряды Фурье используются для преобразования сигналов ( при передачи по линиям связи как то ADSL, GPON, Ethernet и т.п.)

Поиск пересечений объектов это решение систем линейных уравнений.

Треугольная матрица это граф (набор вершин и ребер). Графы используются для поиска пути, моделирования ИИ. Поиск пути в графе описывается рекурсивными функциями. Дерево представляет собой частный случай графа. Отсечение многоугольников.

Файл может представлять массив структур. База данных это набор массивов структур.

Массив может хранить мета-данные другого массива. Таблица переходов грамматики ЯП это многомерный массив. Массив это множество. Ассоциативный массив - хэш.

Статическое выделение памяти под массив. Массив хранится в exe и в образе exe в памяти. В exe создаются ячейки для хранения значений элементов массива (и переменных). После компиляции наборы байтов в исполняемом файле представляют собой место для хранения значения переменной. При исполнении программы в эти ячейки записываются значения. В exe предусмотрена секция .data для записи значений переменных и .rdata для записи констант.

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

Выделение памяти под динамический массив осуществляется:
- функциями malloc / free в языке C ( язык процедурно(структурно) ориентирован)
- операторами new / delete в языке C++ ( язык объектно-ориентирован)

Размерность массива может быть задана явно и неявно. Явное задание осуществляется константами, указывающими размерности. Неявное задание осуществляется значениями элементов массива.

Пример динамического задания матрицы:
C++
1
2
3
4
int** m;
m = new int*[5];
for(int i=0;i<5;i++)
m[i] = new int[4];
Пример динамического задания вектора
C++
1
2
int* m;
m = new int[10];
Добавлено через 36 минут
В соответствии с классификацией Хомского существует 4 вида формальных грамматик:
1. регулярные (выполняется конечным автоматом)
2. контекстно-свободные
3. контекстно-зависимые
4. неограниченные (выполяются машиной Тьюринга)
http://ru.wikipedia.org/wiki/Иерархия Хомского

Алгоритм - конечный набор инструкций для вычисления функции. После входа в начальное состояние вычисление осуществляется инструкциями, которые после перехода через конечное множество состояний производят данные вывода, завершая выполнение в конечнои состоянии.
http://en.wikipedia.org/wiki/Algorithm
http://en.wikipedia.org/wiki/Analysis_of_algorithms

Нотация О большое используется для описания предельного поведения функции. Алгоритмы классифицируются в соответствии с данной нотацией по изменению времени выполнения в зависимости от объема входных данных.
http://en.wikipedia.org/wiki/Big_O_notation

Деление алгоритмов по времени выполнения:
- константное O(const)
- линейное O(n)
- логарифмическое O(log n)
- полиномиальное 2^O(log n)
- экспоненциальное 2^poly(n)
http://en.wikipedia.org/wiki/Time_complexity

Р класс при выполнении алгоритма на машине Тьюринга за полиномиальное время
http://en.wikipedia.org/wiki/P_(complexity)

NP класс если неизвестно выполняется ли алгоритм за полиномиальное время
http://en.wikipedia.org/wiki/NP_(complexity)
 
Текущее время: 07:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru