![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 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. С помощью совместного использования обеих операций целочисленного деления можно реализовать много алгоритмов. Попробуем, например, "растащить" трехзначное число на отдельные цифры. Алгоритм рассмотрим на примере.
|
|||||||||||||||
Последнее изменение этой страницы: 2016-04-07; просмотров: 1981; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.212.94.18 (0.135 с.) |