Информатика
Contents
\(\newcommand{\block}[2]{\begin{#1} #2 \end{#1}}\) \(\newcommand{\cases}[1]{\block{cases}{#1}}\) \(\newcommand{\up}[2]{\stackrel{#1}{#2}}\) \(\def\dn#1#2{\mathrel{\mathop{#2}\limits_{#1}}}\) \(\def\ident{\Longleftrightarrow}\) \(\def\thus{\Rightarrow}\) \(\newcommand{\set}[1]{ \{ #1 \} }\) \(\newcommand{\bigset}[1]{ \left \{ #1 \right \} }\) \(\newcommand{\bracs}[1]{ ( #1 ) }\) \(\newcommand{\bigbracs}[1]{ \left ( #1 \right ) }\) \(\newcommand{\bkets}[1]{\langle #1 \rangle}\) \(\newcommand{\bigbkets}[1]{\left \langle #1 \right \rangle}\) \(\newcommand{\mat}[1]{\block{Vmatrix}{#1}}\) \(\newcommand{\det}[1]{\block{vmatrix}{#1}}\) \(\newcommand{\pmat}[1]{\block{pmatrix}{#1}}\) \(\newcommand{\emat}[1]{\block{matrix}{#1}}\) \(\renewcommand{\geq}{\geqslant}\) \(\renewcommand{\leq}{\leqslant}\) \(\newcommand{\upline}[1]{\overline{#1}}\) \(\newcommand{\dnline}[1]{\underline{#1}}\) \(\def\ex{\exists}\) \(\def\exo{\ex!}\) \(\renewcommand{\fal}{\forall}\) \(\renewcommand{\int}{\intop}\) \(\def\inf{\infty}\) \(\renewcommand{\tg}{\tan}\) \(\renewcommand{\phi}{\varphi}\) \(\renewcommand{\epsilon}{\varepsilon}\) \(\def\alp{\alpha}\) \(\def\lam{\lambda}\) \(\def\gam{\gamma}\) \(\def\eps{\epsilon}\) \(\def\sig{\sigma}\) \(\newcommand{\NN}{\mathbb{N}}\) \(\newcommand{\ZZ}{\mathbb{Z}}\) \(\newcommand{\RR}{\mathbb{R}}\) \(\newcommand{\CC}{\mathbb{C}}\) \(\newcommand{\FF}{\mathbb{F}}\) \(\newcommand{\QQ}{\mathbb{Q}}\) \(\newcommand{\EE}{\mathbb{E}}\) \(\newcommand{\UU}{\mathcal{U}}\) \(\newcommand\E{\mathbbold{e}}\) \(\newcommand\F{\mathbbold{f}}\) \(\newcommand\G{\mathbbold{g}}\) \(\newcommand{\rawOlim}[3]{\dn{{#1}\rightarrow{#2}}{#3}}\) \(\newcommand{\lim}[2]{\rawOlim{#1}{#2}{lim}}\) \(\newcommand{\uplim}[2]{\rawOlim{#1}{#2}{\upline{lim}}}\) \(\newcommand{\dnlim}[2]{\rawOlim{#1}{#2}{\dnline{lim}}}\) \(\newcommand{\norm}[1]{\left \lVert #1 \right \rVert}\) \(\newcommand{\ord}[1]{\operatorname{ord}(#1)}\) \(\newcommand{\ans}[1]{\textbf{Ответ}: #1.}\) \(\renewcommand{\gcd}{\text{НОД}}\) \(\newcommand{\lcm}{\text{НОК}}\) \(\newcommand{\proj}[2]{\text{пр.}_{#1}{#2}}\) \(\newcommand{\U}[2]{U_{#1}(#2)}\)
Информатика#
Содержание
Балловая Ирина Филлиповна
Доцент кафедры 12
16 лекций, кажд мес-два 3-х часовые лабы
Литература#
ЛЕК 1#
Надо научиться:
Анализировать формулировку задачи
Определить типы данных для решение задачи на компьютере
Разрабатывать алгоритм решения поставленной задачи
Разрабатывать программу на языке программирования в соответствии с созданным аллгоритмом
Отлаживать решение задачи на достаточном количестве тестов
Получать правильное решение задачи
Изучатб язык Си и правила работы в операционной среде Linux
Программа - записанная на языке, понятном для компьютеру, последовательность действий для получения конкретного результата
Алгоритм + структура данных (Орпеледение по Никлаусу Вирту) = программа
Алгоритм - конечное множество правил, определяющее процесс переработки одной, входной системы данных, в другую, выходную, систему данных
Алгоритм:
Конечный (имеет окончание)
Дискретный (можно разложить на элементарные действия)
Однозначный (исполняется при любых условиях, на любом исполнителе)
Массовость (для любых данных алгоритм работает)
Нет универсального алгоритма!
СЕМ 1#
Элементы схемы#
Правила соединения элементов:
все блоки имеют координаты
координаты по горизонтали - цифры
координаты по вертикали - буквы
Цикл “пока”#
while P do {
S1;
S2
}
Цикл “до”#
do {
S1;
S2
} while P
Алгоритмизация операция с целимыми числами#
Число в любой системе счисления - некий многочлен
\(X = a_mp^m + a_{m-1}p^{m-1} + \dots + a_0p^0 + a_{-1}p^{-1} + \dots + a_{m-n+1}p^{m-n+1}\)
\(p\) - основание системы счисления
\(m\) - наивысшая степень основании системы счисления в записи числа
\(n\) - количество разрядов в записи числа
\(\underline{4743}\)
\(m=3\)
\(0, \dots, 9\)
\(395,76 = 3\cdot10^2+9\cdot10^1+5\cdot10^0+7\cdot10^{-1}+6\cdot10^{-2}\)
\(395 \rightarrow 593\)
\(3\cdot10^2+9\cdot10^1+5\cdot10^0 = 5\cdot10^2+9\cdot10^1+3\cdot10^0\)
Задача: из произвольного целого числа получить палиндромное
\(48\)
\(48 + 84 = 132\)
\(132 + 231 = 363\)
#include <studio.h>
int main() {
int t, f = 0, p;
int a, n;
printf("Введите число n\n");
scanf("%d", &n);
t = n;
while (f == 0) {
a = t;
p = 0;
while (a != 0) {
p = p * 10;
k = a % 10;
p = p + k;
a = a / 10;
}
if (a != k) {
t = t + p;
} else {
f = 1;
}
}
printf("результат\n");
printf("%10d %10d", n, p);
return 0;
}
#inlcude <studio.h>
int inv( int n ) {
int t, f = 0, p;
int a;
t = n;
while (f == 0) {
a = t;
p = 0;
int k;
while (a != 0) {
p = p * 10;
k = a % 10;
p = p + k;
a = a / 10;
}
if (p != t) {
t = t + p;
} else {
f = 1;
}
}
return p;
}
int main() {
int aa = 1, n;
printf("Начало!\n");
printf("Число ...");
scanf("%d", &n);
int nepal = inv(n);
printf("...");
return 0;
}
ДЗ:
Из заданного числа получить число состоящее только из четных цифр числа
Из цифр числа составить минимальное число
ЛЕК 20/09/22#
Данные для заходи на сервер
samos.dozen.mephi.ru
@DozenBot
C
простой
быстрый
контролит память
сложный в разработке
недостаточная стандартизация
Pascal
компилируемый
строгая статическая типизация
простой, понятный c-c
проиграл (лох, как cobol / fortran)
Python
удобный
популярный
дофига библотек
динамический
не прыткий
не субер простой
не низкоуровненый
Java
есть
уровень япа
низкий (ассемблер, машинный код)
высокий (с, с++, жава)
способ реализации
компилируемые (с, с++, раст)
интерпретируемые (питон, луа, жс)
встраиваемые (DSL)
по системе типизации
со статический (с, с++, жава)
с динамической (питон, луа, жс)
тип имя_функции(тип параментпараметр_1...)
{
предложение_описания_типа_1
...
предложение_языка_1
...
return [выражение];
}
; - конец предложения
Программа:
описание данных
базовые типы
char
int
float
double
модификаторы
длинны
short
long
long long
знака
signed
unsigned
описание алгоритма
предложение
пустое
условное
составное
переключатель
итерационные циклы
параметрический цикл
объявление данных
СЕМ 22.09.22#
#include <stdio.h>
#include <math.h>
double exp1(double x, int n) {
double S = 1, t=1, y=x*x;
for (int i = 1; i \leq n; i++) {
t = t*(y/i);
s+=t;
}
return S;
}
int main() {
double x = 0;
int n = 0;
scanf("%ff", &x);
scanf("%d", &n);
double S = exp1(x, n);
double S1 = exp(-x*x);
printf("S: %f, S1 %f", S, S1);
return 0;
}
СЕМ 13.10.22#
#include <stdlib.h>
#include <time.h>
int * array_input(int * len) {
scanf("%d", len);
int * a = (int * ) malloc( * len * sizeof(int));
if (!a)
return NULL;
for (int i = 0; i < * len; i++) {
scanf("%d", & a[i]); // &a[i] = a + i
}
return a;
}
void array_print(const int * a, int len) {
for (int i = 0; i < len; i++) {
printf("%d ", a[i]); // a[i] = *(a+i)
}
printf("\n");
}
void array_remove_dup(int * data, int * len) {
for (int i = 0; i < * len - 1; i++) {
for (int j = i + 1; j < * len; j++) {
if (data[i] == data[j]) {
for (int k = j; k < * len - 1; k++) {
data[k] = data[k + 1];
}
--( * len);
--i;
}
}
}
}
int main() {
int len = 0;
int * array = array_input( & len);
array_print(array, len);
clock_t start = 0, end = 0;
start = clock();
array_remove_dup(array, & len);
end = clock();
array_print(array, len);
printf("%lf\n", (double)(end - start) / CLOCKS_PER_SEC);
free(array);
return 0;
}