Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си

Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си, страница 3

PDF-файл Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си, страница 3 Операционные системы (37427): Книга - 3 семестрН.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си: Операционные системы - PDF, страница 3 (37427) - 2019-05-08СтудИзба

Описание файла

PDF-файл из архива "Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, В.В. Тюляева - Программирование в ОС UNIX на языке Си", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 3 страницы из PDF

После правой фигурной скобки в приведенномпримере, как и в других случаях использования составного оператора, точка с запятой не ставится 3.Во вложенных операторах if действует правило: else всегдаотносится к ближайшему незакрытому оператору if. Для измененияэтого порядка выполнения операторов обычно используют составной оператор.Задача 1. Ввести из стандартного входного потока один символ и,если это цифра, то присвоить целой переменной k нулевое значение,если введенный символ окажется буквой a, то k присвоить значениеодин, во всех остальных случаях переменной k присвоить значениедва....int c,k;c=getchar();if(c>=’0’ && c<=’9’) k=0;else if(c==’a’) k=1;ее прототип фиксирован, посредством параметров функции main программа можетполучить информацию от запускающей среды, см. тему 62В Си ';' не разделяет операторы, как в других языках программирования, например, вПаскале, а является неотъемлемой частью оператора.3Запись if(x==y){…};else{…} приведет к ошибке компиляции (здесь ; рассматриваетсякомпилятором как пустой оператор после "сокращенного" условного, а следовательно, для elseнет соответствующего if )113else k=2;Переключатель switchПри множественном ветвлении программы иногда вместовложенных операторов if удобнее использовать переключатель.switch(<управляющееcase <константное[break;].

. .case <константное[break;][default: <оп1> .}выражение>) {выражение 1>: <оп1>...<опN>выражение M>: <оп1>...<опN>. . <опN>]При совпадении значений управляющего выражения и константного выражения одной из ветвей, выполняются операторы этойветви. Оператор break вызывает немедленный выход из переключателя. Если оператор break отсутствует в выбранной ветви, то будутвыполнены операторы следующей ветви и т.д.

до тех пор, пока невстретится оператор break или не закончатся ветви переключателя.Примечание. Ветви case и default могут быть расположены влюбом порядке, при этом операторы ветви default выполнятсятолько в том случае, если не будет найдено совпадения значенияуправляющего выражения ни с одним константным выражениемдругих ветвей.Далее приводится решение задачи 1 с помощью переключателя.... int c,k;switch(c=getchar()) {case ‘0’:case ‘1’:case ‘2’:case ‘3’:case ‘4’:case ‘5’:case ‘6’:case ‘7’:case ‘8’:case ‘9’: k=0; break;case ‘a’: k=1; break;default: k=2;}Операторы цикла while и do-whileВ операторе цикла с предусловием:while (<выражение>) <оператор>и операторе цикла с постусловием:do <оператор> while(<выражение>);14тело цикла выполняется до тех пор, пока выражение истинно.

Если вцикле необходимо выполнить несколько операторов, используетсясоставной оператор {}.Задача 2. Из стандартного входного потока ввести строку и записатьее в массив str. Длина строки не превышает 80 символов.... int c,i;char str[80];i=0;while((c=getchar())!=’\n’) str[i++]=c;str[i]=’\0’;Оператор цикла forОператор цикла for состоит из заголовка и тела цикла.for([<выражение1>];[<выражение2>];[<выражение3>])<оператор>Оператор тела цикла выполняется до тех пор, покавыражение2 истинно. При отсутствии выражение2 считается истинным.

Выражение1 обычно содержит начальные присваивания, авыражение3 – изменение значения параметра цикла на каждой итерации. В этих выражениях часто используют операцию "," (запятая). Алгоритм выполнения цикла for выглядит следующим образом:< выражение1>;while(<выражение2>) { <оператор> <выражение3>; }Например, чтобы обнулить элементы целочисленного массива,можно использовать цикл for....int m[10], i;for(i=0;i<10;i++) m[i]=0;В вырожденном случае все выражения и оператор тела цикла могутотсутствовать. Например: for(;;); - это бесконечный цикл.Включение в заголовок цикла посторонних вычислений допустимо, но считается плохим стилем программирования....int m[10], i;for(i=0;i<10;m[i++]=0);Примечание.

Параметр цикла и составляющие условия его окончания могут изменяться в теле цикла. Выходное значение параметрацикла всегда определено.Задача 3. Определить длину строки. Нулевой байт не считать....char s[100];int len, i;for(i=0;s[i];i++);len=i;Задача 4. Удалить из строки все пробелы....char s[100];15int i, j;for(i=0,j=0;s[i];i++)if(s[i]!=’ ‘) s[j++]=s[i];s[j]=’\0’;Задача 5.

Нарисовать горизонтальную гистограмму частоты вхождения введенных символов. Ввести масштабирование по горизонтальной оси так, чтобы гистограмма была развернута на все окно.#include <stdio.h>main(){ int c, m[256]={0}, i, j, max;while((c=getchar())!=’\n’) m[c]++;for(i=1,max=m[0];i<256;i++)if(max<m[i]) max=m[i];for(i=0;i<256;i++)if(m[i]){printf(“%c”,i);for(j=0;j<80*m[i]/max;j++) putchar(‘*’);putchar(‘\n’);}}Операторы break и continueОператор break; вызывает немедленный выход из тела циклаили из переключателя switch.Оператор continue; вызывает немедленный переход к следующей итерации цикла (while, do-while или for).Упражнения1. #define MAXLEN 256char str[MAXLEN];int i;Пусть в символьный массив str записана строка, длина которойменьше MAXLEN.a) Реверсировать строку, не используя дополнительных массивов.b) char str1[MAXLEN];Копировать строку str в str1.c) Преобразовать строку в целое.d) Целое число, записанное в переменной i, преобразовать встроку.2.

Входной поток состоит из слов. Длина слова не превышает 80символов. Разделители между словами: пробел, запятая, конецстроки.a) Распечатать входной поток по одному слову в строке.b) Распечатать размер самой длинной строки.163.4.5.6.c) Распечатать самую длинную строку.Построить вертикальную гистограмму частоты вхождения произвольных символов во вводимую из стандартного входного потока строку. Гистограмма должна занимать все окно, т.е.

масштабирование должно быть произведено как по вертикали, так и погоризонтали.Ввести строку из стандартного входного потока в массив типаchar, удалить из строки комментарии. (/* . . . */) Дополнительныемассивы не использовать.Написать машинно-независимую программу, обнуляющую каждую четную двоичную единицу в числе типа int.Написать машинно-независимую программу, транспонирующуюдвоичный код целого.17ТЕМА 3. Понятие функции. Общая структура программы. Области видимости и существования переменныхПонятие функцииКак уже говорилось, программа на языке Си представляет собой набор функций.

Для того, чтобы программа была выполняемой,она должна содержать функцию с названием main, которой передается управление при запуске программы на выполнение.В Си отсутствует понятие вложенных функций, все функциинаходятся на одном уровне видимости (глобальном), и их именадолжны быть уникальны в рамках программы.В стандарте ANSI C представлено два способа описания и определения функций, так называемые «новая» (введенная стандартом) и «старая» (используемая до принятия стандарта) нотации.Согласно новой нотации определение любой функции имеет следующий вид:[<тип результата>]<имя функции>([список параметров]){ [декларации][операторы]}Согласно старой нотации функция определяется следующим образом:[<тип результата>]<имя функции>([список имен парам.])[описание параметров]{ [декларации][операторы]}В этом случае в круглых скобках после имени функции перечисляются имена параметров, а их типы задаются перед первой открывающей фигурной скобкой.Отметим, что запись параметров в старой нотации можновстретить лишь в очень старых кусках кода на языке Си, написанных до введения первой версии стандарта ANSI C 1989 года.

Компиляторы (и стандарт) допускают такую форму записи лишь из соображений обратной совместимости со старым кодом. Ни при какихобстоятельствах программисту не следует использовать старую нотацию при создании новых программ на языке Си.Возвращаемое значениеФункция может возвращать одно значение, тип которого указывается в заголовке, а само значение задается выражением в операторе return:return <выражение>;18Оператор return возвращает управление вызвавшей функции. Выполнение оператора return в функции main вызовет завершениепрограммы.Если возвращаемое значение имеет тип int, то тип результата приописании функции можно не указывать (хотя это и не является хорошим стилем программирования).В языке Си нет разделения на процедуры и функции.

Функция может не возвращать значение, тогда вместо типа результата при описании функции следует писать void, а оператор returnиспользуется без возвращаемого значения:void f(int a) {/*…*/return;}Попытка использовать оператор return с параметром в функции, не возвращающей значения (и наоборот) приведет к ошибкекомпиляции.Прототипы функцийВ стандарт Си было добавлено средство контроля за соответствием фактических параметров в вызове функции ее формальнымпараметрам. Если вызов функции расположен в теле программы доее определения, то до использования такой функции (обычно в начале программного файла или в подключаемом заголовочном файле)задается ее описание, или прототип. Синтаксически прототип повторяет заголовок функции, за которым вместо ее тела следует точкас запятой.При отсутствии прототипа функции, если в выражении встретилось имя, нигде ранее не описанное, за которым следует открывающая скобка, компилятор будет считать его именем функции, возвращающей значение типа int, не делая никаких предположений оее параметрах.

Это означает, что при несоответствии типов формальных и фактических параметров автоматическое приведение типов не осуществляется, что может привести к ошибочному результату. А при наличии прототипа функции все приведения типов осуществляются автоматически.Согласованность имен параметров в прототипе и в определении функции не требуется, более того, в прототипе могут быть указаны только типы параметров без имен.Если функция не принимает никаких параметров, в круглыхскобках после ее имени следует указать ключевое слово void. «Пустой» список параметров в прототипе функции не говорит компилятору о том, что их нет – в последнем случае компилятор просто не19делает никаких предположений о количестве и типах параметровфункции (как и в случае отсутствия прототипа).В случае старой нотации в прототипе функции параметры неуказываются, и компилятор не может обнаружить ошибок при несоответствии количества формальных и фактических параметров илиих типов.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5288
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее