$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ОПК, семинар №2
Search
Ilya
February 19, 2015
Education
0
88
ОПК, семинар №2
Массивы, ассерты, тесты
Ilya
February 19, 2015
Tweet
Share
More Decks by Ilya
See All by Ilya
Программирование на ЯВУ, семинар 3
ilya
0
160
Программирование на ЯВУ, семинар 2
ilya
0
73
ОПК, семинар №8
ilya
0
55
ОПК, семинар №6
ilya
0
75
ОПК, семинар №4
ilya
0
110
Other Decks in Education
See All in Education
アジャイルの知見から新卒研修作り、そして組織作り
pokotyamu
0
120
The Next Big Step Toward Nuclear Disarmament
hide2kano
0
170
吉岡研究室紹介(2025年度)
kentaroy47
0
780
QR-koodit opetuksessa
matleenalaakso
0
1.7k
焦りと不安を、技術力に変える方法 - 新卒iOSエンジニアの失敗談と成長のフレームワーク
hypebeans
1
610
Web 2.0 Patterns and Technologies - Lecture 8 - Web Technologies (1019888BNR)
signer
PRO
0
3k
Портфолио - Шынар Ауелбекова
shynar
0
150
核軍備撤廃に向けた次の大きな一歩─核兵器を先には使わないと核保有国が約束すること
hide2kano
0
190
Requirements Analysis and Prototyping - Lecture 3 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.4k
SJRC 2526
cbtlibrary
0
160
Use Cases and Course Review - Lecture 8 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.3k
HTML5 and the Open Web Platform - Lecture 3 - Web Technologies (1019888BNR)
signer
PRO
2
3.1k
Featured
See All Featured
Believing is Seeing
oripsolob
0
10
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
The Limits of Empathy - UXLibs8
cassininazir
1
190
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
57
37k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
How STYLIGHT went responsive
nonsquared
100
6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
Six Lessons from altMBA
skipperchong
29
4.1k
The SEO identity crisis: Don't let AI make you average
varn
0
32
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
BBQ
matthewcrist
89
9.9k
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]); } }