Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Plan_pervogo_zanyatia (1).doc
Скачиваний:
3
Добавлен:
26.03.2016
Размер:
113.66 Кб
Скачать

План первого занятия

Мы будем работать в среде VisualStudio.

Для себя вы можете скачать на сайте MicrosoftсредуVisualStudioExpress2010 (а не 2013!). Вам будет предлагаться русская версия. Не соглашайтесь, и выбирайте английскую.

1. В этой среде основное понятие – проект. Он объединяет код, формы для ввода, пиктограммы и многое другое. В этом году мы будем создавать только консольные приложения. Они включают в себя (в качестве исходных) текстовые файлы с расширениями .c(код) и .h(заголовочные файлы). Сначала мы будем создавать только код и только в одном файле. А заголовочные файлы будем использовать только стандартные (поставляемые с системой).

Не отступим от традиции и напишем программу, которая выдаёт на экран приветствие “Hello,world!”.

Первый проект – приветствие

2. Шаги по созданию проекта

1) File → New→Project.

Выбираем тип проекта VisualC++ →Win32. Выбираем шаблон Win32 Console Applicaton.

Задаём имя hello

Задаём расположение. Изначально предлагается место где-то в глубинах VisualStudio. Это неудобно. ЗадаёмC:\projects(или в ДК на МПR:\projects?). Если такой папки не существует, то она будет создана.

Итак, мы задали тип проекта, его имя и расположение. Щёлкаем OK.

2) Открывается окно Мастера консольных приложений Win32ApplicationWizard. ЩёлкаемNext. Предлагается предкомпилированный заголовок (Precompiledheader). Но мы хотим делать программы, которые годятся и дляUnix. Поэтому выбираем пустой проект (Empty project). Finish.

Проект существует. Нужно его наполнить.

3) Программы на языке Си у нас нет.

Project→AddNewItem

Выбираем категорию Code, шаблонC++File(.cpp).

Задаём имя файла greeting.c. Расширение задавать обязательно. Иначе вы получите по умолчанию .cpp!

Мы получаем окно для ввода текста в файл greeting.c

4) Настройка редактора

Tools → Options → Text Editor (раскрыть) → C/C++ → Tabs. Выбрать Smart Tabs, Tab Size 2 (по умолчанию 4),Indent Size 2 (по умолчанию 4), Insert spaces.

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

5) Набираем текст программы

#include <stdio.h>

Int main() {

puts("Hello, world!");

return 0;

}

Сначала препроцессору (на это указывает # в первой позиции) даётся команда: включить в текст нашей программы содержимого заголовочного файлаstdio.h. Этот файл содержит прототипы стандартных функций ввода/вывода (standard input/otput). Зачем? Увидим дальше, при выполнении упраженений. Нельзя говорить, что этой инструкцией подключется стандартная библиотека. Она подключается всегда!

Далее описывается главная (main) функция. Она возвращает целое число (int) в операционную систему. В нашем примере возвращается 0 (return 0;). Это число могут анализировать командные файлы и в зависимости от его значения принимать решение о вызове других программ. Обычно 0 означет нормальное завершение, а ненулевое число свидетельствет об аномалих в работе программы (например, программа должна открыть файл для чтения, а файла на диске нет). Функция main должна присутствовать всегда. С неё начинается выполнение программы.

Единственная содержательная строка в нашей простейшей программы, вызов функции puts (put string – вывести строку). Эта функция стнадартной библиотеки. Она выводит на экран строку и осуществляет переход на новую строку.

6) Этапы обработки программы: препроцессорная обработка (выполняются директивы, которые начинаются с #), компиляция – compiling (получение объектного файла greeting.obj), компоновка – linking (в частности, присоединение кода библиотечных функций, в нашем случае puts). В результате получаем hello.exe.

Build →Buildhello(Можно иBuild →BuildSolution, т.к. наше «решение» состоит из одного проекта).

Появляется сообщение

------ Build started: Project: hello, Configuration: Debug Win32 ------

Compiling...

greeting.c

Compiling manifest to resources...

Linking...

Embedding manifest...

Build log was saved at "file://d:\projects\hello\hello\Debug\BuildLog.htm"

hello - 0 error(s), 0 warning(s)

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

В нашем случае нет ни ошибок, ни предупреждений.

7) Запуск программы на выполнение

Debug → Start Without Debugging

Появляется консольноеокно. В нём

Hello, world!

Для продолжения нажмите любую клавишу . . .

3. Как делать копииэкранов для отчёта

Установить мышь на заголовке консольного окна.

Нажать правую кнопку мыши.

Появляется контекстное меню.

Выбираем Изменить → Пометить

Красим мышью и нажимаем Enter (вывод помешается в буфер)

Вставляем в документ Word(Ctrl+V).

4. Понимание роли заголовочногофайла.

Выполним серию заданий

1) Закомментируем первуюстроку программы

//#include <stdio.h>

Build → Build hello. Можно коротко F7.

----- Build started: Project: hello, Configuration: Debug Win32 ------

Compiling...

greeting.c

d:\projects\hello\hello\greeting.c(5) : warning C4013: 'puts' undefined; assuming extern returning int

Linking...

Embedding manifest...

Build log was saved at "file://d:\projects\hello\hello\Debug\BuildLog.htm"

hello - 0 error(s), 1 warning(s)

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Мы получили предупреждение: функцияputsне определена. Всё равно запускаем программу

Debug →StartWithoutDebugging. Можно короткоCtrl+F5.

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

2) Сделаем ошибку: вызовем putsс двумя аргументами

puts("Hello", "world!");

Сообщения при компиляции те же. Но выводится только первое слово. Это ошибка!

3) Вернём строку#include <stdio.h>(снимем символ комментария – два слэша)

warning C4020: 'puts' : too many actual parameters

слишком много аргументов.

Как компилятор узнал об этом? Для этого надо в папке Includeнайти файлstdio.hи посмотреть его содержимое. Но мы поступим проще: поставим курсор на вызов функцииputsи нажмём правую кнопку мыши. Выберем пункт контекстного менюGotodefinition. В отдельной вкладке открывается файлstdio.h. Мы видим прототип функцииputs.

_CRTIMP __checkReturn_opt int __cdecl puts(__in_z const char * _Str);

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

4. Как выводить русскиесообщения

1) Попробуем вывести на экран русский текст

puts("Привет!");

на экране:

ЁштхЄ!

Только восклицательныйзнак выводится правильно.

Научное объяснение такое. При вводе текста программы используется кодировкаcp1251 (Windows), а при выводе на экран кодировкаcp866 (MSDOS). Английские буквы там кодируются одинаково, а русские – нет.

2) Первое решение: перенаправлениевывода в файл

Project → hello Properties, раскрыть Configuration Properties → Debugging → Command Arguments. Вводим >out.txt. Символ > означает перенаправление вывода на экран в файл. Имя файла, разумеется, любое. Расширение .txt.

F7, Ctrl+F5

File→Open→File. Выбираем в окнеout.txt. В файле всё отображается

Но это решение не подходит для программ, которые проводят диалог с пользователем.

Уберём перенаправление вывода в файл.

3) Использование локализации

#include <stdio.h>

#include <locale.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]