Лекция 1. Основы алгоритмизации и программирования на Си (1153708)
Текст из файла
1. ЦЕЛЬ И СОДЕРЖАНИЕ КУРСАЦель курса: овладение знаниями и навыками разработки алгоритмов и основами программирования на языке Си.Любая программа, независимо от алгоритмического языка, на котором она написана, состоит из описания данных и описания действий, выполняемых с этими данными. "Алгоритмы+структуры данных =программы" - это название книги классика современного программирования Н. Вирта является основным принципом разработки программ.Существующие в настоящее время универсальные алгоритмические языки (т.е.
языки, содержащие все основные средства современного программирования), такие как Паскаль, Си, Фортран, Бейсик,практически не отличаются по своим возможностям. Различия в правилах построения фраз языка не являются принципиальными, освоение этих правил - дело практики, а приверженность программиста к какому-то алгоритмическому языку обычно является следствием многолетней привычки. Существенные отличия, имеются, пожалуй, в способах организации многомодульных и многофайловых программ.
Выбор алгоритмического языка Си для данного пособия объясняется тем,что в настоящее время он является признанным языком системногопрограммирования, т.е. языком для специалистов в области разработки программного обеспечения.Чтобы начать писать программы на каком-либо алгоритмическомязыке, надо знать:1. Какова структура простейшей (не использующей нестандартныеподпрограммы) программы, в каком порядке в ней размещаются инструкции языка.2. Какие типы и структуры данных приняты в языке и как они определяются (описываются), какие операции над данными различных типовдопустимы в языке, как строятся с их помощью выражения и как онивычисляются.
Заметим, что на начальном этапе овладения языкомнеобязательно глубоко изучать все допустимые в нем типы и структуры, достаточно знать те, которые необходимы для решения интересующего вас класса задач.3. Как записывать операторы преобразования данных: оператор присваивания, с помощью которого осуществляются все преобразованиявнутренних данных, операторы ввода (передачи данных с внешнихустройств в память компьютера) и вывода (передачи данных из памятикомпьютера на внешние устройства).4. Как записать алгоритм (порядок, организацию обработки данных).Современные алгоритмические языки, как правило, имеют избыточныйнабор управляющих операторов для кодирования алгоритмов.
На первом этапе изучения языка можно познакомиться с тремя-пятью из них,достаточными для программирования основных алгоритмическихструктур, с помощью которых можно записать любой алгоритм.Перечисленных сведений достаточно для написания простыхпрограмм. Изложению этих сведений в минимальном объеме посвящена первая лекция. Дальнейшее изучение программирования связано с подпрограммами (в языке Си формально существуют толькофункции), организацией многофайловых программ; этот материал излагается во второй лекции. Обработке текстовой информации иструктурному типу посвящена третья лекция, работе с файлами в Си— четвертая лекция.Следует заметить, что овладение конструкциями алгоритмического языка еще не означает умения программировать. Главнуюроль в создании программных средств играет умение анализироватьзадачу и разрабатывать принципиальную схему алгоритма без привязки к алгоритмическому языку. Однако обучение начальным навыкам алгоритмизации не укладывается в формальные рамки, и написать пособие по этой теме также трудно, как самоучитель по чтению иписьму.
Чтобы помочь начинающим программистам, в пособии, нарядус программами на Си, используются блок-схемы, которые, пожалуй,являются наиболее общим и наглядным способом описания алгоритмов.Для читателей, впервые столкнувшихся с программированием,поясним, что программа, написанная на алгоритмическом языке,должна быть переведена в коды компьютера, т. е. на внутренний языккомпьютера (машинный язык). Процесс такого перевода называется2трансляцией, а специальная программа-переводчик - транслятором.Существует два способа трансляции: компиляция и интерпретация.При компиляции программа сначала полностью переводится в коды, азатем выполняется без участия компилятора, т.е.
процесс трансляциии выполнения программы четко разделены во времени. При интерпретации последовательно чередуются перевод группы инструкцийязыка в коды и их выполнение. Алгоритмический язык Си (также какПаскаль и Фортран) требует именно компиляции. Откомпилированнаяпрограмма (так называемый объектный модуль) далее подвергаетсяредактированию связей1 (процесс подключения к программе подпрограмм) и загрузке в оперативную память. В результате такой обработки получается готовая к выполнению программа, которая называетсяисполняемой программой или загрузочным модулем.В настоящее время трансляторы обычно входят в состав системпрограммирования, включающих в себя также редактор для набора иисправления текстов программ, редактор связей, загрузчик, средствадля работы с файлами, программу- отладчик и среду, обеспечивающую удобную работу с этими программами.
Мы будем ориентироваться на среду Microsoft Visual Studio 2008. Заметим также, что, следуя целям начального обучения программированию, в основном будем ориентироваться на подмножество языка Си++ , соответствующее стандарту языка Си.1Редактирование связей также называют компоновкой3Часть. Основы программирования на Си1.1. Структура простейшей Си-программыПростейшая программа на Си состоит из одного файла и имеетследующую структуру (см. рис.1).#include <stdio.h>Директивы препроцессора#include <conio.h>(в простейшем случаеvoid main()#include <stdio.h>/*ввод/вывод*/{int a,b,c;/*описание трех целых переменных*/#include <math.h> /*стандартныеprintf("введите a и b\n");математические функции*/)/*приглашение к вводу a и b*/void main()scanf("%d%d", &a, &b);/*ввод a,b*/{ описанияc=a+b;/*вычисление с - суммы */printf("c=%d\n", c);/*вывод с*/операторы_getch();}}а)б)Рис.1а) общая схема простейшей Си-программы;б) пример программы вычисления суммы двух чисел.В начале программы идут директивы препроцессора, которыеболее подробно рассмотрены в п.
2.3. В простейшем случае можноограничиться директивами include, которые необходимы для использованиябиблиотекстандартныхфункцийСи:include <stdio.h> - для функций ввода/вывода, include <math.h> - длястандартных математических функций, include <conio.h> - lдля работы с консольным экраном. Обратите внимание, что директивы препроцессора начинаются со значка #.Далее идет заголовок главной (и в простейшем случае единственной) функции: void main(). После заголовка в фигурных скобках записывается инструкции программы.Инструкции могут быть либо описаниями, либо операторами.Операторы - это исполняемые инструкции; при компиляции они переводятся в одну или несколько машинных команд.
Описания - это неисполняемые инструкции языка; они используются компилятором дляраспределения памяти под данные и определения характера опера4ций, которые могут выполняться с этими данными. Описания характеризуют область значений данных. Они могут стоять в любом местепрограммы до использования описываемых имен. Хороший стиль программирования предполагает, чтобы по возможности описания былисобраны в начале программы и предшествовали операторам.В любое место программы можно включить комментарии - поясняющие фразы, окаймленные, как скобками, символами /* и */.
Комментарии компилятором не обрабатываются и служат только для пояснения текста программы. В Си++ также допускается использоватькак комментарий строку программы, поставив в начале ее символы //.1.2. Данные в Си и операции над ними1.2.1. Свойства ячейки памяти. Переменные и константыКомпьютерные программы, для написания которых предназначеналгоритмический язык Си, обрабатывают данные, которые, естественно, хранятся в оперативной памяти компьютера.
Каждое элементарное данное имеет некоторый смысл (например, число или символ)и занимает один или несколько байтов памяти2. Эту область памятичасто называют ячейкой памяти. Для того, чтобы ячейки памяти можно было различать и использовать их в программе, каждой ячейке дается имя.
Таким образом, ячейка памяти характеризуется своим именем и содержимым (т. е. данным, которое в ней хранится). Кроме того,ячейка имеет адрес (адресом ячейки считается адрес младшего из занимаемых ею байтов). В программе имена ячеек участвуют как именапеременных, т. е. переменные программы - это, по существу, ячейкипамяти.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.