Программирование на языке Си
Покупка
Тематика:
Программирование на C и C++
Издательство:
ФЛИНТА
Год издания: 2017
Кол-во страниц: 103
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9765-3434-6
Артикул: 760548.01.99
В учебно-методическом пособии раскрываются теоретические основы программирования на языке Си, показаны практические примеры реализации различных программ, а также даны методические рекомендации для выполнения лабораторных работ. Методическое пособие предназначено для студентов, обучающихся по направлениям подготовки 09.03.01 «Информатика и вычислительная техника», 09.03.02 «Прикладная информатика», 09.03.04 «Программная инженерия».
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Ж. В. Михайличенко М. А. Кузниченко В. С. Янё Программирование на языке Си Учебно-методическое пособие 2-е издание, стереотипное Москва Издательство «ФЛИНТА» 2017
УДК 004.43 ББК 32.973.26 М69 НАУЧНЫЙ РЕДАКТОР: канд. техн. наук, доцент кафедры программного обеспечения ОГТИ (филиала) ОГУ В.Н. Муллабаев РЕЦЕНЗЕНТЫ: канд. физ.-мат. наук, доцент Орского филиала СамГУПС В.Б. Чурсин; канд. пед. наук, доцент Орского филиала СамГУПС Е.Н. Самойлик Михайличенко Ж.В. М69 Программирование на языке Си [Электронный ресурс] : учеб.метод. пособие / Ж.В. Михайличенко, М.А. Кузниченко, В.С. Янѐ. — 2-е изд., стер. — М. : ФЛИНТА, 2017. — 103 с. ISBN 978-5-9765-3434-6 В учебно-методическом пособии раскрываются теоретические осно вы программирования на языке Си, показаны практические примеры реализации различных программ, а также даны методические рекомендации для выполнения лабораторных работ. Методическое пособие предназначено для студентов, обучающихся по направлениям подготовки 09.03.01 «Информатика и вычислительная техника», 09.03.02 «Прикладная информатика», 09.03.04 «Программная инженерия». УДК 004.43 ББК 32.973.26 ISBN 978-5-9765-3434-6 © Михайличенко Ж.В., Кузниченко М.А., Янѐ В.С., 2017 © Издательство «ФЛИНТА», 2017
Содержание Введение …………………………………………………………... 4 Методические рекомендации по выполнению и оформлению лабораторных работ ……………………………………………… 5 Лабораторная работа 1. Программирование алгоритмов линейной структуры ……………………………………………… 7 Лабораторная работа 2. Программирование алгоритмов разветвляющейся структуры …………………………………….. 16 Лабораторная работа 3. Программирование алгоритмов циклической структуры ………………………………………….. 24 Лабораторная работа 4. Обработка одномерных массивов …… 32 Лабораторная работа 5. Обработка матриц …………………….. 40 Лабораторная работа 6. Обработка строк ………………………. 49 Лабораторная работа 7. Структуры ……………………………... 57 Лабораторная работа 8. Указатели ……………………………… 66 Лабораторная работа 9. Функции пользователя ……………….. 71 Лабораторная работа 10. Файлы ………………………………… 81 Задания к контрольной работе …………………………………... 87 Библиографический список ……………………………………… 101 Приложение А. Оформление титульного листа отчѐта по лабораторной работе ………………………………………….. 102
Введение Язык программирования Си был создан в 1972 году сотрудни ком фирмы Bell Laboratories Деннисом Ритчи при разработке операционной системы UNIX для машины PDP-11. Язык проектировался как инструмент для системного программирования, но, благодаря богатству выразительных возможностей, Си быстро распространился и стал наиболее популярным языком для разработки прикладных программ. Си – это универсальный, удобный и гибкий язык программиро вания с компактным способом записи выражений, современными механизмами управления структурами данных и богатым набором операторов. Язык не специализирован на какую-либо область применения и пригоден для решения широкого класса задач. Компиляторы языка Си работают почти на всех типах современных ЭВМ в операционных системах UNIX, MS-DOS, Windows, OS/2, Mac OS, Solaris, Linux и других. Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как С++, С#, Java, PHP. Данное учебно-методическое пособие предназначено для прак тического освоения языка программирования Си студентами, обучающимися по направлениям подготовки 09.03.01 «Информатика и вычислительная техника», 09.03.02 «Прикладная информатика», 09.03.04 «Программная инженерия», при изучении дисциплины «Программирование». В пособии представлены десять лабораторных работ, охватыва ющих весь учебный курс, к каждой из них даны краткие теоретические сведения, примеры реализации задач, контрольные вопросы. Кроме того, предлагаются рекомендации по выполнению и оформлению лабораторных работ, задания к контрольной работе, а также список рекомендуемой литературы. Авторы надеются, что данное учебно-методическое пособие по может ликвидировать разрыв между широко публикуемыми техническими руководствами по реализации языка Си и потребностями в методическом обеспечении учебного процесса.
Методические рекомендации по выполнению и оформлению лабораторных работ Лабораторные работы предназначены для практического освое ния языка программирования Си. Для выполнения каждой лабораторной работы нужно: 1) ознакомиться с необходимым теоретическим материалом (конспектом лекций, рекомендуемой литературой); 2) внимательно прочитать и уяснить условие поставленной за дачи; 3) при необходимости дать математическое описание задачи; 4) разработать алгоритм задачи и представить его в виде блок схемы; 5) изучить образцы готовых примеров решения задач по дан ной теме, представленных в кратких теоретических сведениях лабораторной работы; 6) разработать текст программы и реализовать еѐ в любой инте грированной среде программирования на языке Си (например, Borland C++ 3.11, Dev-C++, Borland C++ Builder, Embarcadero RAD Studio, Microsoft Visual C++); 7) выполнить отладку программы; 8) провести тестирование программы на множестве входных данных. Каждая лабораторная работа должна быть оформлена в виде от чѐта, включающего: титульный лист; цель работы; задание; основную часть; вывод. Титульный лист оформляется в соответствии с приложением А. Цель лабораторной работы и задание переписываются из методических указаний. В основной части приводится теоретический материал, блок-схема алгоритма, текст программы и результат еѐ работы. В конце отчѐта кратко описываются итоги проделанной работы, приводится анализ полученных результатов. Отчѐт по лабораторной работе должен быть отпечатан на белой бумаге формата A4 (210x297 мм, ГОСТ 9327) с расположением текста
на одной стороне листа. Отчет должен быть оформлен в текстовом редакторе Microsoft Word. Для печати текста используется шрифт Times New Roman. Шрифт основного текста – обычный, размер – 14 пт. Шрифт заголовков разделов – полужирный, размер – 16 пт. Шрифт заголовков подразделов – полужирный, размер – 14 пт. Межсимвольный интервал – обычный, межстрочный интервал – одинарный. Текст должен быть выровнен по ширине с автоматической рас становкой переносов. Абзацный отступ должен быть одинаковым по всему тексту и равен 12,5 мм или пять знаков размером 14 пт. Страницы следует нумеровать арабскими цифрами без точки, соблюдая сквозную нумерацию по всему тексту. Первым листом считается титульный лист, номер на титульном листе не проставляется. В тексте отчѐта могут быть приведены перечисления в виде списков. Перечисления выделяют в тексте абзацным отступом, который используют только в первой строке. Перед каждой позицией перечисления ставят дефис. Допускается вместо дефиса приводить арабские цифры со скоб кой, а для дальнейшей детализации использовать строчные буквы русского или латинского алфавитов в алфавитном порядке со скобкой после них. Все иллюстрации (графики, схемы алгоритмов, диаграммы) именуют рисунками. Рисунки должны располагаться сразу же после первого упоминания в тексте либо на следующей странице. Рисунки должны иметь наименование, а при необходимости также и пояснительные данные. Рисунки необходимо выравнивать по центру, названия рисунков – по левому краю. Уравнения и формулы следует выделять из текста в отдельную строку, отделяя от остального текста одной свободной строкой выше и ниже.
Лабораторная работа 1 Программирование алгоритмов линейной структуры Цель работы: изучение структуры исполняемого файла, типов данных и операторов ввода-вывода языка Си. Краткие теоретические сведения Любая программа, написанная на языке С/С++, состоит из функций, среди которых обязательно должна присутствовать главная функция с фиксированным именем main. Код, задающий тело функции main, заключается в фигурные скобки. Общая структура функции main такова: void main() { /* Код, реализующий main */ } Текст, заключенный в скобки вида: /* … */, является коммента рием и компилятором игнорируется. Комментарии служат двум целям: документировать код и облегчить отладку. Если программа работает не так, как надо, то иногда оказывается полезным закомментировать часть кода, заново скомпилировать программу и выполнить еѐ. Если после этого программа начнѐт работать правильно, то это значит, что закомментированный код содержит ошибку и должен быть исправлен. Многие программы на Си используют функции из других биб лиотек, которые подключаются до кода главной функции main в виде директивы #include. Появление директив #include <файл_1> #include <файл_2> … #include <файл_n> приводит к тому, что препроцессор подставляет на место этих директив тексты библиотечных файлов файл_1, файл_2 , … , файл_n соответственно. Если имя файла заключено в угловые скобки <…>, то поиск файла производится в специальном разделе подстановочных файлов. В отличие от многих других операторов, директива include не должна оканчиваться точкой с запятой.
С помощью директивы #define, вслед за которой пишутся имя макроподстановки и еѐ значение, оказывается возможным указать препроцессору, чтобы он при любом появлении в исходном файле на Си данного имени макроподстановки заменял это имя на соответствующие значения. Например, директива вида: #define pi 3.1415926 связывает идентификатор pi со значением 3.1415926. В Си переменные должны быть описаны, а их тип специфирован до того, как эти переменные будут использованы в программе. При описании переменных применяется префиксная запись, при которой вначале указывается тип, а затем – имя переменной. Например: float weight; int exam_score; char ch; С типом данных связываются и набор предопределенных значе ний, и набор операций, которые можно выполнять над переменной данного типа. Переменные можно инициализировать в месте их описаний. Пример: int height = 71 ; float income =26034.12 ; Простейшими скалярными типами, предопределѐнными в Си, являются следующие типы: 1) char – представляется как однобайтовое целое число, символ; 2) int – двубайтовое целое; 3) float – четырѐхбайтовое вещественное; 4) double – восьмибайтовое вещественное. Функцию printf можно использовать для вывода любой комби нации символов, целых и вещественных чисел, строк, беззнаковых целых, длинных целых и беззнаковых длинных целых. Пример: printf(”\nВозраст Эрика – %d. Его доход $%.2f”,age,income); Предполагается, что целой переменной age (возраст) и веще ственной переменной income (доход) присвоены какие-то значения. Последовательность символов «\n» переводит курсор на новую строку.
Последовательность символов “Возраст Эрика –“ будет выве дена с начала новой строки. Символы %d – это спецификация для целой переменной age. Следующая литерная строка ,”Его доход $“. %2f – это спецификация (символ преобразования формата) для вещественного значения, а также указание формата для вывода только двух цифр после десятичной точки. Так выводится значение переменной income. Оператор scanf является одной из многих функций ввода, име ющихся во внешних библиотеках. Каждой вводимой переменной в строке функции scanf должна соответствовать спецификация. Перед именами переменных необходимо оставить символ &. Этот символ означает «взять адрес». Пример. #include<stdio.h> main() { int weight, /*вес*/ height; /*рост*/ printf(“ Введите ваш вес: “); scanf(“%d”, &weight); printf(“ Введите ваш pocт: “); scanf(“%d”, &height); printf(“\n\nВес = %d, рост = %d\n”, weight,height); } Пример. Вычислить значение многопараметрической функции: ) 5.0 a( arctg 1 e x cos ) a 2 x sin( Y x 3 при а = 2,58 x – целое #include<stdio.h> #include<conio.h> #include<math.h> main() { int x; float a=2.58, Y; clrscr( );
printf(“ Введите x= “); scanf(“%d”, &a); Y=sin(pow(x, 3)+2*a)+(cos(x)+exp(x))/sqrt(fabs(1-atan(a-0.5))); printf(“\n\n Y = %5.2f”, Y); } Пример. Составить программу для вычисления длины L медной проволоки массой m = 900 г и площади еѐ поперечного сечения S. Известны: электрическое сопротивление меди R = 171 Ом, еѐ плотность d = 8,92 г/см³, удельное сопротивление ρ = 0,0175 Ом·мм²/м. Определяем длину проволоки: d R m L м. Определяем сечение проволоки: R d m S мм². #include<stdio.h> #include<conio.h> #include<math.h> main() { int m=900, R=171; float p=0.0175, d=8.92, L, S; clrscr( ); L=sqrt(m*R/(d*p)); S=sqrt(p*m/(d*R)); printf(“\n\n L = %6.2f”, L, “\n S = %6.2f”, S); } Задание 1 Составить блок-схему алгоритма и программу для вычисления значения заданной многопараметрической функции (табл. 1). Таблица 1 № варианта Функция Исходные данные 1 2 3 1 2 ln c x c ac Y х = –2,6; а – целое; с – вещественное