Раздел 1 ознакомление с предприятием 


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



ЗНАЕТЕ ЛИ ВЫ?

Раздел 1 ознакомление с предприятием



Раздел 1 ознакомление с предприятием

-Назначение и сетевая структура предприятия

Раздел 2 изучение технологического процесса обработки информации на предприятии

- программное и аппаратное обеспечение данного предприятия

-организация вычислительных работ и обработка информации на ПК

-обслуживание и эксплуатация ВТ

-современные информационные технологии

 

Введение

 

Практика была пройдена в КГУ областная специальная школа интернат для детей с нарушениями зрения города Есик.

Целью производственной практики является закрепление полученных теоретических знаний, и приобретение практического навыка.

Для реализации данной цели необходимо решить следующие задачи:

1. Получение общего представления о деятельности предприятия;

2. Ознакомление с основными задачами и функциями информационного вычислительного центра;

3. Ознакомление с программным обеспечением предприятия;

4. Получение практических навыков реальной работы в данном отделе, закрепление и применение знаний, полученных в ходе обучения.

Цель и задачи практики

На период практики от руководителя практики было получено следующее задание:

- Изучение программы Google SketchUp8

- отладка локальной сети в различных кабинетах колы

- настройка сети wi-fi и смена пароля

- изучение базовых приемов обработки строк в языке программирования C++.

- изучение приемов работы с массивами, а также особенностей их использования

- Изучение семейства программных продуктов ArcGIS

 

 

Google SketchUp

Google SketchUp - программа для разработки трехмерных моделей домов, гаражей, террас, пристроек, деревянных проектов и даже космических кораблей.
Google SketchUp - простая в использовании программа для создания и модификации трехмерных моделей домов, объектов и прочих архитектурных сооружений. Вместе с Google SketchUp вы сможете добавлять новые детали, текстуры, стекла и прочие элементы к своим моделям. Воплотите свои фантазии в реальность.
Google SketchUp оказался гениальной по своей простоте 3D редактор. Хватаете пяти минуть, чтоб разобраться в его основах и увидеть первые результат своей работы, этот подвиг совершают совершенно неподготовленные.
Google SketchUp - Программа для создания, просмотра и редактирования 3D проектов домов, дизайна интерьера, всевозможных ландшафтов, объектов и прочих архитектурных сооружений. Вместе с Google SketchUp вы сможете добавлять новые детали, текстуры и всевозможные элементы к своим моделям. В комплекте поставляются уже встроенные реалистичные текстуры. В состав Google SketchUp также включен плагин для Google Earth, позволяющий после создания 3D объекта размещать его в картографическом сервисе поискового гиганта, а так же посылать для публичного использования в Google 3D Warehouse. 3D Warehouse позволяет добавлять, искать, просматривать и скачивать SketchUp модели.
Google SketchUp – это простой и удобный инструмент для 3D моделирования. С его помощью каждый желающий может смоделировать все что угодно, от кофеварки до небоскреба. Редактор создан с расчетом на непрофессионалов и позволяет создавать макеты с использованием привычных инструментов – «линейка», «карандаш», «транспортир», «ластик» в трех плоскостях. Однако, несмотря на простоту Google SketchUp предоставляет пользователям такие полезные возможности как:

  • возможность задавать точные размеры в миллиметрах;
  • использование слоев;
  • возможность загружать готовые 3D модели.

Проект дома можно создавать в различной степени детализации.

 


Вариант 1. Для того чтобы определиться с объемно - планировочными решениями. То есть как будет выглядеть ваш домик со всех сторон, как будет выглядеть интерьер дома. Варианты отделки дома. Более быстрый и простой и позволяет увидеть ваш дом. Как он внешне будет смотреться

Вариант 2. Можно проектировать создавая отдельные детали и конструкции из которых вы планируете строить свой дом. И из этих конструкций пробовать «монтировать» в программе, то что потом вы будете делать на стройплощадке. Позволяет тщательно запланировать все конструктивные элементы дома, увидеть возможные ошибки, которые возможны в процессе строительства. Найти наиболее оптимальные конструктивные решения тех или иных узлов.

В идеале лучше использовать и первый и второй вариант.

 

Настройка принтера.

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

3.2. Использование принтера, который находится в общем доступе, в локальной сети
На других ПК заходим в Пуск - Панель управления - Принтеры и факсы. Нажимаем на «Установка принтера», после чего следуем указаниям мастера установки принтера.

I. Выбираем «Сетевой принтер или принтер, подключенный к другому компьютеру»
Переходим к следующему этапу.

II. Ставим выбор на «Обзор принтеров»
Делаем обзор принтеров в локальной сети.

III. Если планируется частое или постоянное использование данного принтера выставляем в пункте «Использовать этот принтер по умолчанию?» - «Да».


 

СОЕДИНЯЕМ 3 ПК ЧЕРЕЗ СЕТЕВЫЕ КАРТЫ ПО ТИПУ СЕТЕВОЙ МОСТ

Не обязательно иметь роутер или свич, чтобы соединить 3 ПК, достаточно докупить еще одну сетевую карту.
Этот вариант дешевле чем свич, т.к. свич в 3 раза дороже сетевой карты. Чтобы соединть 3 компьютера, нужно выбрать один из них и сделать его ведущим, два других ведомые. На ведущий компьютер нужно поставить 2 сетевые карты. Затем соединить с 2-мя другими витой парой и создать Сетевой Мост. Затем расшарить интернет и локальные папки, при этом ведомый компьютер должен быть постоянно включен и подключен к Интернету.

 

 

СОЕДИНЯЕМ 3 КОМПЬЮТЕРА И БОЛЕЕ (ДО 20 ПК) ЧЕРЕЗ ВНЕШНИЙ ХАБ (СВИЧ ИЛИ СЕТЕВОЙ КОНЦЕНТРАТОР)

 

Как подключить 3 компьютера и более между собой и к сети Интернет, при условии что нужно распределять каждому одинаковую скорость?

Самое простое решение – это купить свич (Hab), на 5 или более портов, N кабелей (с учетом расстояния каждого от предположительного места положения свича к каждому компьютеру) с обжимкой комп-свич (уже об этом выше говорилось), где N – количество компьютеров. После приобретения необходимого, нужно соединить компьютеры со свичем. После этого, настраиваем компьютеры также, как с подключением между двумя компьютерами.

 

 

СОЕДИНЯЕМ 3 КОМПЬЮТЕРА И БОЛЕЕ (ДО 6 ПК) ЧЕРЕЗ ВНУТРЕННИЙ ХАБ (HUB)

Создаем локалку при помощи внутреннего 5 портового 100 Мбитного хаба

Этот вариант отлично подойдет для организации сети для дома и небольшого офиса (до 6 компьютеров), используя концентратор (или, как еще говорят, хаб), например, Genius GF4050C. Преимущество данного PCI концентратора состоит в том, что он ставится внутрь компьютера как обычная плата расширения. И за совсем небольшие деньги ($45) вы получите 100 Мегабитную скоростную сеть в своем офисе. Но следует учесть, что при выключении сервера (ПК, где установлен хаб) сеть работать не будет. Однако, концентратор не требует лишней розетки питания и не занимает на столе место.

 

СОЕДИНЯЕМ 5-20 И БОЛЕЕ ПК ЧЕРЕЗ ЦЕНТРАЛЬНЫЙ ПК-СЕРВЕР

Создаем сеть с центральным компьютером-сервером, который служит в качестве свича.
Этот вариант предназначен для больших офисов и корпоративных организаций. Можно соединить между собой более 20 ПК. В качестве концентратора служит Центральный компьютер-сервер с установленной на нем какой-либо сервеной ОС, например, FreeBSD + свич.

После превышения количества компьютеров в локалке больше 20-ти, нужно отказаться от свича (хаба) и ставить центральный сервер, т.к. при таком количестве ПК, передача данных будет приводить к торможению компьютера. Это происходит из-за лишней нагрузки на процессор при передаче/приеме данных, поскольку приходится много обрабатывать, например, когда скачивается фильм (ресурсы уходят на создания пакетов у того, где считывают данные, и разбор пакетов, где происходит прием данных). Все это приводит к торможению производительности обеих компьютеров: у того, кто считывает и больше всего у того, где считывают данные. Если стоит ценр. сервер, то этим делом занимается он, а не компьютеры-клиенты. Именно поэтому и ставят центральный сервер. Свич берет на себя некоторую часть обработки, но этого недостаточно при большом количестве подкюченных к сети ПК.

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

 

СОЕДИНЯЕМ 3 ПК И БОЛЕЕ ЧЕРЕЗ КОМБАЙНЫ (ADSL+WIFI+SWITCH/HUB+ROUTER 4-PORT)

Этот вариант отлично подходит для тех, у кого Интернет по выделенной линии (цифр. тел. линия) с использованием ADSL-модема.

Для этого покупаете так называемый "комбайн" (ADSL+WiFi+Router+Switch) и с его помощью создаете локальную сеть для ПК через комбайн, а для ноутбуков через WiFi соединение. Можно соединять по WiFi и обычные ПК, если купить и подключить к ним внутреннюю PCI WiFi карту.

 

 

ВВЕДЕНИЕ

Язык Си, созданный Денисом Ритчи в начале 70-х годов в Bell Laboratory американской корпорации AT&T, является одним из универсальных языков программирования. Язык Си считается языком системного программирования, хотя он удобен и для написания прикладных программ. Среди преимуществ языка Си следует отметить переносимость программ на компьютеры различной архитектуры и из одной операционной системы в другую, лаконичность записи алгоритмов, логическую стройность программ, а также возможность получить программный код, сравнимый по скорости выполнения с программами, написанными на языке ассемблера. Последнее связано с тем, что хотя Си является языком высокого уровня, имеющим полный набор конструкций структурного программирования, он также обладает набором низкоуровневых средств, обеспечивающих доступ к аппаратным средствам компьютера. С 1989 года язык Си регламентируется стандартом Американского института национальных стандартов ANSI С. В настоящее время, кроме стандарта ANSI C разработан международный стандарт ISO C (International Standard Organization C).

В пособии в разделах 1-6 рассматриваются основные конструкции языка Си (общие для Си и Си++). Примеры программ приведены в разделе 7.

   

 

РАЗДЕЛ 1. ОСНОВНЫЕ ПОНЯТИЯ И ДАННЫЕ

Основные понятия языка

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

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

В персональном компьютере символы хранятся в виде кодов. Соответствие между каждым символом и его кодом задается специальной кодовой таблицей. На нее разработан стандарт ASCII, поэтому коды символов называют ASCII-кодами.

Различают видимые и управляющие символы. Первые могут быть отображены на экране дисплея либо отпечатаны на принтере. Вторые вызывают определенные действия в машине, например: звуковой сигнал - код 710, возврат курсора на один шаг - код 810, горизонтальная табуляция - код 910, перевод курсора на новую строку - код 1010, перемещение курсора в начало строки - код 1310 и т.д. Такие управляющие символы имеют десятичные номера 0 - 31, 127.

Для представления каждого символа в персональном компьютере используется один байт, поэтому общее число символов равно 28 = 256. Кодовая таблица, которая устанавливает соответствие между символом и его кодом, имеет 256 строк вида:

 

код_символа_в_заданной_системе_счисления - символ.

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

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

  1. Они должны начинаться с буквы латинского алфавита (а,...,z, А,...,Z) или с символа подчеркивания (_).
  2. В них могут использоваться буквы латинского алфавита, символ подчеркивания и цифры (0,...,9). Использование других символов в идентификаторах запрещено.
  3. В языке Си буквы нижнего регистра (а,...,z), применяемые в идентификаторах, отличаются от букв верхнего регистра (А,...,Z). Это означает, что следующие идентификаторы считаются разными: name, NaMe, NAME и т.д.
  4. Идентификаторы могут иметь любую длину, но воспринимается и используется для различения объектов (функций, переменных, констант и т.д.) только часть символов. Их число меняется для разных систем программирования, но в соответствии со стандартом ANSI C не превышает 32 (в Си++ это ограничение снято). Если длина идентификатора установлена равной 5, то имена count и counter будут идентичны, поскольку у них совпадают первые пять символов.
  5. Идентификаторы для новых объектов не должны совпадать с ключевыми словами языка и именами стандартных функций из библиотеки.

В программах на языке Си важная роль отводится комментариям. Они повышают наглядность и удобство чтения программ. Комментарии обрамляются символами /* и */. Их можно записывать в любом месте программы.

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

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

   

 

Типы данных

Программы оперируют с различными данными, которые могут быть простыми и структурированными. Простые данные - это целые и вещественные числа, символы и указатели (адреса объектов в памяти). Целые числа не имеют, а вещественные имеют дробную часть. Структурированные данные - это массивы и структуры; они будут рассмотрены ниже.

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

  • char - символьный;
  • int - целый;
  • float - вещественный;
  • double - вещественный двойной точности;
  • void - не имеющий значения.

Дадим им краткую характеристику:

  1. Переменная типа char имеет размер 1 байт, ее значениями являются различные символы из кодовой таблицы, например: 'ф', ':', 'j' (при записи в программе они заключаются в одинарные кавычки).
  2. Размер переменной типа int в стандарте языка Си не определен. В большинстве систем программирования размер переменной типа int соответствует размеру целого машинного слова. Например, в компиляторах для 16-разрядных процессоров переменная типа int имеет размер 2 байта. В этом случае знаковые значения этой переменной могут лежать в диапазоне от -32768 до 32767.
  3. Ключевое слово float позволяет определить переменные вещественного типа. Их значения имеют дробную часть, отделяемую точкой, например: -5.6, 31.28 и т.п. Вещественные числа могут быть записаны также в форме с плавающей точкой, например: -1.09e+4. Число перед символом "е" называется мантиссой, а после "е" - порядком. Переменная типа float занимает в памяти 32 бита. Она может принимать значения в диапазоне от 3.4е-38 до 3.4e+38.
  4. Ключевое слово double позволяет определить вещественную переменную двойной точности. Она занимает в памяти в два раза больше места, чем переменная типа float (т.е. ее размер 64 бита). Переменная типа double может принимать значения в диапазоне от 1.7e-308 до 1.7e+308.
  5. Ключевое слово void (не имеющий значения) используется для нейтрализации значения объекта, например, для объявления функции, не возвращающей никаких значений.

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

  • unsigned
  • signed
  • short
  • long

Модификаторы записываются перед спецификаторами типа, например: unsigned char. Если после модификатора опущен спецификатор, то компилятор предполагает, что этим спецификатором является int. Таким образом, следующие строки:

long а;

long int а;

являются идентичными и определяют объект а как длинный целый. Табл. 1 иллюстрирует возможные сочетания модификаторов (unsigned, signed, short, long) со спецификаторами (char, int, float и double), а также показывает размер и диапазон значений объекта (для 16-разрядных компиляторов).

Таблица 1

Тип Размер в байтах (битах) Интервал изменения
char 1 (8) от -128 до 127
unsigned char 1 (8) от 0 до 255
signed char 1 (8) от -128 до 127
int 2 (16) от -32768 до 32767
unsigned int 2 (16) от 0 до 65535
signed int 2 (16) от -32768 до 32767
short int 2 (16) от -32768 до 32767
unsigned short int 2 (16) от 0 до 65535
signed short int 2 (16) от -32768 до 32767
long int 4 (32) от -2147483648 до 2147483647
unsigned long int 4 (32) от 0 до 4294967295
signed long int 4 (32) от -2147483648 до 2147483647
float 4 (32) от 3.4Е-38 до 3.4Е+38
double 8 (64) от 1.7Е-308 до 1.7Е+308
long double 10 (80) от 3.4Е-4932 до 3.4Е+4932
 

 

Переменные и константы

Все переменные до их использования должны быть определены (объявлены). При этом задается тип, а затем идет список из одной или более переменных этого типа, разделенных запятыми. Например:

int a, b, c;

char x, y;

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

Переменные можно разделять по строкам произвольным образом, например:

float a;

float b;

Переменные в языке Си могут быть инициализированы при их определении:

int a = 25, h = 6;

char g = 'Q', k = 'm';

float r = 1.89;

long double n = r*123;

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

int a; /* Определение глобальной переменной */

 

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

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

Наряду с переменными в языке существуют следующие виды констант:

  • вещественные, например 123.456, 5.61е-4. Они могут снабжаться суффиксом F (или f), например 123.456F, 5.61e-4f;
  • целые, например 125;
  • короткие целые, в конце записи которых добавляется буква (суффикс) H (или h), например 275h, 344H;
  • длинные целые, в конце записи которых добавляется буква (суффикс) L (или l), например 361327L;
  • беззнаковые, в конце записи которых добавляется буква U (или u), например 62125U;
  • восьмеричные, в которых перед первой значащей цифрой записывается нуль (0), например 071;
  • шестнадцатеричные, в которых перед первой значащей цифрой записывается пара символов нуль-икс (0x), например 0x5F;
  • символьные - единственный символ, заключенный в одинарные кавычки, например 'О', '2', '.' и т.п. Символы, не имеющие графического представления, можно записывать, используя специальные комбинации, например \n (код 10), \0 (код 0). Эти комбинации выглядят как два символа, хотя фактически это один символ. Так же можно представить любой двоичный образ одного байта: '\NNN', где NNN - от одной до трех восьмеричных цифр. Допускается и шестнадцатеричное задание кодов символов, которое представляется в виде: '\х2В', '\хЗ6' и т.п.;
  • строковые - последовательность из нуля символов и более, заключенная в двойные кавычки, например: "Это строковая константа". Кавычки не входят в строку, а лишь ограничивают ее. Строка представляет собой массив из перечисленных элементов, в конце которого помещается байт с символом '\0'. Таким образом, число байтов, необходимых для хранения строки, на единицу превышает число символов между двойными кавычками;
  • константное выражение, состоящее из одних констант, которое вычисляется во время трансляции (например: а=60+301);
  • типа long double, в конце записи которых добавляется буква L (или l), например: 1234567.89L.
 

 

Как вводить и выводить информацию

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

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

int getchar(void);

Здесь определен тип единственного аргумента (void) и тип возвращаемого функцией значения (int).

Оператор вида:

х = getchar();

присваивает переменной х очередной вводимый символ. Переменная х должна иметь символьный или целый тип.

Другая функция - putchar(х) выдает значение переменной x в стандартный выходной поток (на экран дисплея). Функция putchar() имеет прототип:

int putchar(int);

Объявления getchar() и putchar() сделаны в заголовочном файле stdio.h, содержащем описания заголовков библиотечных функций стандартного ввода/вывода. Чтобы библиотечные функции стали доступны программе, к ней необходимо подключить данный файл. Подключение осуществляется с помощью директивы препроцессора

#include <stdio.h>

помещаемой в начало программы (подробнее см. в разделе 5).

Заметим, что для функции getchar() после выбора символа необходимо нажать клавишу <Enter>. Иногда это создает определенные неудобства. Функции getch() и getche() устраняют их. Они имеют следующие прототипы:

int getch(void);

int getche(void);

Обе эти функции вводят символ сразу же после нажатия соответствующей клавиши (здесь не надо дополнительно нажимать клавишу <Enter>). Отличие между ними заключается в том, что getche() отображает вводимый символ на экране дисплея, а getch() - нет. Прототипы этих функций содержатся в файле conio.h (консольный ввод/вывод). Для их использования файл conio.h также следует подключить к программе с помощью директивы #include.

 

 

Форматированный вывод данных

Функция printf() (прототип содержится в файле stdio.h) обеспечивает форматированный вывод. Ее можно записать в следующем формальном виде:

рrintf ("управляющая строка", аргумент _1, аргумент _2,...);

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

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

% [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n

Все параметры в квадратных скобках не являются обязательными.

На месте параметра c_n (символ преобразования) могут быть записаны:

с - значением аргумента является символ;
d или i - значением аргумента является десятичное целое число;
е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23e+2;
Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23E+2;
f - значением аргумента является вещественное десятичное число с плавающей точкой;
g (или G) - используется, как е или f, и исключает вывод незначащих нулей;
о - значением аргумента является восьмеричное целое число;
s - значением аргумента является строка символов (символы строки выводятся до тех пор, пока не встретится символ конца строки или же не будет, выведено число символов, заданное точностью);
u - значением аргумента является беззнаковое целое число;
х - значением аргумента является шестнадцатеричное целое число с цифрами 0,..., 9, а, b, с, d, е, f;
X - значением аргумента является шестнадцатеричное целое число с цифрами 0,..., 9, А, В, С, О, Е, F;
р - значением аргумента является указатель;
n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.

Необязательные параметры в спецификации преобразования:

  • признак минус (-) указывает, что преобразованный параметр должен быть выровнен влево в своем поле;
  • признак плюс (+) требует вывода результата со знаком;
  • строка цифр, задающая минимальный размер поля (ширина поля). Здесь может так же использоваться символ *, который тоже позволяет задать минимальную ширину поля и точность представления выводимого числа;
  • точка (.), отделяющая размер поля от последующей строки цифр;
  • строка цифр, задающая максимальное число выводимых символов, или же количество цифр, выводимых справа от десятичной точки в значениях типов float или double (точность);
  • символ F, определяющий указатель типа far;
  • символ N, определяющий указатель типа near;
  • символ h, определяющий аргумент типа short int (используется вместе с символами преобразования d, i, о, u, х, Х);
  • символ l, указывающий, что соответствующий аргумент имеет тип long (в случае символов преобразования d, i, о, u, х, X) или double (в случае символов преобразования е, Е, f, g, G);
  • символ L, указывающий, что соответствующий аргумент имеет тип long double (используется вместе с символами преобразований е, Е, f, g, G);
  • символ #, который может встречаться перед символами преобразования g, f, е и перед символом х. В первом случае всегда будет выводиться десятичная точка, а во втором - префикс 0x перед соответствующим шестнадцатеричным числом.

Если после знака % записан не символ преобразования, то он выводится на экран. Таким образом, строка %% приводит к выводу на экран знака %.

Функция printf() использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Аргументами могут быть переменные, константы, выражения, вызовы функций; главное, чтобы их значения соответствовали заданной спецификации.

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

Среди управляющих символьных констант наиболее часто используются следующие:

\а - для кратковременной подачи звукового сигнала;
\b - для перевода курсора влево на одну позицию;
\f - для подачи формата;
\n - для перехода на новую строку;
\r - для возврата каретки;
\t - горизонтальная табуляция;
\v - вертикальная табуляция;
\\ - вывод символа \;
\' - вывод символа ';
\" - вывод символа ";
\? - вывод символа?.

Например, в результате вызова функции:

printf("\tComputer\n%d\n", i);

сначала выполняется горизонтальная табуляция (\t), т.е. курсор сместится от края экрана, затем на экран будет выведено слово Computer, после этого курсор переместится в начало следующей строки (\n), затем будет выведено целое число i по формату %d (десятичное целое), и, окончательно, курсор перейдет в начало новой строки (\n).

Напечатать строку символов можно и так:

printf("Это строка символов");

 

 

Форматированный ввод данных

Функция scanf() (прототип содержится в файле stdio.h) обеспечивает форматированный ввод. Ее можно записать в следующем формальном виде:

scanf("управляющая строка", аргумент_1, аргумент_2,...);

Аргументы scanf() должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &. Назначение указателей будет рассмотрено далее.

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

  • пробелы, символы табуляции и перехода на новую строку (все они игнорируются);
  • спецификации преобразования, состоящие из знака %, возможно, символа * (запрещение присваивания), возможно, числа, задающего максимальный размер поля, и самого символа преобразования;
  • обычные символы, кроме % (считается, что они должны совпадать с очередными неизвестными символами во входном потоке).

Рассмотрим символы преобразования функции scanf() (указываются после символа %):

с - на входе ожидается появление одиночного символа;
d или i - на входе ожидается десятичное целое число и аргумент является указателем на переменную типа int;
D или l - на входе ожидается десятичное целое число и аргумент является указателем на переменную типа long;
е или Е - на входе ожидается вещественное число с плавающей точкой;
f - на входе ожидается вещественное число с плавающей точкой;
g или G - на входе ожидается вещественное число с плавающей точкой;
о - на входе ожидается восьмеричное целое число и аргумент является указателем на переменную типа int;
О - на входе ожидается восьмеричное целое число и аргумент является указателем на переменную типа long;
s - на входе ожидается появление строки символов;
х - на входе ожидается шестнадцатеричное целое число и аргумент является указателем на переменную типа int;
Х - на входе ожидается шестнадцатеричное целое число и аргумент является указателем на переменную типа long;
р - на входе ожидается появление указателя в виде шестнадцатеричного числа;
n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции (после ввода), в которой записана спецификация %n;
u - на входе ожидается беззнаковое целое число и аргумент является указателем на переменную типа unsigned int;
U - на входе ожидается беззнаковое целое число и аргумент является указателем на переменную типа unsigned long;
[ ] - сканирует входную строку для получения символов.

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

F - изменяет указатель, заданный по умолчанию, на указатель типа far;
N - изменяет указатель, заданный по умолчанию, на указатель типа near;
h - преобразует аргумент к типу short int (может записываться перед символами d, i, о, u, х);
l - преобразует аргумент к типу long int (может записываться перед символами d, i, o, u, x);
L - преобразует аргумент к типу long double (может записываться перед символами е, f, g).

Ввести целое число (int a;), символ (char b;) и вещественное число (float t;) можно так:

scanf("%d", &a);

scanf("%c", &b);

scanf("%d%c%f",&a, &b, &t);

 

 

РАЗДЕЛ 4. ФУНКЦИИ

Общие сведения

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

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

Функция объявляется следующим образом:

тип имя_функции(тип имя_параметра_1, тип имя_параметра_2,...);

Тип функции определяет тип значения, которое возвращает функция. Если тип не указан, то предполагается, что функция возвращает целое значение (int).

При объявлении функции для каждого ее параметра можно указать только его тип (например: тип функция (int, float,...), а можно дать и его имя (например: тип функция (int а, float b,...)).

В языке Си разрешается создавать функции с переменным числом параметров. Тогда при задании прототипа вместо последнего из них указывается многоточие.

Определение функции имеет следующий вид:

тип имя_функции(тип имя_параметра_1, тип имя_параметра_2,...)

{

тело функции

}

Передача значения из вызванной функции в вызвавшую происходит с помощью оператора возврата return, который записывается следующим образом:

return выражение;

Таких операторов в подпрограмме может быть несколько, и тогда они фиксируют соответствующие точки выхода. Например:

int f(int a, int b)

{

if (a > b) { printf("max = %d\n", a); return a; }

printf("max = %d\n", b); return b;

}

Вызвать эту функцию можно следующим образом:

c = f(15, 5);

c = f(d, g);

f(d, g);

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

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

void swap(int *a, int *b)

{

int *tmp = *a;

*a = *b;

*b = *tmp;

}

Вызов swap(&b, &c) (здесь подпрограмме передаются адреса переменных b и с) приведет к тому, что значения переменных b и c поменяются местами.



Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 230; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.131.28 (0.114 с.)