Главная страница

Язык Си. Алгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность


Скачать 4.66 Mb.
НазваниеАлгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность
Дата05.02.2023
Размер4.66 Mb.
Формат файлаppt
Имя файлаЯзык Си.ppt
ТипПрограмма
#921318
страница1 из 11
  1   2   3   4   5   6   7   8   9   10   11

Введение
Переменные
Ветвления
Сложные условия
Циклы
Циклы с переменной
Оператор выбора


Отладка программ
Графика
Графики функций
Процедуры
Анимация
Функции
Случайные числа


Тема 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-файла), подключаются стандартные функции
    отладчик для поиска ошибок в программах





Управление клавишами


Новый файл (Создать)


Ctrl+N


Открыть файл


Ctrl+O


Сохранить файл


Ctrl+S


Закрыть окно с программой


Ctrl-F4


Запуск программы


F9


Отменить


Ctrl-Z


Восстановить отмененное


Shift-Ctrl-Z





Где ошибки?


2 x ЛКМ


эта ошибка обнаружена здесь!


Ошибка может быть в конце предыдущей строки!


!





Наиболее «популярные» ошибки


xxx.h: No such file or directory


не найден заголовочный файл 'xxx.h' (неверно указано его имя, он удален или т.п.)


'xxx‘ undeclared (first use this function)


функция или переменная 'xxx' неизвестна


missing terminating " character


не закрыты кавычки "


expected ;


нет точки с запятой в конце оператора в предыдущей строке


expected }


не закрыта фигурная скобка





Ждем нажатия любой клавиши


#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 байт)





Имена переменных


Могут включать
    латинские буквы (A-Z, a-z)
    знак подчеркивания _
    цифры 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 – форматный ввод


адреса ячеек, куда записать введенные числа


Формат – символьная строка, которая показывает, какие числа вводятся (выводятся).
    %d – целое число
    %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;

  1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта