language 41

[C언어] 과제 Review - 로또 번호 생성기

과제는 로또 번호 생성기 코드다.1부터 45 사이의 번호 중 중복 없이 6개를 뽑고,선택 정렬로 오름차순 정렬한 뒤 5회 출력하는 구조다.1. 제출 코드 구성파일역할prg_lotto_main.c프로그램 시작점, 전체 반복 흐름 담당lib_lotto_logic.h함수 원형 선언lib_lotto_logic.c로또 번호 생성, 중복 검사, 정렬, 출력 구현 이 과제에서 가장 좋은 부분은 기능을 main에 몰아넣지 않고, 번호 생성/중복 검사/정렬/출력을 함수로 분리했다는 점이다.2. 전체 실행 흐름난수 시드 설정로또 번호 배열 준비5회 반복 중복 없는 번호 6개 생성 오름차순 정렬 결과 출력프로그램 종료 main()은 세부 계산을 직접 하지 않고, 필요한 함수를 순서대로 호출한다.int mai..

language/c 2026.09.28

[C언어] 기말고사 Review - 학생 성적 구조체

기말고사 코드는 학생 성적 처리 프로그램이다.학생 10명의 이름과 C언어 점수를 입력받고,최고 성적 학생의 이름과 전체 평균을 출력한다.1. 제출 코드 구성파일역할student_prg_main.c전체 실행 흐름student_lib.h구조체 정의, 상수, 함수 원형student_lib.c입력, 최고점 탐색, 평균 계산 함수 구현 기말 코드의 핵심은 구조체 배열과 함수 분리다.2. 구조체 설계#define NAME_LEN 16#define STD_NO 10typedef struct{ char sNameZ[NAME_LEN]; double dScore;} stStudent; 멤버의미sNameZ학생 이름 문자열dScoreC언어 점수 stStudent oStudent[STD_NO]처럼 선언하면 학생 10..

language/c 2026.09.21

[C언어] 중간고사 Review - 사칙연산 계산기

중간고사 코드는 사칙연산 계산기다.사용자가 10+20, 7/2처럼 연산식을 입력하면 연산자를 판단해 결과를 출력하고,0/0을 입력하면 프로그램을 종료한다.1. 문제 핵심요구코드에서 필요한 처리반복 입력while 반복종료 조건0/0 입력 검사연산자 판단+, -, *, / 조건 분기나눗셈 예외두 번째 정수가 0인지 검사출력 형식정수 연산과 실수 나눗셈 출력 구분2. 실행 흐름반복 시작 연산식 입력 0/0이면 종료 연산자에 따라 계산 오류가 있으면 오류 메시지 출력 정상 계산이면 결과 출력반복 종료 이 코드에서 iFlag는 "정상 계산이 되었는가"를 표시하는 변수다. 오류가 난 경우에는 결과 출력 단계로 넘어가지 않게 막아준다.3. 핵심 코드 구조while (TRUE){ pri..

language/c 2026.09.14

[C언어] 10. 구조체와 동적할당

배열은 "같은 자료형"만 묶을 수 있었다. 하지만 학생 한 명은 학번(정수), 이름(문자열), 학점(실수)처럼 서로 다른 자료형의 정보로 이뤄진다. 이렇게 여러 자료형을 하나로 묶어 새 자료형을 만드는 것이 구조체다. 여기에 실행 중 메모리를 빌리는 동적 할당까지 더하면, 마침내 연결 리스트 같은 자료구조를 만들 수 있다.1. 구조체 (Structure)구조체(Structure)서로 다른 자료형의 여러 변수를 하나로 묶어 새로운 자료형을 정의하는 문법이다. 관련 있는 데이터를 한 덩어리로 다룰 수 있게 해준다. struct student { int number; // 학번 char name[10]; // 이름 double grade; // 학점};struct 키워드로 정의를 ..

language/c 2026.09.07

[C언어] 09. 포인터 (Pointer)

포인터는 C언어를 어렵게 만드는 동시에 강력하게 만드는 핵심 개념이다. 나도 여기서 한 번 막혔는데, 사실 한 문장으로 요약된다. 포인터는 값이 아니라 "값이 있는 주소"를 담는 변수다.지금까지 scanf에서 &를 붙였던 것, 배열 이름이 곧 주소였던 것이 모두 이 포인터로 이어졌다.1. 포인터란?모든 변수는 메모리 어딘가에 저장되고, 그 위치를 가리키는 주소를 갖는다.포인터(Pointer)다른 변수의 주소를 저장하는 변수다. 일반 변수가 "값"을 담는다면, 포인터는 "그 값이 사는 집 주소"를 담는다. 그래서 어떤 타입을 가리키든 포인터 자체의 크기는 일정하다(주소는 결국 하나의 정수이므로).두 개의 핵심 연산자가 있다.주소 연산자 &: 변수의 주소를 구한다. &i는 변수 i의 주소.간접 참조(역참조)..

language/c 2026.08.31

[Blazor Web App] 14. 로그인 로직에 xUnit 테스트 도입하기 - 테스트 프로젝트부터 첫 단위 테스트까지

지금까지 로그인 기능은 브라우저에서 직접 확인했다.기존 브라우저 구동 테스트 흐름앱 실행 ➡️ 아이디와 비밀번호 입력 ➡️ 로그인 버튼 클릭 ➡️ 메시지 창이 뜨는지 확인이 방법은 화면에서 어떻게 보이는지 확인하기에는 좋았다.하지만 LoginService 안의 로직을 수정할 때마다 정상 로그인이 되는 아이디나 틀린 비밀번호 같은 경우 다시 입력해야 한다. 금번 경우에 대해 일일이 로그인 규칙이 틀어지면 사람이 매번 같은 과정을 빠짐없이 반복하기가 어려울 것 같았다.그래서 이번에는 로그인 화면이 아니라 로그인 서비스 자체가 자동으로 검증하는 테스트 프로젝트를 만들어 보기로 했다.이번 작업의 목표이번에는 처음엔 테스트를 많이 만들지는 않겠다.먼저 아래 흐름이 실제 동작하는지 확인한다.첫 단위 테스트 실행 흐..

language/blazor 2026.08.27

[C언어] 08. 문자열 (String)

[C언어] 08. 문자열 (String)다른 언어에는 문자열 타입이 따로 있지만, C에는 없다. C에서 문자열은 문자(char)들의 배열이다. 이 단순한 사실에서 C 문자열의 모든 특징과 주의점이 나온다는 걸 오늘 정리하며 알았다.1. 문자열과 NULL 문자문자열은 문자들이 죽 늘어선 것이고, 문자 배열(char[])에 저장한다. 그런데 배열만으로는 "어디까지가 문자열인지" 알 수 없다. 그래서 C는 문자열의 끝에 특별한 표식을 둔다. NULL 문자 '\0'이 문자열의 끝을 표시한다모든 C 문자열은 끝에 NULL 문자('\0')가 붙는다. printf나 strlen 같은 함수는 이 '\0'을 만날 때까지를 하나의 문자열로 인식한다. 즉 "abc"는 사실 a, b, c, '\0' 네 글자가 저장된 것이다...

language/c 2026.08.24

[자바프로그래밍] 06. 클래스와 객체

자바는 철저한 객체 지향 언어다. C가 함수 중심으로 절차를 짠다면, 자바는 객체들이 서로 메시지를 주고받으며 프로그램을 구성한다. 오늘은 객체 지향의 핵심인 클래스·객체·생성자·this·static을 정리했다.1. 객체 지향과 클래스·객체세상 모든 것은 고유한 속성(데이터)과 동작(기능)을 가진 객체로 볼 수 있다. 객체 지향은 이를 그대로 코드로 옮겨, 소프트웨어의 재사용성과 현실 모델링을 쉽게 한다. 그 4대 특성이 캡슐화·상속·다형성·추상화다.클래스와 객체클래스(Class): 객체의 설계도. 속성은 필드, 동작은 메서드로 정의한다.객체(Object/Instance): 클래스를 new로 메모리에 구현한 실체. 한 클래스로 여러 객체를 만들 수 있다.public class Circle { int..

language/java 2026.08.21

[Blazor Web App] 13. 로그인 흐름을 비동기로 바꾸기 - Task, async, await 이해하기

지난 작업에서는 LoginService가 구체적인 TestUserRepository가 아니라 IUserRepository 인터페이스에 의존하도록 구조를 바꿨다.현재 로그인 호출 흐름은 다음과 같았다.Home.razor↓LoginService.Login()↓IUserRepository.FindByUserId()↓TestUserRepository지금 사용하는 TestUserRepository는 메모리 안의 List를 검색한다.따라서 검색 결과가 거의 즉시 나오고, 반드시 비동기로 만들 필요는 없다.하지만 나중에 실제 DB나 외부 API를 연결하면 결과를 바로 받을 수 없다.💡 실제 DB 비동기 호출 흐름DB에 사용자 검색 요청 ➡️ DB 서버에서 쿼리 실행 ➡️ 검색 결과 반환이 과정에는 기다리는 시간이 ..

language/blazor 2026.08.20

[C언어] 07. 배열 (Array)

학생 10명의 점수를 다루려고 변수 10개를 따로 선언하면, 합계를 구할 때 10번 더해야 하고 인원이 바뀌면 코드를 전부 고쳐야 한다. 배열은 같은 종류의 데이터 여러 개를 하나의 이름으로 묶어, 이런 번거로움을 없애준다.1. 배열이란?배열(Array)같은 자료형의 데이터 여러 개를 하나의 변수 이름으로 묶어 관리하는 자료구조다. 각 데이터는 0부터 시작하는 인덱스(index)로 구별하며, 크기는 고정되고 메모리의 연속된 공간에 저장된다.int scores[10]; // int형 10개짜리 배열scores[0]부터 scores[9]까지 10개의 요소가 만들어진다. 인덱스가 0부터 시작하므로, 크기가 10인 배열의 마지막 인덱스는 9다. 이걸 놓쳐 scores[10]에 접근하면 배열 범위를 벗어나는 ..

language/c 2026.08.17