Language 51

혼공C : 함수, 도전 실전 예제

오늘은 혼공C Chapter 7 함수 부분의 도전 실전 예제를 풀어보려고 한다. 함수C언어에서의 함수는 프로그램 내에서 특정 기능을 수행하는 코드 블록을 의미한다. C언어에서는 표준으로 제공하는 함수 ( ex : printf, scanf 등 ) 이외에도 자주 사용하는 코드들을 함수로 만들어 필요할 때마다 사용할 수 있다. 이와 같은 함수를 구현하려면 아래와 같은 3가지를 필요로 한다. ● 함수 정의 : 함수를 실제 코드로 만드는 것으로 함수의 기능을 구현한다.● 함수 호출 : 함수를 사용하려면 함수명과 필요한 매개변수를 호출 부분에서 제공해야 한다.● 함수 선언 : 함수를 사용하기 전에 해당 함수가 어떻게 정의되어 있는지 프로그램의 상단에 알리는 함수 선언을 포함해야 한다.  예를 들어 두 정수의 합을 ..

Language/C 2024.06.20

혼공C : 반복문, 소수 출력 프로그램

이번에는 혼공C 6장 반복문의 도전 실전 예제를 풀어보려고 한다. 반복문반복문은 일정 조건을 만족하는 동안 같은 실행문을 반복하는 동작을 수행한다. 따라서 반복문은 조건식, 실행문, 초기식 등으로 구성된다. C언어에서는 주로 while문, for문, do ~ while문 세 가지 종류의 반복문이 사용된다. for 문for문은 초기식, 조건식, 증감식 세 부분으로 구성된다.초기식은 반복문이 시작될 때 한 번 실행되는 부분이며, 조건식은 각 반복이 실행될 때마다 참이면 계속 반복하고, 거짓이면 반복을 멈춘다. 증감식은 각 반복이 끝난 후에 실행되며, 증감식이 실행된 후에는 다시 초반으로 돌아가 조건이 끝날 때까지 수행한다. 아래는 for문을 활용한 간단한 예제이다.#include int main() { ..

Language/C 2024.06.17

혼공C : 선택문, 계산기 프로그램

이번에는 혼공C 5장 선택문의 도전 실전 예제인 계산기 프로그램을 구현해보려 한다. 선택문C언어에서의 선택문은 조건에 따라 실행 문장을 선택해야 할 때 주로 사용된다. 선택문은 대표적으로 if문, if else문 그리고 else문으로 나뉜다. 조금 더 자세하게 들어가면 switch case문으로도 구성된다. if 문if문의 기본 형식에 대해서 알아보자면 if문은 조건식과 실행문으로 구성이 된다. 간단한 작성 예제를 구현해 보자면 아래와 구현될 수 있다.if(a  여기서 'a  그렇다면 위와 같은 fi문처럼 조건이 존재할 때, 조건을 충족하지 못한 경우에 수행되는 실행문을 작성하려면 어떻게 해야 할까? 그런 경우에는 if ~ else문을 사용하면 된다. if ~ else 문if ~ else 문을 사용하여 ..

Language/C 2024.06.17

혼공C : 연산자, 체중관리 프로그램

오늘은 혼공 C Chapter 04 연산자 파트의 도전 실전 예제를 풀어볼 예정이다. 연산자C언어에서의 연산자는 여러 가지 연산자가 존재한다. 대표적으로 산술 연산자, 대입 연산자, 관계 연산자, 비트 연산자,  논리 연산자 등등이 존재한다. 연산자들과 연산자의 우선순위는 아래의 표와 같다. 종류우선순위 연산자 연산 방향 1차 연산자  1( )  [ ]  .  -> → 단항 연산자 2-  ++  --  ~  !  *  &  sizeof  (type) ←  산술 연산자  3 *  /  %      →       4 +  -비트 이동 연산자 5 >관계 연산자 6   >= 동등 연산자 7 ==  !=비트 논리 연산자  8 & 9 ^ 10 |논리 연산자   11 && 12 || 조건 연산자 13 ?: 대입 연산..

Language/C 2024.06.16

Vivado : 4bit 가산기

이번에는 전가산기 4개를 이어 붙인 4bit 가산기를 구현해보려고 한다. 전가산기에 관한 내용은 아래 글을 참고하여 확인할 수 있다. 2024.06.13 - [Language/Verilog] - Vivado : 전가산기(Full-adder) 구현 Vivado : 전가산기(Full-adder) 구현가산기가산기란, 덧셈 연산을 수행하는 논리회로를 의미한다. 가산기는 디지털 회로, 조합 회로의 하나이며, 대부분의 가산기는 2진수의 합을 나타내는 특징을 가진다. 전가산기전가산기는 두jangdong.tistory.com4bit adder4비트 가산기를 구현하기 위해서는 두 개의 입력을 받을 a, b 입력단자와 올림수를 표현할 Cin(carry in) 입력 단자를 필요로 한다.  아래는 Structural 기법을 ..

Language/Verilog 2024.06.16

Vivado : 전가산기(Full-adder) 구현

가산기가산기란, 덧셈 연산을 수행하는 논리회로를 의미한다. 가산기는 디지털 회로, 조합 회로의 하나이며, 대부분의 가산기는 2진수의 합을 나타내는 특징을 가진다. 전가산기전가산기는 두 개의 반가산기와 하나의 OR 게이트로 이루어져 있다. 전가산기는 이진수의 합뿐만 아닌 캐리까지 포함하여 동작을 수행하는 특징을 지닌다. 전가산기의 진리표는 아래의 표와 같다.XYZSumCarry0000000110010100110110010101011100111111 이제 Vivado를 활용하여 전가산기를 구현해 보도록 하자. 구현 방법은 Verilog의 Modeling 기법을 활용하여 구현하려고 한다. Verilog의 모델링 기법은 대표적으로 Structural, Behavioral 그리고 Dataflow 기법이 존재한다...

Language/Verilog 2024.06.13

Vivado : 논리 게이트 구현

※수업 시간에 배운 내용을 주관적으로 정리한 것으로, 순서나 내용이 다를 수 있습니다...!! 이번에는 Vivado를 활용하여 원하는 논리 게이트 동작을 구현할 것이다. 가장 첫번째로 and 게이트를 구현해보려고 한다. and 논리 연산자는 비교하는 두개의 값이 참일 때에만 참의 값을 내보내고, 그 외에는 모두 거짓값을 내보내는 특징을 지닌다. 즉, 하나라도 거짓이면 거짓을 내보내는 동작을 실행한다. 진리표로 표현하자면 아래와 같다.XY결과000010100111  and 게이트 동작을 위한 코드는 아래와 같다.module and_gate(input a, b,output reg q ); always @(a, b)begin case({a, b}) 2'b00:..

Language/Verilog 2024.06.12

리눅스 BSP : 스위치 LED 제어

이번에는 스위치를 활용하여 3개의 LED를 순차적으로 점등시키는 동작을 구현해보려고 한다. 코드를 동작 시키면 LED는 순차적으로 점등된다. 하지만, 스위치를 작동시키면 LED는 방향을 바꾸어 점등을 진행한다. 스위치 관련 동작은 코드상에 맨 밑에 if문에서 동작되며, 스위치가 눌릴 때 마다 mode는 Toggle되어 변경된다. 구현된 코드는 아래와 같다.#include #include int ps[40]; // ps(pin state) : default 0, pin number : 40void Toggle(int pin){ ps[pin] = !ps[pin]; digitalWrite(pin,ps[pin]);}int main(){ wiringPiSetup(); // Pin number use case (w..

Language/Linux 2024.06.11

리눅스 BSP : LED 점등

이번에는 라즈베리파이를 활용하여 3개의 LED를 제어 해보려고 한다. 라즈베리파이의 핀을 제어하기 위해서는 핀의 위치와 역할을 제대로 알아야 한다.아래와 같이 터미널에 'gpio readall'을 명령하면 핀에 대한 정보를 얻을 수 있다.  3개의 LED를 제어하기 위해서 아래와 같이 LED를 제어하는 코드를 구성해보았다. #include #include main(){ wiringPiSetup(); // Pin number use case (wPi) pinMode(8, OUTPUT); // 8,9,7 : OUT 2 : IN pinMode(9, OUTPUT); pinMode(7, OUTPUT); pinMode(2, INPUT); for(int i = 0; i GPIO 핀을 제어하기 위해 'wiring..

Language/Linux 2024.06.11

리눅스 BSP : Raspberry Pi 코드 구현

Raspberry Pi의 상대 경로는 크게 '.' 과 '..' 이렇게 두가지가 있다.'.'는 현재 디렉토리, '..' 는 상위 디렉토리 라고 생각하면 편하다. 현재 디렉토리를 바꾸는 법은 cd 명령어 (change directory)를 활용하면 된다.예를들어 "cd ."을 하면 현재 디렉토리로 변경해주며, pwd는 현재 작업 디렉토리를 보여준다.위 명령어를 실행시키면 아래와 같은 화면이 출력되는 것을 확인할 수 있다. "cd .."을 하면 상위 디렉토리로 변경되는 것을 아래와 같이 확인할 수 있다. 라즈베리파이 내 지니를 사용하여 C언어 코딩을 한 후, 코드 파일 이름을 "Hello"로 임의 설정을 하였다.Hello.c 를 실행시키려면 아래과 같이 터미널에서 실행시켜야한다.터미널에서 "ls -al"명령어..

Language/Linux 2024.06.10
728x90