작업환경

OS : MAC

Tool : vscode

 

기본 세팅

NodeJS 설치

 

1. Next.Js란 ?

Next.js는 React 기반 프론트엔드 프레임워크로 성능, SEO 및 애플리케이션 개발의 효율적이다.

또한 Routing Server Side Rendering(SSR), Static Site Generator(SSG), Image에 관한 기능이 미리 내장되어 있어 React와 같이 이러한 기능을 개별적으로 설치, 설정할 필요없이 설치 직후부터 사용할 수 있다. 현재도 계속해서 진화를 거듭하고 있다.

버전이 올라갈 때마다 기능이 확장되고 있다.

 

 

 

2. Next.js 프로젝트 설치

설치 명령어

 

밑에는 자바스크립트

npx create-next-app@latest ( @latest <- 최신버전 설치 )
# or
yarn create next-app

 

여기는 타입 스크립트 !

npx create-next-app@latest --typescript
# or
yarn create next-app --typescript

 

- 프로젝트 이름 : my-porject

- 실행명령어 npm run dev

 

 

NextJS 폴더 구조가 다른경우 (pages / styles 없는 경우)

 

 

설치를 하고 나서 모습 ⤵️ 

 

pages : 페이지를 담당하는 컴포넌트(폴더구조로 URL 결정)

public : 어플리케이션에 사용되는 정적 파일

 

 

리액트 개발에 필수인 크롬 개발자 도구를 소개하려 한다. 기본적으로 제공되는 크롬 개발자 도구에 리액트 정보를

확인할 수 없다. 필요한 플러그인을 설치하여 더욱 편리하게 이용해 보려고 한다.

 

 

크롬 웹 스토어에서 React를 검색하여 React Developer Tools을 설치한다.

 

 

설치가 완료되면 React로 구성된 페이지에서 개발자도구를 열면 React 탭이 나타난다. 리액트 컴포넌트들과 Props 값을 쉽게 확인할 수 있다.

 

또한 설정 모양의 아이콘을 클릭하고 Highlight Updates 옵션을 활성화하면 리렌더링 될 때마다 빈도에 따라서

하늘색 -> 초록색 -> 노란색 -> 발간색 순으로 표시가 된다.

 

 

Components

리액트 개발자도구를 열면 구조를 자세히 살펴 볼 수 있고

마우스 오버를 하면 어떤 영역인지 표시된다.

또한 전달받은 Props 도 확인 가능하고 reux , hook state도 확인이 가능하고 바로 수정도 된다.

 

Profiler

녹화해 주는 기능이다.

페이지 내에서 이동을 했을때 얼마나 걸리는지 알 수 있고 어떤 컴포넌트가 재 렌더링 되는지 체크를 해 볼 수 있다.

 

CRA를 이용하여 프로젝트 생성하기

1. 먼저 프로젝트를 생성할 디렉터리에서 다음 명령어를 실행한다.

npm init react-app <프로젝트 이름>
❓ npm이란?

패키지 관리 도구로 정식 명칭은 Node Pacackage Manager이다.
npm은 일종의 거대한 소프트웨어 등록소로, 프로그래머들이 만든 여러 유용한 모듈들을 보유하고 있다. (전세계 게임의 배급과 관리를 담당하는 플랫폼인 steam과 비슷한 개념이라고 생각하면 된다.) 이렇게 npm에 업로드되어 있는 노드 모듈을 패키지라고 하는데, 우리는 필요에 따라 이 패키지들을 다운로드하여 사용할 수 있다.

2. 설치가 완료되면 cmd(터미널)에 아래와 같은 메시지가 표시되며 디렉터리에는 프로젝트명의 폴더가 생성된다.

 

3. 메시지에서 제안하는 바와 같이 생성된 프로젝트로 이동하여 npm start를 실행한다. 그러면 다음과 같은 초기 화면이 나타난다.

 

📁 CRA 디렉터리 구조

create-react-app을 통해 만들어진 폴더는 node_modules, public, src, .gitignore, package-lock.json, package.json, README.md, 그리고 숨겨져 있어서 당장은 보이지 않는 폴더인 .git으로 이루어져 있다.

 

 

node_modules

npm을 이용하여 설치한 모듈들이 저장되는 곳이다.
어떤 모듈들이 설치되었는지는 package.json의 dependencies에서 확인할 수 있다.

 

package.json

이 프로젝트에서 사용된 모듈과 모듈의 버전을 명시하는 파일이다.
node_modules 폴더는 크기가 상당하기 때문에 github과 같은 저장소에 프로젝트를 저장할 때 제외된다. 이렇게 해도 되는 건, package.json 파일에 내가 사용한 모듈들에 대한 정보가 있어 npm install 시 이 모듈들이 자동으로 설치되기 때문이다.

 

package-lock.json

좀 더 명확한 버전을 표시하기 위한 파일이다.
package.json에 명시된 모듈의 버전이 범위로 표기되어 있다면, 이 파일에 표기된 버전은 좀 더 명확하게 명시되어 있다.

 

public

HTML, img 등 정적 파일을 담는 디렉터리이다.

 

.git

commit 등 git 활동 기록이 저장되는 곳이다.
별도로 설치하지 않아도 commit이 가능한 것은 CRA 앱이 git 파일을 기본적으로 제공하기 때문이다. 숨김 파일이기에 숨김 파일 보기를 설정하기 전까지는 눈으로 확인할 수 없다.

 

src

우리가 작업하는 대부분의 코드는 이 디렉터리 내부에 위치하게 된다.
아래에서 좀 더 자세히 살펴보겠다.

 

src 디렉터리

App.js

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>

        <p>안뇽, 일단 테스트 한번 해볼게 이거 재밌네</p>
      </header>
    </div>
  );
}

export default App;

 

이 프로젝트의 메인이 되는 최상위 컴포넌트이다.

 

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
  • ReactDOM.render
    컴포넌트를 페이지에 렌더링하는 함수이다.
    첫 번째 인자로 페이지에 렌더링할 내용(JSX 형태)을, 두 번째 인자로 그 내용을 렌더링할 document 요소를 받는다. 이 코드에서 선택된 root 요소는 public/index.html 파일에서 확인할 수 있다.
  • React.StrictMode
    추후 사라지게 될 오래된 기능을 사용했을 때 경고를 출력하는 역할을 한다.

setupTests.js

추후 테스트 코드를 작성할 때 enzyme 및 어댑터 적용 시 이곳을 활용한다.

 

참조

'Language > React' 카테고리의 다른 글

React app + Typescript + Redux 설치하기  (0) 2024.01.24
[React-Icons]사용하기  (0) 2023.07.13
[React Router] useParams()  (0) 2023.07.08
[React Router] useNavigate  (0) 2023.07.08
[React] 개발자 도구 활용하기  (0) 2023.06.20

준비해야 할 것은 vscode와 tortoiseSVN이다.

아직 vscode를 설치하지 않았다면 아래 포스팅을 참고하길 바란다.

https://artistjay.tistory.com/3

 

[VSCode] Visual Studio Code 설치 및 한글설정 방법

비주얼 스튜디오 코드(영어: Visual Studio Code) 또는 코드(code)]는 마이크로소프트가 마이크로소프트 윈도우, macOS, 리눅스용으로 개발한 소스 코드 편집기이다. 디버깅 지원과 Git 제어, 구문

artistjay.tistory.com

 

 

 

tortoiseSVN 설치하기

1. https://tortoisesvn.net/ 에 접속하여 tortoiseSVN을 다운로드한다.

적당한 버전으로 받으면 되지만, 이번 포스팅에서는 1.14.5 -64-bit 버전으로 다운로드하였다.

 

 

2. 다운로드한 후, 다운로드한 파일을 실행한다.

 

 

3. 아래와 같은 이미지가 나올 때까지 Next 한다.

 

4. command line client tools 좌측 버튼 클릭 > Will be installed on local hard drive 클릭 후 Next ->  install !

 

5. 설치 과정에서 Donate! 버튼이 자꾸 보이는데 굳이 신경 쓸 필요 없다.

6. tortoiseSVN이 설치 완료되었다.

 

 

설치가 다 되었다면

Visual Studio Code의 설정을 바꿔줘야 하는데

 

 

 

 

 

 

VSCode와 연동하기

1. VSCode를 새창으로 실행한다.

2. checkout 테스트를 진행할 적당한 폴더를 생성한 후 연다.

3. Ctrl + Shift + ` 키를 눌러서 터미널을 연다.(또는 터미널 > 새 터미널)

4. 터미널에 svn checkout 'URL'을 입력한다.(필요시에 username과 password를 입력해야 함.)

5. 체크아웃 완료

 

 

여기까지 하면 tortoiseSVN과 VSCode 연동이 끝난다.

(체크아웃을 받았으면 연동 자체는 끝났다고 보는 게 맞다.)

그러나 SVN 커밋, 싱크, 업데이트를 받으려면 checkout 받은 폴더에 들어가서 우클릭 > TortoiseSVN 기능을 사용해야 하는 불편함이 있다.

(사실 쓰다 보면 불편한 건 아니다.)

 

vscode 소스 제어 기능을 활용하여 편리하게 사용하는 법은 아래를 참고하면 된다.

VSCode 소스 제어에서 SVN 활용하기

1. VSCode 마켓플레이스에서 svn 확장 프로그램 설치

 

2. .svn이 포함되어있는 폴더로 새로 열기

ex) C:\workspace\test\.svn이 존재한다면 vscode로 C:\workspace\test를 열면 된다.

 

 

 

 

블로그 참고 : https://artistjay.tistory.com/4

방송대 Android 스튜디오 프로젝트 

1. 안드로이드 프로젝트의 개념

안드로이드 프로젝트(Android Project]

하나의 앱을 개발하기 위해 통합 개발 환경(IDE)내에 구성하는 작업 공간(workspace)

 

 

개발에 필요한 기본 파일과 폴더

안드로이드 프로젝트를 생성하면 오른쪽 그림과 같이 지정된 경로에 다양한 기본 폴더와 파일들이

안드로이드 스튜디오에 의해 자동으로 생성된다.

 

안드로이드 프로젝트를 구성하는 주요 파일 및 폴더

파일 및 폴더명 설명
java/MainAcivity.java 스마트폰 화면을 구성하는 액티비티를 정의하는 파일로 앱 실행 시 처음으로 실행되는 코드를 정의
build/R,java(R 클래스/R.jar) 앱이 동작하면서 참조하는 자원(문자열, 이미지, 소리 등) 들의
ID가 정의된 파일
res/drawable 화면에 표시되는 이미지 파일(png,jpg,gif)이 저장되는 폴더
res/layout/activity_main.xml MainAcivity.java에 대한 레이아웃을 정의하는 XML 파일
res/values/strings.xml 앱이 동작하면서 참조하는 문자열들이 정의된 파일
AndroidManifest.xml 앱에 대한 전반적인 정보를 담고 있는 파일로
앱의 구성요소나 권한 등을 정의

 

 

2. 안드로이드 프로젝트 구조 

 

안드로이드 프로젝트 주요 파일들의 참조 관계

 

 

Activity 개념

  • Activity란 안드로이드 앱에서 하나의 화면을 표현하기 위한 구성요소를 뜻함
  • Activity 내에는 다양한 기능을 수행하기 위한 코드가 작성되는데 실행 부분데이터 부분으로 구분됨
  • 이렇게 코드들을 두 가지 유형으로 분리함으로써 개발 효율을 높일 수 있음
  • Activity 내에 입력하는 JAVA 소스코드가 실행 부분이라면 
  • Strings.xml과 activity_main.xml 내에 정의되는 XML 구조의 코드는 데이터 부분에 해당됨
  • 실행 부분과 데이터 부분의 연결은 R.java가 담당하고 있음
  • R.java는 XML 구조로 정의되는 데이터들을 실행 부분에서 활용할 수 있도록, 변수 형태의 ID와 주소값을 포함함

 

1. Activity_main.xml

  • 하나의 안드로이드 앱은 실행 부분과 데이터 부분으로 분리되어 있음
  • 데이터 부분 중 하나인 화면의 구조를 표현하는 레이아웃은 일반적으로 JAVA코드에 직접 기술하지 않고 XML에서 기술됨

 

프로그램 1.1 activity_main.xml 설명

  • RelativeLayout 이라는 레이아웃 안에 문자열 표시를 위한 View인 TextView를 배치하고 있음
  •  홑화살괄호('<', '>')로 정의된 각 구성요소 중 TextView의 android:text 속성에서는 @string/app_name값이 지정되어 있음
  • @string/app_name 값이 Strings.xml에서 정의된 'app_name'이라는 이름의 문자열 ID로 대체된다는 사실을 의마함
  • 문자열에 대한 정보는 R.java 파일에 저장되며, 실제 문자열의 내용은 strings.xml에 저장되어 있음

 

2. strings.xml

  • 안드로이드 앱이 사용하는 다양한 유형의 리소스 중 하나인 문자열은 관리의 편의성을 위해 XML 파일에 따로 정의됨
  • 문자열이 정의되는 XML 파일은 기본적으로 strings.xml 파일임

 

3. R.java(R.jar/R.class)

  • 안드로이드 앱이 사용하는 자원을 참조하기 위해 사용되는 ID가 정의된 클래스 R을 포함하고 있음
  • JAVA 프로그램이나 XML 파일에서 참조하는 리소스의 ID는 R.java 파일에서 정의됨
  • R 클래스나 내부의 16진수 정의는 개발 툴(AAPT)에 의해 자동적으로 작성됨 
  • 다른 리소스 파일들을 컴파일한 후에 자동으로 리소스 ID를 이 파일에 등록하게 됨
  • AAPT에 의해 자동적으로 정의되고 사용되는 정보이므로 개발자가 임의로 R.java 파일의 내용을 변경해서는 안됨
  • R 클래스의 필드인 R.layout.main 은 Java파일의 setContentView 가 인수로서 사용됨 

 

3.안드로이드 프로젝트의 구성 

1. MainActivity.java

개요

  • 안드로이드 앱의 화면을 구성하거나 사용자와 상호작용하는 Activity 클래스를 상속받아 새로운 액티비티를 생성함
  • 사용자가 발생시키는 이벤트에 반응하여 새로운 액티비티(화면)를 생성하거나 사용자의 요구사항을 만족시키는 동적 작업을 수행

 

2. AndroiManifest.xml

1) 안드로이드 주요 컴포넌트

  • 액티비티(Acitivity) : 하나의 스마트폰 화면을 관리하는 컴포넌트
  • 서비스(Service) : 스마트폰 화면 별도로 백그라운드에서 독립적으로 동작하는 컴포넌트
  • 방송 수신자 : 안드로이드 플랫폼에서 발생하는 다양한 이벤트를 수신하고 처리하는 컴포넌트
  • 컨텐츠 제공자 : 데이터를 체계적으로 관리하고 앱이 활용할 수 있도록 인터페이스를 제공하는 컴포넌트

3. XML 레이아웃의 장점 

1) XML 코드

  • 안드로이드에서는 앱의 레이아웃을 위해 주로 JAVA 코드보다는 XML 코드를 이용함
  • XML은 'eXtensible Markup Language'의 약자로 HTML 과 같은 마크업 언어임

2) XML 레이아웃의 장점

  • 동적인 역할을 담당하는 JAVA 코드와 정적인 화면 영역을 담당하는 XML 코드의 레이아웃으로 구분되어 개발될 수 있음
  • JAVA 코드의 개발자 역할과 XML 코드 기반의 화면 설계의 레이아웃 디자이너의 역할이 분담되어 개발될 수 있음
  • 앱의 실행 코드는 JAVA를 통해 프로그래밍되고, 앱의 각 컴포넌트들(이미지,버튼 등)은 XML로 작성되므로 개발 난이도를 낮출 수 있음
  • 레이아웃 코드가 직관적이며 수정 및 관리가 매우 용이함
  • 역할의 분할은 상황과 조건에 따라 레이아웃을 변경하거나 텍스트를 쉽게 변경할 수 있음

 

4. 안드로이드 앱의 동작 원리

1) 앱의 실행 과정

실행하기 위한 과정

  • 안드로이드 앱은 JAVA 언어를 이용하여 작성됨
  • 개발자가 작성한 JAVA코드는 JAVA 컴파일러에 의해 JAVA 바이트 코드로 컴파일됨
  • JAVA 환경에서는 JAVA 바이트 코드를 JAVA 가상머신(virtual machine)을 통해 실행하지만 안드로이드는 ART/Dalvik이라고 하는 별도의 가상머신에서 JAVA 바이트 코드를 실행함

 

 

4. 안드로이드 앱의 동작 원리

1. 앱의 실행 과정

안드로이드 프로젝트 실행 과정

  • 배포 및 설치를 위한 .apk 파일의 생성은 AAPT(Android Asset Packaging Tool)라는 개발도구를 이용하고, 이 과정을  패키징(packaging)이라고 함 
  • 패키징 과정이 끝나 만들어진 .apk 파일을 플랫폼에 설치하면 런타임에서 실행 될 수 있음

2. 앱의 배포 과정

배포하는 과정

  • 안드로이드 앱은 .apk 파일 확장자로 패키징되어 배포됨
  • 안드로이드 프로젝트에 대한 코드 컴파일 작업이 수행되면, JAVA 프로그램의 .class 파일이 생성되고, .class 파일을 이용하여 안드로이드 실행환경(Dalvik/ART)에 적합한 ,dex 파일이 생성됨
  • 이후 서명 Key를 이용하여 .apk 파일에 서명 작업을 하여 .apk 파일이 타인에 의해서 위변조되는 것을 방지함
  • 서명 Key는 디버그 목적으로 앱을 빌드 할 때 사용하는 Debug Key와 배포 목적으로 빌드 할 때 사용하는 Release Key로 구분됨
  • 이러한 서명 작업에서 사용한 키 값은 안드로이드 앱의 업데이트에서 개발자의 식별에 사용됨 
  • 마지막으로 다양한 앱을 공유하거나 거래할 수 있는 마켓인 Google Play에 업로드를 수행함

 

 

정리하기

  • XML : XML 은 마크업 언어의 일종으로, 문서를 사람과 기계 모두가 읽을 수 있는 형식으로 부호화하는 규칙의 집합을 정의함
  • 레이아웃 : 안드로이드 화면출력 및 화면배치를 의미하며, 출력의 양식이나 양식의 설계 등을 모두 레이아웃이라는 말로 사용함
  • 런타임 : 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 말함
  • Dalvik : JIT(Justln Time)방식의 컴파일 환경을 기반으로 안드로이드 스마트폰의 가상머신 
  • ART(Android RunTime) : 앱을 설치하기 전에 컴파일을 끝내고 앱을 실행하는 안드로이드 스마트폰의 가상머신

 

 

개요

 
• IP 주소를 네트워크 주소와 호스트 주소로 구분하는 방법
 
• 하나의 네트워크에서 몇 개의 호스트 주소를 가질 수 있느냐에 따라 클래스를 나눌 수 있다.

클래스 도입 이전

 
• 원래 예전에는 IPv4 주소는 단순한 8비트의 네트워크 영역과 해등 네트워크 내의 호스트 주소를 가리키는 영역으로 단순하게 구분되어 있었다
 
이 당시에는 대규모 네트워크가 적었기에(Ex : ARPANET) 나눌 필요도 없었다.

클래스 도입

 
• 시대가 바뀌면서 대규모 네트워크가 늘어나는 상황에서 IP 주소 클래스가 등장하게 되었다
 
• 한정된 자원인 IP주소를 체계적으로 나눠 쓸 필요가 있다.
 

Class A

• 하나의 네트워크가 가질 수 있는 호스트 수가 가장 많은 클래스 
 
• IP 주소를 바이너리로 표시할 때 맨 앞자리수가 항상 0인 경우
0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
 
 
 
• 0.0.0.0 ~ 127.255.255.255까지 를 A클래스라 한다.
 
• 네트워크 주소는 1.0.0.0과 126.0.0.0까지로 규정되어 있다.
 
• 호스트 갯수는 2^24 - 2
 

Class B

• IP주소를 바이너리로 표시할 때 맨 앞자리수가 항상 10인 경우 
10xx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
 
 
• 128.0.0.0 ~ 191.255.255.255까지를 B 클래스라 한다.
 
• 네트워크 범위는 10xx.xxxx.xxxx.xxxx 에서 x가 가질 수 있는 경우의 수이다 (2 ^ 14) 개
 
• 호스트 범위는 뒤의 xxxx.xxxx.xxxx.xxxx 에서 x가 가질 수 있는 경우의 수이다.(2 ^ 16) -2개
 
=> 네트워크 및 브로드캐스트 주소사용으로 2개를 호스트 주소에서 제외해야 한다.
 

class C

• IP 주소를 바이너리로 표시할 때 맨 앞자리 수가 항상 110으로 시작한다
110x xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
 
• 192.0.0.0 ~ 223.255.255.255까지를 C클래스라 한다
 
• 네트워크 범위는 110x.xxxx.xxxx.xxxx.xxxx.xxxx 에서 x가 가질 수 있는 경의 수이다(2 ^ 21)개
 
• 호스트 범위는 뒤의 xxxx.xxxx 에서 x가 가질 수 있는 경의 수이다.(2 ^ 8) -2개
=> 네트워크 및 브로드캐스트 주소 사용으로 2개를 호스트 주소에서 제외해야 한다.
 

 

 

 

 

참조 : https://catsbi.oopy.io/f565e8c1-34c6-4b61-be61-e1ab04fc51fb

 

 

 

 

 
방송대 Python

 

학습목차

1️⃣ 제어구조의 이해

2️⃣ 순차구조

 

1. 제어구조의 이해

1)제품 생산 공정

우리의 일상생활 우리의 사회에 벌어지는 여러가지 일들을 보면 순서를 가지고 처리되는 일과

상황에 따라서 조건에 따라서 어떻게하고  다르게 하고 등등 이런 전체를 반복하는 이러한 형태에 구조를 가지고 있다 

이러한 인간의 일상에서 만들어지는 구조는 프로그래밍 언어에서도 동일하게 가지고 있다.

 

2) 구조적 프로그래밍 패러다임

👉 절차적 프로그래밍 패러다임의 하위 개념

👉 goto 문을 사용하지 않고 프로그램을 3가지 제어 구조만으로 구성하는 프로그래밍 패러다임

-> 순차(sequence) 구조

-> 선택(selection) 구조

-> 반복(iteration) 구조

👉 프로그램 실행 흐름이 간결하고 작은 규모로 조직화하기 쉬움

 

3) 순차 구조 ( 순서대로 뭔가가 진행된다는 의미 )

👉 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조

-> 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조

 

 

👉 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 결정하는 구조

-> 실행 여부는 조건에 따라 결정된다.

 

4) 반복 구조

👉 특정 영역의 명령문을 여러 번 재실행하는 구조 

-> 반복 횟수를 조건에 따라 결정

 

2. 순차 구조

1) 순차 구조

👉 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조

-> 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조 

-> 일단 첫 단계를 시작하면 마지막 단계까지 수행

 

 

2) 삼각형 출력하기

👉 다음과 같이 삼각형 모양으로 *을 출력하는 프로그램을 작성하시오 

print("    *")
print("   ***")
print("  *****")
print(" *******")

""" 출력
    *
   ***
  *****
 *******
"""

🤔생각할 점
어떤 처리를 먼저 하고 나중에 해야 하는지

 

3) 원뿔 계산 프로그램 개선

👉 사용자로부터 반지름과 높이를 입력받고 계산

 

4) 사용자 입력

👉 input : 사용자로부터 데이터를 입력받는 함수

-> 입력 데이터를 문자 데이터 타입으로 반환

-> 함수의 파라미터는 입력 안내문의 목적으로 사용

#반지름, 높이 값 할당
rad = input("반지름의 값을 입력하세요 : ")
#높이 사용자 입력
hei = input("높이 값을 입력하세요 : ")
#부피 출력
vol = 1/3 * 3.14 * rad ** 2 * hei
print(vol)

# 입력 대기 후 입력값 반환

 

5) 프로그래밍 에러

👉 설계 미숙, 결함 또는 문법 오류로 프로그램이 의도한 대로 결과를 생성하지 못하는 문제

-> 구문 오류(syntax error) : 문법 체계에 적합하지 않는 명령문 입력 시 발생

-> 실행 오류(runtime error) : 논리적으로 실행 불가능한 명령문 작성 시 발생

-> 의미 오류(semantic error) : 의미적으로 잘못 해석되는 명령문 작성 시 발생

 

6) 데이터 타입 변환

input type : 사용자가 입력하는 모든 데이터를 문자로 변환 하는 input 함수

예) input 함수를 통해 정수 30 입력 -> rad에 들어가는 변수값은(숫자가 아닌) 문자 형태 30  ->

ㄴ 정수 30으로 변환해주는 무언가가 필요하다.

 

👉 데이터 타입을 다른 타입으로 전환

-> 문자열 타입으로 변환 : str 함수

-> 정수 타입으로 변환 : int 함수

-> 소수 타입으로 변환 : float 함수

#rad = input("반지름을 입력하세요")
#rad = int(rad)

rad = int(input("반지름을 입력하세요"))

 

원뿔 계산 프로그램 개선

#반지름, 높이 값 할당
rad = int(input("반지름의 값을 입력하세요 : "))
hei = int(input("높이 값을 입력하세요 : "))
#부피 출력
print("부피의 값은", 1 / 3 * 3.14 * rad ** 2 * hei, "입니다." , sep="" )
#겉넓이 출력
print("겉넓이의 값은", 3.14 * rad ** 2 + 3.14 * rad * hei, "입니다.", sep="")
"""
# 출력
반지름의 값을 입력하세요 : 20
높이 값을 입력하세요 : 30
부피의 값은12559.999999999998입니다.
겉넓이의 값은3140.0입니다.
"""
기억할 점
1. 함수를 중첩해서 사용
2. 여러 개의 파라미터를 받을 수 있는  print 함수
3. sep옵션으로 공백 조절

 

7) print 함수의 확장

👉 여러 개의 데이터를 단일 함수로 출력 가능

-> 콤마(,)로 파라미터를 구분하여 입력

-> 데이터 사이에 공백(기본값)이 자동으로 추가

-> sep 옵션을 변경하여 공백 변경 가능

 

 

 

방송때 Python

 

학습목차

1️⃣ 프로그래밍 기초

2️⃣ 데이터 저장

3️⃣ 산술 연산자

 

01. 프로그래밍 기초

1) 숫자와 문자

🤔 : 데이터를 처리하기 위해 필요한 질문 " 처리해야 할 데이터는 무엇인가 ? " 

 

👉 숫자 

-> 정수(integer) : 소수점이 없는 숫자

-> 실수(floating point) : 소수점이 포함되는 숫자

 

👉 문자

-> 유니코드(unicode) 기반 문자 또는 문자열

      ㄴ 전 세계의 모든 문자들을 표현하기 위해 가변 길이의 4byte로 문자를

          표현하는 코드 체계를 유니코드라고 함 

-> 인용 부호 " 또는 '를 사용하여 표현 

      ㄴ문자가 하나이든, 여러개 이든 파이썬에서는 모두가 문자 타입

 

2) 기본연산자와 표현식

👉 피연산자와 연산자를 이용한 표현식은 파이썬 인터픠터에 의해 자동 계산

파이썬 인터프리터에 의해 자동 계산

연산자 기능
+ 더하기
- 빼기
* 곱하기
/ 나누기
** 지수 (거듭제곱)

 

3) 함수(function)

👉 특정 작업을 수행하는 코드의 집합(명령문의 집합) 으로 함수의 이름만으로 실행할 수 있는 단위

-> print 함수 : 화면에 데이터를 출력하는 작업

 

👉 함수의 기본 구조

print("Hello World!")
함수 이름 / 입력값(파라미터)

4) 함수의 실행

 

5) 들여쓰기

👉 파이썬은 들여쓰기에 의존적 언어

-> 타 프로그래밍 언어에서는 가독성 향상 목적

-> 파이썬에서 코드의 논리적 집합인 블록을 표현 

👉 들여쓰기는 스페이스 4칸을 권장(PEP 8)

👉 블록 중첩 시 추가적인 4칸 들여쓰기 삽입

print("Hello World!")
print("Python is fun")

 

6) 문서화 

👉 주석(comment) 사용

-> 가독성 증대로 개발 속도 향상 , 유지보수 용이

👉 주석의 종류

-> 한 라인 주석에 #을 사용

-> 여러 라인 주석에 """ 또는 " 3개를 연달아 사용

# 이럴 때 필요한 것이 주석
print((4.5 * 2 + 4.0 * 3 ) / ( 130 - 66 ))

# 예시
""" 성적 계산 방식 sum(성적 * 학점) / 총학점 """
print((4.5 * 2 + 4.0 * 3 ) / ( 130 - 66 ))

 

 

 

4강_실습시작

웹브라우저만 있으면 Google Colab을 이용해 언제 어디서든 파이썬 프로그래밍 가능 ( 브라우저는 크롬 사용)

 

https://github.com/jaehwachung

 

jaehwachung - Overview

jaehwachung has 3 repositories available. Follow their code on GitHub.

github.com

 

# 4강 1절

# 01)
"Hello World ! " 
# 출력 : 'Hello world ! '

# 02)
12 ** 10 * 5
# 출력 : 5120

# 03)
"computer" + "science"
# 출력 : 'computerscience'

# 04)
print( 2 * 7 )
# 출력 : 14


# 05)
print("Hello World!")
print("Python is Fun")
# 출력 : Hello World! Python is Fun 

# 06)
print((4.5 * 2 + 4.0 * 3) / 2 )
# 출력 : 10.5

 

02. 데이터 저장

1) 원뿔의 부피 & 겉넓이 계산 프로그램

👉 원뿔의 부피&겉넓이 계산 알고리즘

 

 

2) 변수

👉 명령어 패러다임 언어의 특징

-> 처리할 데이터와 처리된 결과를 임시적 저장

-> 변수의 값을 변경하는 할당연산자(=)를 이요

 

3) 식별자

어떤 저장 공간을 어떤 명칭으로 부르기 위한 목적

👉 프로그램 내부에 정의된 객체(변수, 함수 등)의 이름

-> 문자, 숫자, 밑줄로 구성

-> 문자 또는 밑줄로만 시작 가능

-> 예약어와 동일할 수 없음

-> 길이 제한이 없음

 

# 변수로 사용불가
volume, Surface, _50, x , y, _name
$d$ , 1-a 2023y , else, class, r+h , 77#R

 

4) 예약어

👉 파이썬 인터프리터에 의해 이미 문법적인 용도로 사용되어 식별자로 사용이 불가능한 단어

False await else import pass None
break except in True class finally
is return and continue for lambda
try as def global not with
async elif if yield raise or

 

4) 변수의 사용 

변수의 이름만 호출하면 된다.

#반지름, 높이 값 할당
red = 20
hei = 30

#부피 출력
print( 1/ 3 * 3.14 * rad * rad * hei )

#겉넓이 출력
print(3.14 * rad * rad + 3.14 * rad * hei)


# lvalue 값 할당
# rvalue 값 호출

 

⭐️실습 목표 

변수 사용하기 

# 4강 2절 원뿔의 부피와 겉넓이 계산하는 프로그램

#반지름, 높이 값 할당
rad = 20
hei = 30

# 부피출력
print(1 /3 * 3.14 * rad ** 2 * hei)
# 겉넓이 출력
print(3.14 * rad ** 2 + 3.14 * rad * hei) 
# ㄴ 출력 : 12559.9999999999998 / 3140.0

 

3. 산술연산자

1) 산술연산자의 정의

👉 피연산자(operand)에 대해 지정된 산술 연산을 지시하는 기호 

-> 단항 연산자(unary operator)

-> 이항 연산자(binary operator)

2) 특수 산술연산자

👉 프로그래밍 언어에서만 사용되는 연산 또는 부호 

-> 정수 나눗셈 연산자(//)

-> 모듈로 연산자(%)

 

3) 연산자 우선순위

👉 표현식에 사용된 여러 연산자의 연산 순서를 결정

① 괄호 내부의 수식

② 지수(**) 연산자

③ 곱셈, 실수 나눗셈, 정수 나눗셈, 나머지 연산자

- 왼쪽에서 오른쪽 순서로 적용

④ 덧셈 뺄셈 연산자

- 왼쪽에서 오른쪽 순서로 적용

⑤ 할당 연산자

# avg = 1 // 3 * 3.14 * 20 ** 2 * (30 + 20 % 10)

 

4) 파이썬 내장 함수

항상 사용되는 함수들을 파이썬 인터프리터에서 기본적으로 내장해놓고 제공

ㄴ print는 대표적인 내장 함수 

 

👉 파이썬 인터프리터에서 기본적으로 지원하는 함수

-> 별도의 모듈이나 패키지 없이 사용 가능

# 대표적인 내장함수
max(2, 3, 4)
min(2, 3, 4)
round(3.141592)
round(3.4)
abs(-3)
pow(2, 3)

 

+ Recent posts