Основы программирования на языке C


         

Введение в программирование на C# 2.0

ADO .NET (ActiveX Data Objects .NET) является набором классов, реализующих программные интерфейсы для облегчения подключения к базам данных из приложения независимо от особенностей реализации конкретной системы управления базами данных и от структуры самой базы данных, а также независимо от места расположения этой самой базы — в частности, в распределенной среде (клиент-серверное приложение) на стороне сервера.
ADO .NET широко используется совместно с технологией web-программирования с использованием объектов ASP .NET для доступа к расположенным на сервере базам данных со стороны клиента.

Реляционные базы данных. Основные понятия
Работа с базами данных
Доступ к отсоединенным данным
Введение в программирование на C# 2.0
ADO .NET. Доступ к данным
ADO .NET. Объектная модель
DataTable
События класса DataTable
Основы ADO .NET
DataColumns

Основы программирования на языке C

Язык программирования Си был разработан и реализован в 1972 году сотрудником фирмы AT&T Bell Laboratories Денисом Ритчи. Прообразом языка Си для Д. Ритчи послужил язык Би, разработанный Кеном Томпсоном. Он является результатом эволюционного развития языков BCPL (Richards, M., "BCPL: A. Tool for Compiler Writing and System Programming", Proc. AFIPS SJCC, 34, 557-566, 1969) и Би (Johnson, S. C., and B. W. Kernighan, "The Programming Language B", Comp. Sci. Tech. Rep. No. 8, Bell Laboratories. 1973). Основным достоинством языка Си по сравнению с языками BCPL и Би является введение в него типов данных. Язык Си был разработан во время создания операционной системы UNIX (OC UNIX). Развитие языка Си продолжалось и после окончания его разработки и касалось, в частности, проверки типов данных и средств, облегчающих перенос программ в другую среду. Например, разработка проекта переноса OC UNIX на компьютер Interdata 8/32 привела к некоторым добавлениям в язык Си, а именно, к включению в язык таких средств, как объединение (union). Позднее были сделаны попытки включения в язык Си средств абстрагирования данных. В настоящее время рассматривается проект стандарта ANSI C - стандарт языка Си Американского национального института и the C Programming Language - Reference Manual, AT&T Bell Laboratories. С языка Си разработаны совместимые по входному языку трансляторы для 40 типов вычислительных систем, начиная от 8-разрядных микропроцессоров и кончая CRAY-1 - одним из самых мощных в настоящее время суперкомпьютеров. В ходе работ по созданию Мобильного Транслятора с языка Си сам он был переработан для повышения мобильности написанных на нем программ.

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

Будущее языка Си
Использование языка Си
Использование текстового редактора
Исходные и выполняемые файлы
Пример простой программы на языке Си
Пояснения к программе
Первый просмотр
Первый просмотр - 2
Второй просмотр
Второй просмотр - 2

Основные типы данных
Чтобы реализовать алгоритм, программам необходимо работать с данными - числами, символами, т.е. объектами, которые несут в себе информацию, предназначенную для использования. Некоторые данные устанавливаются равными определенным значениям еще до того, как программа начинает выполняться, а после ее запуска такие значения сохраняются неизменными на всем протяжении работы программ. Эти данные называются константами.

Описание различных типов
Описание различных типов - 2
Символьные строки
Препроцессор языка Си
Препроцессор языка Си - 2
Препроцессор языка Си - 3
Основные типы данных
Переменные и константы
Переменные и константы - 2
Переменные и константы - 3

Основные операции
Рассмотрим способы обработки данных - для этого язык Си имеет широкий набор возможностей. Основные арифметические операции: сложения, вычитания, умножения, деления. Операции в языке Си применяются для представления арифметических действий. Например, выполнение операции + приводит к сложению двух величин, стоящих слева и справа от этого знака. Рассмотрим операции =, +, -, *, /.

Операция присваивания: =
Операция сложения: +
Операция вычитания: -
Операция изменения знака: -
Операция умножения: *
Операция деления: /
Операция деления: / - 2
Дополнительные операции
Операция деления по модулю: %
Операция увеличения: ++

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

Простейшие выражения
Операторы
Составные операторы
Оператор цикла while
Изучение функций printf( ) и scanf( )
Изучение функций printf( ) и scanf( ) - 2
Изучение функций printf( ) и scanf( ) - 3
Применение функции scanf( )
Применение функции scanf( ) - 2
Применение функции scanf( ) - 3

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

Преобразование типов
Разбор программы
Операция приведения
Неявное преобразование типа
Арифметические преобразования
Явные преобразования типов
Синтаксис типов
Эквивалентность типов
Преобразование типов
Разбор программы

Ввод и вывод одного символа
В данном разделе мы рассмотрим функции, применяемые при вводе и выводе. кроме того мы коснемся других аспектов этого понятия. Под функциями ввода-вывода подразумеваются функции, которые выполняют транспортировку данных в программу и из нее. Мы уже использовали две такие функции: printf( ) и scanf( ). Теперь рассмотрим несколько других возможностей, предоставляемых языком Си.

Буферы
Буферы - 2
Чтение одной строки
Чтение файла
Чтение файла - 2
Переключение и работа с файлами
Переключение и работа с файлами - 2
Переключение ввода
Комбинированное переключение
Операционные системы, отличные от OC UNIX

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

Оператор if
Расширение оператора if
Операции отношения
Что такое истина
Осложнение с понятием истина
Логические операции
Операция условия: ?:
Множественный выбор
Множественный выбор - 2
Выбор вариантов

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

Цикл с предусловием
Цикл с предусловием - 2
Цикл со счетчиком
Цикл с постусловием
Цикл с постусловием - 2
Другие управляющие операторы
Оператор break
Оператор continue
Оператор goto
Структурное программирование

Создание и использование функций
Принципы программирования на языке Си основаны на понятии функции. Мы уже рассмотрели несколько функций: printf( ), scanf( ), getchar( ), putchar( ). Эти функции являются системными, однако мы создали и несколько своих собственных функций под общим именем main( ). Выполнение программы всегда начинается с команд, содержащихся в функции main( ), затем последняя вызывает другие функции. Рассмотрим вопрос, как создавать свои собственные функции и делать их доступными для функции main( ), а также для других функций.

Аргументы функции
Возвращение значений
Возвращение значений - 2
Локальные переменные
Нахождение адресов
Указатели, первое знакомство
Операция косвенной адресации *
Описание указателей
Подведем итоги по указателям
Функции с переменным количеством аргументов

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

Автоматические переменные
Внешние переменные
Статические переменные
Внешние статические переменные
Регистровые переменные
Регистровые переменные - 2
Классы памяти и область действия
Классы памяти и область действия - 2
Автоматические переменные
Внешние переменные

Символические константы: #define
Если в качестве первого символа в строке программы используется символ #, то эта строка является командной строкой препроцессора (макропроцессора). Командная строка препроцессора заканчивается символом перевода на новую строку. Если непосредственно перед концом строки поставить символ обратной косой черты "\", то командная строка будет продолжена на следующую строку программы.

Замена идентификаторов
Использование аргументов с #define
Макроопределение или функция?
Включение файла: #include
Условная компиляция
Номер строки и имя файла
Реакция на ошибки
Пустая директива
Прагмы
Встроенные макроимена

Указатели и массивы
Массив является сложным объектом, состоящим из объектов-компонентов, называемых элементами одного и того же типа. Простые определения массива имеют вид Тип данных x[n1][n2]...[nk] Где x - идентификатор, определяемый в качестве имени массива, а ni - размерности массива. Массив x называется k-мерным массивом с элементами типа тип данных. Элементы i-го измерения имеют индексы от 0 до ni-1. Тип элемента массива может быть одним из основных типов, типом другого массива, типом указателя (pointer), типом структуры (struct) или типом объединения (union).

Массивы
Указатели
Динамические объекты
Создание динамических объектов
Доступ к динамическим объектам
Время жизни динамического объекта
Связь между указателями и массивами
Строки - связи между указателями и массивами
Инициализация массивов и классы памяти
Инициализация массивов и классы памяти - 2

Строковые константы
В конце каждой строки компилятор помещает нулевой символ '\0', отмечающий конец данной строки. Каждая строковая константа, даже если она идентична другой строковой константе, сохраняется в отдельном месте памяти. Если необходимо ввести в строку символ кавычек ("), то перед ним надо поставить символ обратной косой (\). В строку могут быть введены любые специальные символьные константы, перед которыми стоит символ \.

Строковые константы
Массивы символьных строк и их инициализация
Массив и указатель: различия
Указатели и строки
Ввод-вывод строк
Обработка строк
Обработка строк - 2
Обработка строк - 3

Определение структурных переменных
Структура, запись в терминологии языка Паскаль и Ада, - это составной объект, в который входят компоненты любых типов, за исключением функций. В отличие от массива, который является однородным объектом, структура может быть неоднородной. Тип структуры указывается записью вида struct{ список описаний } В структуре должен быть указан хотя бы один компонент. Указатель типа структуры используется для определения структур.

Определение структурных переменных
Определение структурных переменных - 2
Доступ к компонентам структуры
Поля битов в структурах
Объединения
Перечисления
Переменные структуры
Указатели и структуры
Массив структур
Переименование типов

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

Доступ в библиотеку языка Си
Автоматический доступ
Включение файла
Включение библиотеки
Связь с файлами
Открытие файла: fopen( )
Открытие файла: fopen( ) - 2
Закрытие файла: fclose( )
Текстовые файлы с буферизацией
Ввод-вывод текстового файла: getc( ), putc( )

Функция получения случайных чисел
Сейчас мы покажем генератор псевдослучайных чисел. Это означает, что фактическая последовательность чисел предсказуема, но они разбросаны довольно равномерно в пределах возможного диапазона значений. Схема начинает с числа, называемого "зерно". Она использует его для создания нового числа, которое становится новым зерном. Затем новое зерно можно использовать для создания более нового зерна и т.д.

Поиск узлов из простых чисел
Поиск узлов из простых чисел - 2
Матрица инцидентности
Матрица инцидентности - 2
Структуры данных
Стеки
Очереди
Связанные списки
Связанные списки - 2
Все операции со стеком

Язык Си

Си - универсальный язык программирования. Он тесно связан с системой UNIX, так как был разработан в этой системе, которая как и большинство программ, работающих в ней, написаны на Си. Однако язык не привязан жестко к какой-то одной операционной системе или машине. Хотя он и назван "языком системного программирования", поскольку удобен для написания компиляторов и операционных систем, оказалось, что на нем столь же хорошо писать большие программы другого профиля.
Многие важные идеи Си взяты из языка BCPL, автором которого является Мартин Ричардс. Влияние BCPL на Си было косвенным - через язык B, разработанный Кеном Томпсоном в 1970 г. для первой системы UNIX, реализованной на PDP-7.
BCPL и B - "бестиповые" языки. В отличие от них Си обеспечивает разнообразие типов данных. Базовыми типами являются символы, а также целые и числа с плавающей точкой различных размеров. Кроме того, имеется возможность получать целую иерархию производных типов данных из указателей, массивов, структур и объединений. Выражения формируются из операторов и операндов. Любое выражение, включая присваивание и вызов функции, может быть инструкцией. Указатели обеспечивают машинно-независимую адресную арифметику.

Обзор языка
Списки аргументов переменной длины
Стандартная библиотека

Неудачный выбор приоритетов на PDP-11 и его наследие на Си

Отлаживал как-то мыщъх одну свою программу, написанную на Си? и периодически делающую из чисел винегрет или выдающую критическую ошибку access violation при трудно воспроизводимых обстоятельствах. Тщательная проверка исходного текста "глазами" ровным счетом ничего не дала. Программа продолжала выпендриваться, сроки сдачи проекта поджимали, дедлайн нависал над головой Дамокловым мечом, мыщъх нервничал, много курил, нервничал, закидывался ноотропами, не спал ночами, высаживался на жуткую измену, а глубоко укоренившийся баг игнорировал всякие попытки вытащить его из норы.

Продолжение


История денег - перейти
История финансовых потрясений - перейти
История реформ - перейти
Покупательная способность денег - перейти
Способности денег - перейти
История менеджмента - перейти
История экономики - перейти
История мировой экономики - перейти
Работа с Photoshop - перейти
Самоучитель по Adobe Photoshop 5.5 - перейти
Приступаем - перейти
Настройка - перейти
Инструменты - перейти
Каналы - перейти
Слои - перейти