언어마다 다른 것 · 43
크레이콘만의 규칙
나라 말로 쓰는 키워드, 계산을 멈추는 빈값, 엄격한 ==, 이어 내려가지 않는 선택.
이 단원은 Craykon에서 배워요.
이 단원은 크레이콘 자체 이야기예요.
다른 7개 언어는 키워드가 영어(if·for·return)로만 정해져 있어요.
크레이콘은 키워드를 나라 말로 쓰고, 빈값·==·선택이 다른 언어보다 엄격해요.
아래 예제는 결석(-)을 빈값으로 넣은 점수 목록에서 빈값은 건너뛰고, 나머지에 선택으로 등급을 매긴 뒤 평균을 내요.
n = 콘솔.줄읽기().수로변환();점수들 = [];반복 (i = 0; i < n; i++){ 줄 = 콘솔.줄읽기(); 만약 (줄 == "-") { 점수들.넣기(빈값); } 아니면 { 점수들.넣기(줄.수로변환()); }}합 = 0;낸사람 = 0;각각 (점수 에서 점수들){ 만약 (점수 == 빈값) { 콘솔.쓰기("? " + 점수); 건너뛰기; } 합 += 점수; 낸사람 += 1; 선택 (수학.내림(점수 / 10)) { 경우 10: 경우 9: 콘솔.쓰기(점수 + " A"); 그만; 경우 8: 콘솔.쓰기(점수 + " B"); 그만; 그밖에: 콘솔.쓰기(점수 + " C"); 그만; }}콘솔.쓰기(합 / 낸사람);콘솔.쓰기("85" == 85);5 92 - 78 85 -
92 A ? 빈값 78 C 85 B ? 빈값 85 false
핵심
- 키워드를 나라 말로 써요.
한 스크립트 안에서 섞어 써도 같은 프로그램이라만약 (n > 3) { Console.WriteLine(n); }도 돌아가요. - 저장되고 실행되는 프로그램은 하나라서, 화면 언어를 바꾸면 같은 코드가 그 나라 말로 다시 찍혀요.
편집기에서는 같은 코드를 타일로 짤 수도 있고, 타일과 글을 오가며 고쳐도 돼요. - 빈값은 '값이 없음'이에요(다른 언어의
null·None).
빈값으로 계산하거나 크기를 비교하면 그 자리에서 멈춰요.
문자열과 이으면 멈추지 않고빈값이라고 보여요(예제의? 빈값). ==는 엄격해요.
타입이 다르면 늘 거짓이라0 == 거짓도거짓이에요(화면에는false).
JavaScript의===와 같다고 생각하면 돼요.선택은 맞는 경우 하나만 실행하고 아래로 이어 내려가지 않아서그만을 안 써도 돼요.
여러 값은경우 10, 9:처럼 쉼표로 묶어요.- 수는 하나뿐이에요(JavaScript와 같은 64비트 실수).
7 / 2는3.5라서 십의 자리는수학.내림(점수 / 10), 정수 나눗셈은수학.몫(7, 2)(→3)을 써요.
2^53을 넘는 정수는 정확하지 않아요.
언어별로 쓰는 법
| Craykon | 한국어 키워드 만약·아니면·반복·각각·동안·돌려주기·선택은 영어로 if·else·for·foreach·while·return·switch, 일본어로 もし·繰り返す…, 중국어로 如果·循环…이에요.이름도 콘솔.쓰기·Console.WriteLine·コンソール.書く·控制台.输出이 모두 같은 것이에요 |
|---|
자주 하는 실수
빈값으로 계산했어요
점수 = 빈값;
콘솔.쓰기(점수 + 1);→ "빈값으로는 계산할 수 없어요(+)" 오류로 멈춰요. JavaScript는 null + 1이 1, undefined + 1이 NaN으로 조용히 틀린 수를 내지만, 크레이콘은 그런 수를 만들지 않아요
계산 전에 만약 (점수 == 빈값)으로 먼저 물어봐요.
키워드를 변수 이름으로 썼어요
경우 = 3;→ "'case'·'default'는 선택(switch) 안에서만 써요" 오류. 모든 나라 말의 키워드가 예약어라서 나·경우·에서·if·場合도 이름으로 못 써요
키워드가 아닌 다른 이름을 골라요.
읽은 문자열을 그대로 수와 비교했어요
콘솔.쓰기("85" == 85);→ false — 콘솔.줄읽기()로 읽은 값은 늘 문자열이고, 타입이 다르면 ==는 거짓이에요
수와 비교하려면 .수로변환()부터 해요.
언어마다 다른 점
빈값은 계산에 들어가는 순간 멈춰요.
목록이나 입력에 빈값이 섞일 수 있으면, 더하거나 비교하기 전에
빈값은 계산에 들어가는 순간 멈춰요.
목록이나 입력에 빈값이 섞일 수 있으면, 더하거나 비교하기 전에
== 빈값으로 먼저 걸러 내세요.