새소식

기술 습관/개발 잡학지식

[프로그래머스] 타입스크립트로 함께하는 웹 풀 사이클 개발 10-2

  • -

반복문 (Break & Continue)

break문과 continue문

break문의 기본 원리

  • 반복문 while문 내부에서 특정 조건이 되면 break를 만나게 되는데, break문은 while문을 빠져나가게 된다.continue문의 기본 원리
  • 반복문 while문 내부에서 특정 조건이 되면 continue문을 만나게 되는데 이 때 continue 문 이하의 수행은 무시하며 다시 반복의 시작점으로 간다. (skip)

평가 문제

  • 구구단 출력하되 짝수단만 출력하는 프로그램을 작성. 단 continue문을 이용하여 작성

함수

함수의 목적

  • 코드의 가독성 향상
  • 코드의 유지 보수 및 확장 용이함수형 기반 언어의 동작 구조
  • 대부분의 프로그래밍 언어는 함수의 집합체
  • 함수들이 서로 연동하여 유기적으로 동작

함수의 종류

  • 표준 함수 : 언어에서 기본적으로 제공해주는 함수
    • 함수를 라이브러리화 시켜 편리하게 사용할 수 있게 한다. eg. printf
  • 사용자 정의 함수 : 사용자가 자신이 원하는 기능 직접 만들 수 있다.
    • 표준 함수의 기능에 한계가 있다.
    • 정형화된 완구와 가변적인 레고같은 완구의 차이함수의 기본 형태
  • 데이터타입 - 함수가 리턴하는 값의 타입
  • 함수 이름 - 함수 기능과 밀접한 이름으로 만드는 것이 좋다.
  • 인수 목록 - 함수에 필요한 값을 전달 시 사용
  • 함수의 내용 - 중괄호 사이의 영역 안에서 작성
  • 자료형 함수이름 (인수 목록){ 함수 내용 }

void 타입

  • 결과값을 리턴하지 않는 함수평가 문제
  • 사각형의 넓이를 구하는 함수를 작성해보자. (가로X세로) 사용자로부터 두 정수를 입력받아 함수의 전달 인자로 전달하고, 사각형의 넓이를 출력하는 함수 작성
    // 자바로 대체 
    void f (int a, int b) { 
        System.out.println(a*b); 
    }
  • 사용자로부터 두 수를 입력받아 두 수를 비교하여 최대값과 최소값을 구하는 함수를 정의
    void f (int a, int b) {
    	System.out.println(Math.max(a,b)); 
    	System.out.println(Math.min(a,b)); 
    }
  • 커피자판기. 100원 -> 블랙커피 200원 -> 밀크커피. 인자값으로 받은 가격에 따라 다르게 출력되도록 구현
    void f (int price) { 
        if(price ==100){ 
        	System.out.println("블랙커피")); 
        }else if(price == 200) { 
        	System.out.println("밀크커피"); 
        } 
    }

변수의 범위

지역 변수

  • 스택 메모리에 존재하는 시간? - 언제 생성되고 언제 소멸되는가. -> 해당 함수의 시작과 함께 생성되고 종료시 소멸된다.
  • 함수의 매개변수도 스택메모리에 할당되는 지역 변수이다.전역 변수
  • 함수 바깥쪽에 선언된 변수
  • 메모리 공간 중 데이터 영역에서 생성.(스택과 힙 영역이 아님)
  • 전역변수는 프로그램 시작하자마자 메모리상에 올라가서 프로그램이 종료될 때 메모리상에서 소멸된다.static 변수
  • 지역변수처럼 중괄호 영역에서 선언되지만 중괄호를 벗어나도 매모리상에 고정되어 소멸하지 않음.

메모리 생명주기

평가문제

  • 매일의 읽은 책 페이지를 입력해 누적된 읽은 페이지를 출력하시오. (종료하려면 -1 입력, 전역변수로 구현 및 static 변수로도 구현)

배열1

  • 같은 속성을 가진 것들을 나열
  • 요소가 순서대로 여러개 모인 것
  • 배열의 요소는 같은 속성을 지니고있어야 함

배열2

  • 문자열에 이름을 붙여주면 변수로 사용 가능null문자
  • 문자열 끝에는 null문자가 반드시 추가된다.
  • 필요한 이유
    • 사람은 문자와 쓰레기값을 구분하지만, 컴퓨터는 구분이 불가능
    • 컴퓨터가 문자열의 끝을 인식하기 위해 null을 표시.

포인터

  • C언어의 통곡의 벽
  • 메모리는 주소를 통해 메모리에 접근하여 값을 읽고 쓸 수 있다.

  • 문자 타입 1바이트, 정수타입 4바이트, 실수타입 8바이트

포인터의 개념

  • 포인터는 포인터 변수의 줄임말로 메모리의 주소값을 저장하고 있는 변수
  • 보통 주소값을 저장한다는 표현을 반대로 해당 메모리를 가리킨다고도 표현.
  • 어느 특정 메모리 주소를 가리키거나 향하고 있다는 뜻
  • 포인터 사용방법
  • 포인터 변수 선언시 일반 변수명 앞에 * 기호만 붙여주면 된다. 주소값만 저장하겠다는 의미.
  • & 기호를 통해 변수의 주소값을 얻어올 수 있다.
  • 포인터 변수 pB가 변수 b의 주소값을저장하고 가리킨다고도 표현
    #include<stdio.h> 
    int main(void){ 
        int b = 100; 
        int *pB = &b;
        
        printf("b= %d\n",b); 
        printf("&b= %x\n",&b); 
        printf("*pB= %d\n",*pB); 
        printf("pB= %x\n",pb); 
        
        return 0; 
    }

포인터와 배열

  • 배열의 이름은 해당 배열의 첫번째 요소의 주소값을 갖고있다. 즉 첫번째 요소의 주소값을 가리키는 포인터.
  • arr == &arr[0]
  • 배열의 이름은 주소값을 갖는 포인터지만 상수이므로 주소값을 변경할 수 없다.

함수와 포인터

  • 값 복사 방법에는 값에의한 복사, 참조에 의한 복사 두가지가 있다.
    • 값 복사시 메모리를 공유하지 않고 별도의 메모리를 할당받음
    • 배열형의 인자는 포인터형으로 받는다.-> 참조에 의한 복사시 주소값을 복사

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.