Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ОПК, семинар №2
Search
Ilya
February 19, 2015
Education
0
74
ОПК, семинар №2
Массивы, ассерты, тесты
Ilya
February 19, 2015
Tweet
Share
More Decks by Ilya
See All by Ilya
Программирование на ЯВУ, семинар 3
ilya
0
130
Программирование на ЯВУ, семинар 2
ilya
0
68
ОПК, семинар №8
ilya
0
49
ОПК, семинар №6
ilya
0
72
ОПК, семинар №4
ilya
0
100
Other Decks in Education
See All in Education
第1回全国商業高校Webアプリコンテスト総括
asial_corp
0
400
MonacaEducation導入手引き2024年第1版
asial_edu
0
140
5 занятие. Разбор метода "8 кубиков"бизнес-модели #ideaNN 16.02.2024.
karlov
0
180
Earthquake and Disaster Prevention Information for UTokyo International Students
utokyoissr2360
0
620
Tangible, Embedded and Embodied Interaction - Lecture 9 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
1.2k
[SemanaX-UFCG-2024] Guia descomplicado de entrevistas FAANG
hugaomarques
2
450
高可用性システム構築 - Oracle Data Guard基本編
oracle4engineer
PRO
2
940
D&I推進レポート〜テクノロジー分野のジェンダーギャップとその取り組みについて〜
codeforeveryone
1
800
【潔能講堂】永續環境、擁抱綠能 太陽能光電發展現況與產業製程解析
learnenergy2
0
110
Поступление в ТОГУ 2024
pnuslide
0
34k
墓までもっていくはずだった話
takuro_nakajima
PRO
0
1.3k
財務分析 - 入門編
lsuzuki
0
360
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
324
20k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
115
18k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
How STYLIGHT went responsive
nonsquared
92
4.8k
Optimizing for Happiness
mojombo
370
69k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
20
1.6k
Debugging Ruby Performance
tmm1
70
11k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Building Your Own Lightsaber
phodgson
98
5.7k
How to train your dragon (web standard)
notwaldorf
72
5.1k
Transcript
Функции double linear(double a, double x, double b) { return
a * x + b; } void main() { double a = 1.5, b = 1; int x; double y; for(x = 0; x < 5; x++) { y = linear(a, x, b); printf("%.2f*x+%.2f at %d = %.2f\n", a, b, x, y); } } > 1.50*x+1.00 at 0 = 1.00 > 1.50*x+1.00 at 1 = 2.50 > 1.50*x+1.00 at 2 = 4.00 > 1.50*x+1.00 at 3 = 5.50 > 1.50*x+1.00 at 4 = 7.00
Массивы Массив — последовательная область памяти, для набора однотипных данных.
int array[4]; array[0] array[2] int int int int int int int int int int int int
int a0, a1, a2, a3, a4, a5; a0 = pow(10,
0); a1 = pow(10, 1); a2 = pow(10, 2); a3 = pow(10, 3); a4 = pow(10, 4); a5 = pow(10, 5); printf("%d %d %d %d %d %d\n", a0, a1, a2, a3, a4, a5);
for(i = 0; i < 6; i++) { ai =
pow(10, i); // NO printf("%d ", ai); // NO }
int i; int a[6]; for(i = 0; i < 6;
i++) { a[i] = pow(10, i); printf("%d ", a[i]); } > 1 10 100 1000 10000 100000
void swap(double arr[]) { double x; x = arr[0]; arr[0]
= arr[1]; arr[1] = x; } void main() { double arr[2]; arr[0] = 1.0; arr[1] = 2.0; swap(arr); printf("%f %f\n", arr[0], arr[1]); } > 2.000000 1.000000 Массивы и функции
Нужно больше stdlib.h printf("%f %2.f %.2f\n", M_PI, M_PI, M_PI); >
3.141593 3 3.14 printf("%e %2.e %.2e\n", M_PI, M_PI, M_PI); > 3.141593e+00 3e+00 3.14e+00
#include <stdio.h> #include <stdlib.h> void main() { int i, number;
for(i = 0; i < 5; i++) { number = rand() % 100; printf("%d: %d\n", i, number); } } > 0: 83 > 1: 86 > 2: 77 > 3: 15 > 4: 93 Случайные числа
assert.h int factorial(int n) { // вырезано цензурой } void
main() { int i, result; for(i = 1; i < 6; i++) { result = factorial(i); printf("%d! = %d\n", i, result); } } > 1! = 1 > 2! = 2 > 3! = 6 > 4! = 24 > 5! = 120
printf("%d! = %d\n", -5, factorial(-5)); Segmentation fault (core dumped)
int factorial(int n) { assert(n >= 0); // вырезано цензурой
} printf("%d! = %d\n", -5, factorial(-5)); main: main.c:5: factorial: Assertion `n >= 0' failed. Aborted (core dumped)
Тестирование int celsius_to_fahrenheit(int c) { return c * 9/5 +
32; } int fahrenheit_to_celsius(int f) { return (f - 32) * 5/9; } void main() { printf("%d\n", celsius_to_fahrenheit(30)); // 86 assert(celsius_to_fahrenheit(30) == 86); assert(fahrenheit_to_celsius(86) == 30); assert(celsius_to_fahrenheit(0) == 32); assert(fahrenheit_to_celsius(32) == 0); }
Стиль // Вычисление 2*X^2 + 3*X — 5 для X
int some_fun(int i) { int j=2,k,l=3,m,n=-5; if(i!=0) return j*i*i+l*i+n; else {printf("invalid x %d",i);} return -5; }
int polynomial(int x) { int a = 2, b =
3, c = -5; if(x == 0) { printf("Zero?!!"); return c; } else { return a * pow(x, 2) + b * pow(x, 1) + c; } }
Константы int i; int a[7]; // Ещё хуже, когда a[5]
for(i = 0; i < 6; i++) { a[i] = pow(10, i); printf("%d ", a[i]); } // Совсем плохо, когда так: for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) { ... for(i = 0; i < 6; i++) {
const unsigned size = 6; void main() { int i;
int a[size]; for(i = 0; i < size; i++) { a[i] = pow(10, i); printf("%d ", a[i]); } }