Язык Си. Алгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность
Скачать 4.66 Mb.
|
Введение Переменные Ветвления Сложные условия Циклы Циклы с переменной Оператор выбора Отладка программ Графика Графики функций Процедуры Анимация Функции Случайные числа Тема 1. Введение Алгоритм Свойства алгоритма
понятность: должен включать только команды, известные исполнителю (входящие в СКИ) определенность: при одинаковых исходных данных всегда выдает один и тот же результат конечность: заканчивается за конечное число шагов массовость: может применяться многократно при различных исходных данных корректность: дает верное решение при любых допустимых исходных данных Алгоритм – это четко определенный план действий для исполнителя. Программа Программа – это
Команда – это описание действий, которые должен выполнить компьютер.
что нужно с ними сделать? куда поместить результат? Языки программирования Машинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде процессора (ассемблер) Языки высокого уровня – приближены к естественному (английскому) языку, легче воспринимаются человеком, не зависят от конкретного компьютера
профессиональные: Си, Фортран, Паскаль для задач искусственного интеллекта: Пролог, ЛИСП для Интернета: JavaScript, Java, Perl, PHP, ASP Язык Си 1972-1974 – Б. Керниган, Д. Ритчи
много шансов сделать ошибку, которая не обнаруживается автоматически Простейшая программа main() { } главная (основная) программа всегда имеет имя main начало программы «тело» программы (основная часть) конец программы Что делает эта программа? ? Что происходит дальше? main() { } first.cpp исходный файл first.o транслятор ЪБzЦ2?|ё3БКа n/36ШпIC+И- ЦЗ_5МyРЧб s6bд^:/@:лЖ1_ объектный файл стандартные функции редактор связей (компоновка) MZPо:ЄPэ_еЗ"!_ `кn,ЦbЄ-Щр1 G_БАC, _Ощях¤9жФ first.exe исполняемый файл по исходному файлу можно восстановить остальные исполняемый файл можно запустить ! текст программы на Си или Си++ Вывод текста на экран #include main() { printf("Привет!"); } include = включить файл stdio.h: описание стандартных функций ввода и вывода вызов стандартной функции printf = print format (форматный вывод) этот текст будет на экране Как начать работу? здесь мы набираем программу сообщения об ошибках Открыть Новый Сохранить Закрыть Оболочка Dev C ++ 4.9 IDE = Integrated Development Environment интегрированная среда разработки:
транслятор для перевода текстов программ на Си и Си++ в команды процессора компоновщик для создания исполняемого файла (EXE-файла), подключаются стандартные функции отладчик для поиска ошибок в программах Управление клавишами
Где ошибки? 2 x ЛКМ эта ошибка обнаружена здесь! Ошибка может быть в конце предыдущей строки! ! Наиболее «популярные» ошибки
Ждем нажатия любой клавиши #include #include main() { printf("Привет!"); // вывод на экран /* ждать нажатия клавиши */ } файл conio.h: описание функций для работы с клавиатурой и монитором ждать нажатия на любую клавишу комментарий до конца строки комментарий между /* и */ getch(); Переход на новую строку #include #include main() { printf("Привет,\n Вася!"); getch(); } Привет, Вася! на экране: последовательность \n (код 10) переход на новую строку \n Задания «4»: Вывести на экран текст "лесенкой" Вася пошел гулять «5»: Вывести на экран рисунок из букв Ж ЖЖЖ ЖЖЖЖЖ ЖЖЖЖЖЖЖ HH HH ZZZZZ Тема 2. Переменные Что такое переменная? Переменная – это ячейка в памяти компьютера, которая имеет имя и хранит некоторое значение.
При записи в ячейку нового значения старое стирается. Типы переменных int – целое число (4 байта) float – вещественное число, floating point (4 байта) char – символ, character (1 байт) Имена переменных Могут включать
знак подчеркивания _ цифры 0-9 НЕ могут включать русские буквы пробелы скобки, знаки +, =, !, ? и др. Имя не может начинаться с цифры! ! Какие имена правильные? AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B Объявление переменных Объявить переменную = определить ее имя, тип, начальное значение, и выделить ей место в памяти. main() { int a; float b, c; int Tu104, Il86=23, Yak42; float x=4.56, y, z; char c, c2='A', m; } Если начальное значение не задано, в этой ячейке находится «мусор»! ! целая переменная a вещественные переменные b и c целые переменные Tu104, Il86 и Yak42 Il86 = 23 вещественные переменные x, y и z x = 4,56 · целая и дробная части отделяются точкой символьные переменные c, c2 и m c2 = 'A' Оператор присваивания Оператор – это команда языка программирования высокого уровня. Оператор присваивания служит для изменения значения переменной. Пример a = 5; x = a + 20; y = (a + x) * (x – a); 5 5 5+20 25 600 30*20 Оператор присваивания Общая структура: Арифметическое выражение может включать
имена переменных знаки арифметических операций: + - * / % вызовы функций круглые скобки ( ) умножение деление остаток от деления имя переменной = выражение; куда записать что Для чего служат круглые скобки? ? Сложение двух чисел Задача. Ввести два целых числа и вывести на экран их сумму. Простейшее решение: #include #include main() { int a, b, c; printf("Введите два целых числа\n"); scanf ("%d%d", &a, &b); c = a + b; printf("%d", c); getch(); } подсказка для ввода ввод двух чисел с клавиатуры вывод результата Ввод чисел с клавиатуры scanf ("%d%d", &a, &b); формат ввода scanf – форматный ввод адреса ячеек, куда записать введенные числа Формат – символьная строка, которая показывает, какие числа вводятся (выводятся).
%f – вещественное число %c – 1 символ %s – символьная строка 12 7652 a – значение переменной a &a – адрес переменной a ждать ввода с клавиатуры двух целых чисел (через пробел или Enter), первое из них записать в переменную a, второе – в b Что неправильно? int a, b; scanf ("%d", a); scanf ("%d", &a, &b); scanf ("%d%d", &a); scanf ("%d %d", &a, &b); scanf ("%f%f", &a, &b); &a %d%d &a, &b убрать пробел %d%d Вывод чисел на экран printf ("%d", c); здесь вывести целое число это число взять из ячейки c printf ("Результат: %d", c); printf ("%d+%d=%d", a, b, c ); формат вывода список значений a, b, c printf ("%d+%d=%d", a, b, a+b ); арифметическое выражение Вывод целых чисел int x = 1234; printf ("%d", x); 1234 printf ("%9d", x); минимальное число позиций 1234 всего 9 позиций или "%i" или "%9i" 5 4 Вывод вещественных чисел float x = 123.4567; printf ("%f", x); 123.456700 printf ("%9.3f", x); минимальное число позиций, 6 цифр в дробной части 123.456 всего 9 позиций, 3 цифры в дробной части printf ("%e", x); 1.234560e+02 стандартный вид: 1,23456·102 printf ("%10.2e", x); 1.23e+02 всего 10 позиций, 2 цифры в дробной части мантиссы Полное решение #include #include main() { int a, b, c; printf("Введите два целых числа\n"); scanf("%d%d", &a, &b); c = a + b; printf("%d+%d=%d", a, b, c); getch(); } Протокол: Введите два целых числа 25 30 25+30=55 это выводит компьютер это вводит пользователь Блок-схема линейного алгоритма начало конец c = a + b; ввод a, b вывод c блок «начало» блок «ввод» блок «процесс» блок «вывод» блок «конец» Задания «3»: Ввести три числа, найти их сумму. Пример: Введите три числа: 4 5 7 4+5+7=16 «4»: Ввести три числа, найти их сумму и произведение. Пример: Введите три числа: 4 5 7 4+5+7=16 4*5*7=140 Задания «5»: Ввести три числа, найти их сумму, произведение и среднее арифметическое. Пример: Введите три числа: 4 5 7 4+5+7=16 4*5*7=140 (4+5+7)/3=5.33 main() { int a, b; float x, y; a = 5; 10 = x; y = 7,8; b = 2.5; x = 2*(a + y); a = b + x; } Какие операторы неправильные? имя переменной должно быть слева от знака = целая и дробная часть отделяются точкой при записи вещественного значения в целую переменную дробная часть будет отброшена Особенность деления в Си При делении целых чисел остаток отбрасывается! ! main() { int a = 7; float x; x = a / 4; x = 4 / a; x = float(a) / 4; x = 1.*a / 4; } 1 0 1.75 1.75 Сокращенная запись операций в Си
инкремент декремент a = a + 1; a++; a = a + b; a += b; a = a - 1; a--; a = a – b; a -= b; a = a * b; a *= b; a = a / b; a /= b; a = a % b; a %= b; |