Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Урок 2. Первая программа на языке Си↑ Стр 1 из 12Следующая ⇒ Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Арифметические операции Компьютер умеет не только складывать числа, но и вычитать, умножать, делить. Для выполнения этих действий в языке Си используются знаки арифметических операций: + сложение Порядок выполнения математических операций в языке программирования такой же, как и в математике: в первую очередь выполняются умножение и деление, во вторую - сложение и вычитание. (a+b)/(c-d) Скобки в данном случае как раз позволяют установить нужный порядок выполнения операций. Задания для самостоятельной работы 1. Составить программу вывода на экран целого числа, вводимого с клавиатуры. Задания представлены по наростанию сложности.
Урок 4. Как научить компьютер решать задачи Сам по себе компьютер ничего делать не будет. Компьютеру надо разъяснить по шагам, что и в какой последовательности следует выполнять. Другими словами, должен быть составлен алгоритм решения задачи. Линейный алгоритм Составим алгоритм решения математической задачи: найти гипотенузу прямоугольного треугольника, если известны катеты. 1. Возвести первый катет в квадрат; Это пример записи линейного алгоритма. Алгоритм называется линейным, если все этапы решения задачи выполняются строго последовательно. Попробуем теперь разработать алгоритм и составить программу вычисления площади квадрата по известной стороне. Будем считать, что длина стороны задана в виде целого числа. 1. Ввести значение стороны квадрата;
Программа приведена ниже: #include<stdio.h>// подключение библиотеки ввода/вывода Константы Примерами констант являются числа (целые и вещественные), участвующие в вычислениях. Типы констант такие же, как и переменных. 325, 14, 0, -500 - вещественные числа, состоят из целой и дробной части, причем целая часть от дробной отделяется точкой. Например, число "пи" в вычислениях можно записать в виде вещественной константы с любым разумным числом знаков в дробной части: 3.1415 - строковые константы. Это любой текст, заключенный в двойные кавычки. Строка может содержать некоторые специальные символы, например символ '\n', с которым мы уже встречались и который означает перевод курсора на следующую строку. Например, функция printf() в качестве параметра может содержать текстовую строку: "Введите сторону:\n" - любой отдельный символ тоже является константой, он записывается в апострофах (одинарных кавычках): 'a', '+', '@', '\n' Последняя запись принимается, как уже знаем, за один символ. Резюме Для решения поставленной задачи вначале следует разработать алгоритм и определить, какие ячейки памяти понадобятся. Компьютер все действия выполняет над ячейками памяти. Число в ячейку можно поместить либо с использованием функции ввода, либо с помощью присваивания. Компьютер различает числа целые и вещественные. Вопросы для самопроверки 1. Что такое линейный алгоритм Задания для самостоятельной работы 1. Во всех следующих заданиях требуется разработать алгоритм и составить программу на языке Си. Задания приведены по возрастанию их сложности. 1. Дана сторона квадрата. Найти его периметр.
Конец формы
Алгоритм разветвляющийся В линейных алгоритмах все команды выполняются одна за другой последовательно. Однако часто приходится выбирать тот или иной вариант действий в зависимости от некоторого условия, то есть, если условие выполняется, поступать одним способом, а если не выполняется - другим. 1. Поместить в ячейки x и y числа. В этом алгоритме в шаге 2 записано разветвление. Разветвление всегда начинается со слова ЕСЛИ, после которого обязательно записывается УСЛОВИЕ. Дальнейшая работа алгоритма определяется тем, выполняется или нет УСЛОВИЕ. У нас в качестве условия выступает сравнение содержимого ячеек x и y. if (условие) оператор_1; else оператор_2; где if (условие) оператор; Вариант программы с полным условным оператором приведен ниже: #include<stdio.h> Запишем вариант программы с использованием сокращенной формы условного оператора: #include<stdio.h>
По возможности следует избегать программирования условного оператора с else, поскольку это усложняет логику программы и может привести к неверной реализации алгоритма. Понятие блока операторов Если в случае выполнения условия вместо одного необходимо выполнить сразу несколько операторов, то они заключаются в фигурные скобки. Несколько операторов, заключенных в фигурные скобки, называются блоком операторов. Условный оператор с блоком оператороввыглядит следующим образом: if(условие) Рассмотрим пример. Пусть требуется написать программу, решающую линейное уравнение: k*x+b=0 (k не равно 0) Эта задача реализуется с помощью простого линейного алгоритма, решение находится по формуле x=-b/k, для работы алгоритма вводятся значения b и k. Однако есть одна тонкость: в условии говорится, что k не должно быть равно нулю. Поскольку заранее неизвестно, какие числа будут введены, надо в программе уметь отделить этот случай. Здесь как раз можно использовать условный оператор, проверяющий значение k, и в случае если k равно 0, остановить выполнение программы с помощью блока операторов. Фрагмент программного кода: if(k==0) Здесь использован еще один оператор языка Си - return. Он позволяет немедленно выйти из программы из любой ее точки. Если выход выполняется из функции main(), как в наших программах, управление передается среде Linux. Значение 0 не используется. Вложенный условный оператор В операторе if - else непосредственно после ключевых слов if и else должны следовать другие операторы. Если хотя бы один из них является оператором if, его называют вложенным. Согласно принятому в языке Си соглашению, слово else всегда относится к ближайшему предшествующему ему if. float x,y,z,max; // Выделены ячейки памяти На примере этой программы видно, как важно записывать строки кода с отступами. При этом видна вся структура программы, понятен программный код, легче обнаруживать ошибки.
Резюме В этом уроке вы познакомились со вторым типом алгоритмов - разветвляющимися алгоритмами. Они реализуются с помощью условного оператора. Условный оператор можно использовать в полной или сокращенной форме. Вопросы для самопроверки 1. Какие виды условных операторов вы знаете?
2. адания для самостоятельной работы к уроку 5 3. Во всех заданиях следует составить программу на языке Си. Задания приведены по возрастающей сложности 1. Определить максимальное и минимальное значения из двух различных вещественных чисел. 4. В каком году началась вторая мировая война?
5. 6. Написать программу, которая вычисляет оптимальный вес человека, сравнивает его с реальным и выдает рекомендацию о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в сантиметрах) - 100. Рекомендуемый вид экрана во время работы программы: 6. Введите в одной строке рост (в см.) и вес и нажмите <Enter>
7. 7. Даны радиус круга и сторона квадрата. У какой фигуры площадь больше? Задача о кирпиче 47. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия. Пусть в ячейки a, b, c, x, y введены числа. Первый вариант записи условного оператора: 48. if(x>a && y>b) printf("Кирпич пройдет\n"); 49. Однако глядя на этот кирпич и отверстие, мы-то быстро сообразим, что так кирпич не пройдет и его надо повернуть "боком". Компьютер же этого не может видеть, и ему надо подробно разъяснить, как поворачивать этот самый кирпич. Точнее, поскольку порядок ввода значений переменных заранее неизвестен, в записи условия надо рассмотреть все варианты их сочетания. Полный вариант записи условия: 50. if( 51. Скобки в записи этого условия необязательны, нужный порядок выполнения операций соблюден. Резюме 53. В этом уроке вы узнали, как записывается сложное логическое условие, познакомились с порядком выполнения логических операций. Вопросы для самопроверки 55. 1. Какие логические операции вы знаете?
Задания для самостоятельной работы к уроку 6 1. Проверить, принадлежит ли число, введенное с клавиатуры, интервалу (-5.1, 3.6). В/(Р*Р) Если ИМТ менее 18,5 то Дефицит массы тела. Введите в одной строке вес и рост (в м.) и нажмите <Enter> Зачем нужны циклы? Теперь задумаемся, как вывести, например, на экран приветствие 3 раза. Конечно, можно написать 3 раза оператор printf(), но если надо вывести строку 100 раз, то программа значительно увеличится. Поэтому надо использовать возможность повторения действий. Такой механизм реализуется с помощью циклов.
Табулирование функции Циклы используются во многих алгоритмах и в сочетании с другими операторами. Это позволяет решать уже довольно широкий класс задач. Одной из таких задач является табулирование функции. #include<stdio.h> Интересным здесь представляется описание спецификаций формата, содержащееся в текстовой строке: "%6.1f\t| %6.2f\n" Прежде всего, мы видим, что между знаком % и спецификацией вещественного типа f вставлено число с целой и дробной частями. Такая запись используется для более удобного представления чисел на экране. Число 6.1 означает, что при печати для значения переменной будет отведено 6 позиций экрана, из них под дробную часть - одна позиция. Таким образом вещественные числа округляются при выводе на экран. (А сколько остается под целую часть? давайте подсчитаем: 6-1 и еще 1 для точки, итого 4 позиции.) Другое новшество - использование в строке спецификации формата еще одного парного символа '\t', который называется символом табуляции. Один подобный парный символ мы уже использовали много раз: перевод строки '\n'. Символ табуляции позволяет при выводе переместить курсор на определенное число позиций и тем самым выровнять печать. А еще один парный символ '\а' заставит компьютер "пискнуть". Кроме того, в строке спецификации формата можно использовать практически любые символы (вертикальную черту, пробелы и др.) с тем, чтобы наглядно оформить результат. Резюме Конструкция for используется для организации циклов с фиксированным числом повторений. Циклом управляет переменная - параметр цикла. Вопросы для самопроверки 1. В каких случаях используется оператор цикла с параметром? 2. Задания для самостоятельной работы к уроку 7 3. Во всех заданиях следует составить программу на языке Си. Задания приведены по возрастающей сложности 1. Написать программу, которая 10 раз выводит на экран имя и фамилию. 4. * * * * 5. 3. Написать программу, которая выводит таблицу степеней двойки (от нулевой до десятой). Ниже представлен рекомендуемый вид экрана во время работы программы: 6. Таблица степеней двойки 7. 4. Написать программу, которая выводит на экран таблицу умножения, например, на 7. Ниже представлен рекомендуемый вид экрана во время работы программы: 8. 7 * 1 = 7 9. 5. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных нечетных чисел (возможны различные варианты записи цикла). Ниже представлен рекомендуемый вид экрана во время работы программы: 10. Число Квадрат 11. 6. Напечатать таблицу соответствия между весом в фунтах и весом в килограммах для значений 1, 2,..., 10 фунтов (1 фунт = 453 г.) 12. tf = 9/5*tc + 32 13. 8. Вывести "столбиком" значения sin0,1, sin0,2,..., sin1,5.
Цикл с условием (while) Очень часто заранее невозможно сказать, сколько раз надо выполнить какую-то операцию, но можно определить условие, при котором она должна заканчиваться. Такое задание на русском языке может выглядеть так: делай эту работу до тех пор, пока она не будет закончена (пили бревно, пока оно не будет распилено; иди вперед, пока есть время). Слово пока на английском языке записывается как while, и так же называется еще один вид цикла. while(условие) Мы видим, что внешний вид этого цикла проще, чем цикла с параметром (for). Циклом управляет всего одно условие, которое записано в заголовке после слова while в круглых скобках. Сразу возникает вопрос: зачем столько разновидностей циклов и в каких задачах их использовать? Вернемся к примеру предыдущего урока: вывести на экран три раза приветствие. Попробуем его реализовать с помощью цикла while. #include<stdio.h> Результат этой программы будет точно такой же, как и для цикла for из Урока 7, но код длиннее, и, очевидно, неудобней. Когда же лучше while? Рассмотрим простой пример. #include<stdio.h> В этой программе не очень удобным моментом является то, что требуется до цикла задать начальное значение N, иначе значение этой переменной будет неопределенно ("мусор"), и нет гарантии, что в этой ячейке не ноль, и цикл даже на начнется. Другими словами, здесь более удобен цикл, в котором тело выполнятся хотя бы один раз. Такую работу сможет сделать цикл с постусловием. Резюме Операторы while и do - while используются для организации циклов, когда числом повторений заранее неизвестно. Циклом управляет только логическое условие. Тело цикла while может ни разу не выполниться, цикл do - while выполнится по крайней мере один раз. Вопросы для самопроверки 1. В каких случаях используется оператор цикла с условием?
Задания для самостоятельной работы к уроку 8 1. С помощью цикла while запишите программу табулирования функции (см. задания 6, 7, 8, 9, 10 Урока 7).
Целочисленное деление С целочисленными и вещественными данными все операции выполняются одинаково, кроме деления. При выполнении арифметических операций действует правило: если операнды одного типа, то результат операции этого же типа. Если умножаем два целых числа - результат тоже целое число. Если делим одно вещественное число на другое, то и частное тоже вещественное число (то есть содержит целую и дробную часть). Распространяя это правило на операцию деления целых чисел, можно прийти к заключению: если целое делим на целое, результат тоже целое. Дробная часть просто отбрасывается. Таким образом, имея описание переменных и действия: int n,m k; получим, что k=2 (поскольку при "обычном" делении 10/4=2,5). Это свойство целочисленного деления используется в разнообразных алгоритмах с целыми числами. Рассмотрим одну такую задачу: #include<stdio.h> В этой программе в тело цикла мы поставили оператор печати промежуточных результатов с тем, чтобы наглядно увидеть, как работает программа: printf("N=%d count=%d\n", N, count); Пусть при выполнении было введено число 68792. Тогда протокол (порядок действий) работы программы следующий: Введите число Кстати, в этой программе использовали один из приемов отладки программ: промежуточную печать. Оператор printf() можно ставить в любой точке программы, где мы не совсем уверены в промежуточных результатах. Остаток от деления Остается открытым вопрос: окончательно ли пропадает остаток от деления. А вот и нет. Существует специальная операция, похожая на деление (в том смысле, что она тоже является операцией деления), но результат которой как раз и есть остаток от деления. Эта операция обозначается знаком процента % и применяется только для целочисленных переменных. int n,m, k; В результате операции получим остаток от деления k=2, т.к. 10-8=2. Операцию целочисленного деления применяют в разных целочисленных алгоритмах. Она удобна, если надо, например, из десятичного числа выделить последнюю цифру. В этом случае достаточно число нацело разделить на 10, остаток будет принадлежать диапазону от 0 до 9. С помощью совместного использования обеих операций целочисленного деления можно реализовать много алгоритмов. Попробуем, например, "растащить" трехзначное число на отдельные цифры. Алгоритм рассмотрим на примере. #include<stdio.h>
|
|||||||||||||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 2146; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.143.4.178 (0.019 с.) |