Ввод и вывод алфавитно-цифровой информации.



Антонюк В.А., Задорожный С.С.

"Программирование на С++"
Методическое руководство для студентов 1 - 2 курса.

Тема 1. Первая программа на С.

История языка программирования С.

История языка С начинается с операционной системы UNIX, которая была написана на С. Общая среда разработки UNIX/C создала языку С репутацию языка системного программирования, так как он удобен для написания компиляторов и операционных систем. Но С оказался удобным и для написания важнейших программ в самых различных областях.

Первоначально UNIX была разработана в 1969 году на компьютере DEC PDP-7 в лаборатории фирмы Bell. Вскоре Кен Томпсон создал компилятор нового языка, названного В. После этого появился новый компьютер, названный PDP-11 (отечественный аналог —
СМ-3). Это был довольно слабый по теперешним меркам компьютер (24 Кб оперативной памяти и 512 Кб памяти на жестком магнитном диске). Попытка написания операционной системы UNIX для этого компьютера на языке В не увенчалась успехом, т.к. этот язык ориентировался на слова, а PDP-11 — на байты. Кроме того, он был языком интерпретирующего типа, что существенно замедляло выполнение программ. В результате в 1971 году была начата работа по созданию языка С.

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

Достоинства языка С:

малый набор синтаксических правил,

богатый набор библиотечных функций,

высокое быстродействие созданных программ,

слабая типизация (свободное манипулирование данными),

структурированность,

поддержка модульного программирования,

простой интерфейс с ассемблерными программами,

эффективность использования памяти,

переносимость.

Недостатки языка С:

слабая типизация (необходим контроль со стороны программиста),

отсутствие проверок на этапе исполнения.

 

Среда программирования «Microsoft Visual Studio.net».

Среда программирования «Microsoft Visual Studio.net» представляет собой пакет программ для разработки приложений, работающих под управлением ОС Microsoft Windows. Кроме этого, код может быть адаптирован для компьютеров серии Macintosh и для RISK процессоров. В пакете имеются все необходимые библиотеки для создания действительно надежного приложения Windows. Непосредственно в среду включен редактор ресурсов для диалоговых окон, пиктограмм, растровых изображений, курсоров, меню, списков. Пользуясь библиотекой классов MFC можно создавать сложные приложения, такие как OLE серверы.

Возможности отладчика доступны непосредственно из среды Visual C++. Он позволяет выполнять программу в пошаговом режиме, считывать и изменять содержимое переменных, и даже двигаться назад по коду.

Запускается среда Visual C++ путем запуска программы devenv.exe, обычно находящейся в папке
“C:\Program Files\Microsoft Visual Studio .NET\Common7\IDE ”.

Первое, что нужно сделать для создания новой программы – это создать новый проект. В меню File выберите пункт New->Project. Эта опция открывает окно New Projects. Здесь выберите тип проекта “Visual C++ Project”, шаблон (template) проекта “Managed C++ Empty Project” – для консольного приложения или “Win32 Project” – для Windows приложения, в поле location укажите имя папки проекта на Вашем домашнем диске, (например “H:\first”), а в поле Name – имя проекта. Указанные имя папки и имя проекта будут использоваться для размещения новой рабочей области проекта. Далее необходимо нажать кнопку ОК для создания проекта. Параметры проекта записываются в файл *.sln.

При последующем открытии проекта необходимо выполнить команду меню File – Resent Projects или File – Open Solution и указать расположение sln файла.

Для добавления нового файла к проекту выполнить команду меню “Project – Add New Item”. В качестве шаблона надо выбрать C++, в поле “Name” ввести название файла и нажать кнопку ОК. Если файл уже существует, то добавить его к проекту можно командой меню “Project – Add Existing Item”.

Открыть файл, включенный в проект, для редактирования можно выбрав в окне проекта закладку solution и выполнив двойной щелчок по нужному файлу. Окно проекта можно закрыть щелкнув мышкой по крестику в правой верхней его части (как и любое другое окно). Чтобы его снова отобразить щелкните по кнопке “Solution Explorer” на панели инструментов.

После того, как все необходимые файлы подключены к проекту, среда компилятора готова к выполнению компиляции и сборки (построения исполняемого файла). Процесс можно начать щелкнув выполнив команду меню “Build – Build solution”. Для компиляции всех файлов, не проверяя даты создания файлов используйте команду “Build – Build All”.

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

Если ошибок нет, то процесс сборки проходит успешно и программу можно запустить на выполнение, выполнив команду меню Debug – Start для выполнения программы в отладочном режиме. Программа будет выполняться до первой точки останова, которую можно установить, предварительно нажав кнопку “Debug – New Breakpoint”. Для пошагового выполнения можно воспользоваться кнопками Step Into, Step Over, Continue. Команда меню “Debug - Quick Watch” открывает окно диалога, позволяющее просматривать и менять значение переменных. Кроме того их значения можно просмотреть в окнах Watch и Locals.

Структура программы.

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

Текстовый файл начинается с команд препроцессора
#include <имя файла заголовков .h>. Далее следует описание функций, текст которых находится в другом файле или в этом же файле, но в конце файла. Описание глобальных переменных предшествует тексту функций. В любом месте программы можно вставлять комментарии, которые начинаются двумя знаками деления (//) и идут до конца строки. В одном из файлов должна существовать функция с именем main – для DOS приложения, или WinMain – для Windows приложения. Эта функция является точкой входа в программу и с нее начинается сборка.

Пример простейшей программы:

//

// Это первая наша программа

// Автор – Я, 2004

//———————————-

#include <stdio.h>

int main()

{

       printf(“Это пример простейшей программы.”);

       return 0;

}

 

В начале программы приведен комментарий, описывающий программу, автора и дату создания. Комментарий начинается двумя косыми чертами (//) и идет до конца строки. Можно выделить участок текста как комментарий, если начать его знаками /* и закончить знаками */.

Строка #include <stdio.h> подключает файл заголовков стандартной библиотеки ввода-вывода.

Далее следует функция main, которая не имеет параметров. Она возвращает в качестве результата целое число(int). Тело функции main заключено в фигурные скобки.

Первым оператором функции main является вызов функции printf, которая вызывается для вывода на экран текста, заключенного в кавычки. Каждый оператор в языке С заканчивается точкой с запятой.

Оператор return используется для завершения функции и возврата целого числа «нуль».

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

Представление данных.

При написании программы на С используются числовые и текстовые константы и переменные.

Целые числа записываются как последовательность цифр. Впереди числа может стоять его знак (плюс или минус), в конце - символ L(эль) для представления числа двойной длины. Числа с плавающей запятой записываются в виде +1.234e-56 (знак числа, целая часть, точка, дробная часть, символ e, знак порядка, порядок). Эта запись соответствует числу 1,234*10-56. Можно опускать различные части представления, важно только, чтобы число не выглядело как целое (1. .12 1e-5 – это примеры чисел 1, 0,12, 0,00001). Текстовые строки записываются в двойных кавычках, одиночные символы в одинарных кавычках.

Чтобы выделить память для данных конкретного типа необходимо определить переменную. Переменные, используемые в программе, должны быть объявлены. Объявление начинается с указания типа переменной, за которым пишутся имена переменных, разделенные запятыми. Именами переменных может быть любой набор букв латинского алфавита , цифр и знака _ (подчеркивание). Первой должна быть буква. Заглавные и строчные буквы различаются. Каждая переменная должна быть инициализирована. Это можно сделать непосредственно в описании, например целые переменные a_9, x7a и Alpha описываются следующим образом:

int a_9, x7a=3, Alpha = 0; a_9=-27345;

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

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

const int buffersize=128;

В этом случае компилятор разрешает только использовать указанную переменную.

В языке имеются следующие типы данных:

char – отдельный текстовый символ, обычно он занимает один байт,

int – целое число, обычно занимает 2 байта,

long (int) – целое число двойной длины, обычно занимает 4 байта,

float – числа с плавающей точкой обычной точности, занимают 4 байта,

double – числа с плавающей точкой двойной точности, занимают 8 байт,

long double – числа с плавающей точкой двойной точности, занимают 10 байт,

void - величина нулевой длины и не имеющая значения.

Дополнительно может использоваться модификатор типа unsigned, который позволяет объявлять некоторые типы переменных как беззнаковые.

Кроме определения типа, можно к описанию переменной добавить спецификатор класса памяти.

Спецификаторы auto и register указывают на локальное время жизни переменной, а спецификаторы static и extern – на глобальное. Объект с глобальным временем жизни существует на протяжении всего времени выполнения программы.

Если переменная объявлена на внешнем уровне (допустимы классы памяти static или extern), то она видима во всей оставшейся части файла. Класс extern указывает на то, что переменная описана или в другом файле или в этом же файле, но позже.

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

Операции.

В языке С имеется большой набор операций, Стандартный набор включает операции сложения +, вычитания -, умножения *, деления /, остатка от деления %. Дополнительно имеются операции увеличения на 1 (автоинкремента)++, автодекремента --, поразрядного сдвига вправо >> и влево <<. Кроме этого, имеются поразрядные логические операции И &, ИЛИ | и НЕ !.

Присваивание в языке С выполняет операция, а не оператор. Результат присваивания – это число, которое тоже можно присваивать, например:

x=5+(y=2);

Дополнительно в язык включены составные операции присваивания вида (операция)= позволяющие сжато записывать выражения, например r*=5+x; означает r=r*(5+x) .

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

Особенности компьютерных вычислений налагают дополнительные требования к выражениям. Необходимо следить за переполнением чисел, а также за возможностью их обнуления. Например, выражение “x*2” может дать неожиданный отрицательный результат, если x - это целое число, большее, чем 32767/2, а “x/(x+1)” дает ноль.

Следует иметь ввиду, что в выражениях выполняется автоматическое преобразование типов данных, если это необходимо (в смешанных операциях). Преобразования выполняются в соответствии с иерархией типов (int -> long -> float ->double) и порядком вычислений. Пример: x=y+i/j; Вначале выполняется операция деления. Если i и j – целые, то выполняется их целочисленное деление, результат которого преобразуется в плавающий формат и складывается с y.

Ввод и вывод алфавитно-цифровой информации.

Для ввода и вывода используются стандартные функции printf и scanf из библиотеки stdio.h. Формат функций:

printf(«строка форматирования»,перем1,перем2,…);

scanf(«строка форматирования»,&перем1,&перем2,…);

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

% Размер Поля . Точность Длина Тип Переменной

Размер Поля – количество знаков, которое занимает поле,

Точность – количество знаков после десятичной точки,

Длина – символ l (эль) для переменной типа double или long int, L - для long double,

Тип Переменной – i,d - целые числа ,f,g,e - числа с плавающей запятой, c - символ, s - строка текста, заканчивающаяся нулем.

Пример: “%10.2lf” (число типа double занимает 10 символов, 2 символа после запятой).

Второй управляющий символ - это \. Он предназначен для вставки специальных символов: \n - символа перехода на новую строку, \0 - символа ноль, \\ - символа \ ,\’ - одинарной кавычки, \”- двойной кавычки, \% - символа %.

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

Математические функции.  

В арифметических выражениях можно использовать большой набор математических функций. Они определены в заголовочном файле <math.h>. Функция вызывается путем указания ее имени, за которым в круглых скобках следует список аргументов, например

y=2*M_PI/asin(-0.5);

// M_PI-константа, определенная в math.h,

// asin - функция arcsin.

Практическое задание №1.

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

Для операций консольного ввода‑вывода используются функции библиотеки stdio.h ( printf и scanf ), для вычисления математических функций — библиотека math.h ( функции fabs, exp, log, sin, cos и т.д. ).

 

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

1)

2)

3)

4)

5)

6)

7)

8)

9)                   


Дата добавления: 2018-02-15; просмотров: 593; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!