Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

이수연의 티스토리

[DO it! 1인 개발로 플러터 앱 만들기] 1장 - 다트 언어 실습 본문

flutter

[DO it! 1인 개발로 플러터 앱 만들기] 1장 - 다트 언어 실습

suye0n6 2025. 2. 6. 22:43

실습에 들어가기 전 내가 알고있는 C언어와 Dart를 비교하며 코드를 작성해볼 예정이다. 그 과정에서 Dart의 문법이 어디가 다른지 비교하여 Dart의 특성을 정리해보겠다.

 

1. 구구단 만들기

 

 

-내가 생각한 알고리즘 순서

1.변수 2개 선언

2.이중 for문으로 구구단 계산 및 반복 출력

3.출력

 

Dart 코드

void main() {
  int i;  // 단 수를 저장할 변수
  int j;  // 곱해지는 수를 저장할 변수
  
  // 2단부터 9단까지 반복
  for(i = 2; i <= 9; i++)
  {
    // 각 단에 대해 1부터 9까지 곱셈 수행
    for(j = 1; j <= 9; j++){
      // 결과 출력 (문자열 보간법 사용)
      print('$i * $j = ${i * j}');
    }
  }
}

 

어려웠던 점 

-이중 for문 까진 쉽게 접근했지만 아직 문자열 출력에 있어 어려움을 겪음

 

C언어 코드

#include <stdio.h>

int main() {
    int i;  // 단 수를 저장할 변수
    int j;  // 곱해지는 수를 저장할 변수

    // 2단부터 9단까지 반복
    for(i = 2; i <= 9; i++)
    {
        // 각 단에 대해 1부터 9까지 곱셈 수행
        for(j = 1; j <= 9; j++){
            // 결과 출력 (서식 문자열 사용)
            printf("%d * %d = %d\n", i, j, i * j);
        }
    }

    return 0;
}

 

2.자동차 할인가 계산기 만들기

 

 

-내가 생각한 알고리즘 순서

1.변수 선언 (최고 속력, 가격, 이름, 세일할 횟수)

2.차에 대한 값을 입력받기

3.for문을 사용해 횟수만큼 할인 계산하기

4.출력

 

Dart 코드

// 프로그램의 시작점: main 함수
void main() {
  // Car 객체 생성: maxSpeed, price, name을 각각 전달
  Car bmw = Car(320, 100000, 'BMW');
  Car toyota = Car(250, 70000, 'TOYOTA');
  Car ford = Car(200, 80000, 'FORD');  // 'frod'를 'ford'로 수정

  // bmw 자동차에 3번의 10% 할인 적용
  bmw.saleCar();
  bmw.saleCar();
  bmw.saleCar();

  // 할인된 가격 출력
  print(bmw.price);  // 최종 가격 출력
}

// Car 클래스 정의
class Car {
  int maxSpeed = 0;  // 자동차 최대 속도
  num price = 0;     // 자동차 가격 (num은 int와 double 모두 허용)
  String name = '';  // 자동차 이름
  
  // 생성자(Constructor): 자동차의 속성 초기화
  Car(int maxSpeed, num price, String name) {  // .(점) → ,(쉼표)로 수정
    this.maxSpeed = maxSpeed;
    this.price = price;
    this.name = name;
  }

  // saleCar 메서드: 10% 할인 적용
  int saleCar() {
    price = price * 0.9;  // 가격을 10% 할인
    return price.toInt();  // int로 변환 후 반환
  }
}

 

어려웠던 점 

-클래스 선언 생각을 못 함

-this.ooo -> 기억하기

-생성자를 통해 속성을 부여 = C에서 클래스와 같은 의미인 것 같음

 

C언어 코드

#include <stdio.h>

int main()
{
    int maxSpeed;
    int price;
    char name[50];
    int snumber;
    double salecar;  // 소수점 계산을 위해 double 사용

    // 입력 받기
    scanf("%d, %d, %s, %d", &maxSpeed, &price, name, &snumber);

    // 초기 가격 설정
    salecar = (double)price;  // 명시적으로 형변환

    // snumber 횟수만큼 10% 할인 적용
    for(int i = 0; i < snumber; i++) {
        salecar *= 0.9;  // 실수 곱셈
    }

    // 결과 출력 (소수점 없이 출력)
    printf("%s %.0f\n", name, salecar);

    return 0;
}

 

차이점

  • Dart는 print() 함수 사용, 문자열 안에 변수나 표현식을 ${}로 보간해서 삽입가능
  • C는 printf()함수 사용, %d와 같은 서식 지정자를 사용해 변수를 출력
  • Dart는 함수가 내장되어 추가적인 라이브러리 포함 필요가 없음
  • C는 표준 입출력 라이브러리를 포함해야 printf()함수 사용 가능
  • 둘 다 문장 끝에 ;을 붙여야 하지만, Dart는 스크립트 언어로 좀 더 유연함, C는 컴파일 언어라 문법 오류에 엄격함